Вы находитесь на странице: 1из 13

1.

INSTRUCCIONES ARITMÉTICAS

Este tipo de instrucciones se ejecutan en la ALU y la mayoría alteran las


banderas o indicadores. Las banderas se indican a continuación:

AF: Acarreo auxiliar (indica un llevo o préstamo del tercero al cuarto bit)
CF: Acarreo final (indica un llevo o préstamo al final de todos los bits)
OF: Sobreflujo o desbordamiento (indica que faltan bits de la información –
error de signo)
SF: Signo (indica el signo de la respuesta, cuando los datos empiezan con un 0
son positivos y si inician con un 1 son negativos)
OZF: Cero (indica si el resultado de una operación es 0)
PF: Paridad (indica si el número de unos de los 8 bits menos significativos de la
respuesta es par)

a. ADD (Suma)

Formato: ADD destino,fuente


Operación: destino destino + fuente

La fuente no se altera. Debe revisarse el estado de las seis banderas de la


ALU

Pueden ser fuente: Datos inmediatos, registros internos de la CPU sean


estos de 8 o 16 bits y localidades de memoria, en direccionamiento
directo y de registro indirecto.

Pueden ser destino: Registros internos de la CPU sean estos de 8 o 16


bits menos los de segmento y localidades de memoria, en
direccionamiento directo y de registro indirecto.

Tiene básicamente las mismas combinaciones del MOV.

Ejercicio:

MOV AX,1AF3 AX=1AF3


MOV DI,0439 DI=0439
MOV CX,D678 CX=D678
MOV [1300],DI [1300]=39 y [1301]=04
MOV [DI],AX [0439]=F3 y [043A]=1A
ADD CH,D9 CX=AF78 y las banderas detalladas abajo
ADD AX,E607 AX=00FA y las banderas detalladas abajo
ADD CL,AH CX=AF78 y las banderas detalladas abajo
ADD CX,DI CX=B3B1 y las banderas detalladas abajo
ADD AL,[1300] AX=0033 y las banderas detalladas abajo
ADD CX,[DI] CX=CEA4 y las banderas detalladas abajo
ADD [1301],CH [1301]=D2 y las banderas detalladas abajo
ADD [DI],AX [0439]=26 y [043A]=1B y las banderas abajo
HLT
1) CH,D9

CH D6 AF=0 (no se lleva en la primera suma)


+ D9 + D9 CF=1 (se lleva al final)
OF=0 (no hay error de signo - + - = -)
CH AF SF=1 (la respuesta es negativa A)
ZF=0 (la respuesta no es 0)
PF=1 (el número de bits 1 es par en AF)

2) AX,E607

AX 1AF3 AF=0 (no se lleva en la primera suma)


+ E607 + E607 CF=1 (se lleva al final)
OF=0 (no hay error de signo + + - = +)
AX 00FA SF=0 (la respuesta es positiva 0)
ZF=0 (la respuesta no es 0)
PF=1 (el número de bits 1 es par en FA)

3) CL,AH

CL 78 AF=0 (no se lleva en la primera suma)


+ AH + 00 CF=0 (no se lleva al final)
OF=0 (no hay error de signo + + + = +)
CL 78 SF=0 (la respuesta es positiva 7)
ZF=0 (la respuesta no es 0)
PF=1 (el número de bits 1 es par en 78)

4) CX,DI

CX AF78 AF=0 (no se lleva en la primera suma)


+ DI + 0439 CF=0 (no se lleva al final)
OF=0 (no hay error de signo - + + = -)
CX B3B1 SF=1 (la respuesta es negativa B)
ZF=0 (la respuesta no es 0)
PF=1 (el número de bits 1 es par en B1)

5) AL,[1300]

AL FA AF=1 (se lleva en la primera suma)


+ [1003] + 39 CF=1 (se lleva al final)
OF=0 (no hay error de signo - + + = +)
AL 33 SF=1 (la respuesta es positiva 3)
ZF=0 (la respuesta no es 0)
PF=1 (el número de bits 1 es par en 33)

6) CX,[DI]

CX B3B1 AF=0 (no se lleva en la primera suma)


+ [DI] + 1AF3 CF=0 (no se lleva al final)
OF=0 (no hay error de signo - + + = -)
CX CEA4 SF=0 (la respuesta es negativa C)
ZF=0 (la respuesta no es 0)
PF=0 (el número de bits 1 impar en A4)

7) [1301],CH

[1301] 04 AF=1 (se lleva en la primera suma)


+ CH + CE CF=0 (no se lleva al final)
OF=0 (no hay error de signo + + - = -)
[1301] D2 SF=1 (la respuesta es negativa D)
ZF=0 (la respuesta no es 0)
PF=1 (el número de bits 1 es par en D2)

8) [DI],AX

[DI] 1AF3 AF=0 (no se lleva en la primera suma)


+ AX + 0033 CF=0 (no se lleva al final)
OF=0 (no hay error de signo + + + = +)
[DI] 1B26 SF=0 (la respuesta es positiva 1)
ZF=0 (la respuesta no es 0)
PF=0 (el número de bits 1 impar en 26)

b. INC (Incremento)

Formato: INC destino


Operación: destino destino + 1

Debe revisarse el estado de cinco banderas de la ALU, ya que no se


altera la CF.

Pueden ser destino: Registros internos de la CPU sean estos de 8 o 16


bits menos los de segmento.

Ejercicio:

MOV BP,DC45 BP=DC45, CF=0


MOV DX,FF31 DX=FF31, CF=0
INC DH DX=0031, CF=0 y las banderas detalladas abajo
INC BP BP=DC46, CF=0 y las banderas detalladas abajo
INC DX DX=0032, CF=0 y las banderas detalladas abajo
HLT

1) DH

DH FF AF=1 (se lleva en la primera suma)


+ 1 + 1 PF=1 (el número de bits 1 es par en 00)
OF=0 (no hay error de signo - + + = +)
CH 00 SF=0 (la respuesta es positiva 0)
ZF=1 (la respuesta es 0)

2) BP

BP DC45 AF=0 (no se lleva en la primera suma)


+ 1 + 1 PF=0 (el número de bits 1 impar en 46)
OF=0 (no hay error de signo - + + = -)
BP DC46 SF=1 (la respuesta es negativa D)
ZF=0 (la respuesta no es 0)

3) DX

DX 0031 AF=0 (no se lleva en la primera suma)


+ 1 + 1 PF=0 (el número de bits 1impar en 32)
OF=0 (no hay error de signo + + + = +)
DX 0032 SF=0 (la respuesta es positiva 0)
ZF=0 (la respuesta no es 0)

c. SUB (Resta)

Formato: SUB destino,fuente


Operación: destino destino - fuente

La fuente no se altera. Debe revisarse el estado de las seis banderas de la


ALU

Pueden ser fuente: Datos inmediatos, registros internos de la CPU sean


estos de 8 o 16 bits menos los de segmento y localidades de memoria, en
direccionamiento directo y de registro indirecto.

Pueden ser destino: Registros internos de la CPU sean estos de 8 o 16


bits menos los de segmento y localidades de memoria, en
direccionamiento directo y de registro indirecto.

Tiene básicamente las mismas combinaciones del MOV.

Ejercicio:

MOV CX,1DA9 CX=1DA9


MOV BX,0543 BX=0543
MOV AX,A678 AX=A678
MOV [2100],CX [2100]=A9 y [2101]=1D
MOV [BXI],AX [0543]=78 y [0544]=A6
SUB AH,D5 AX=D178 y las banderas detalladas abajo
SUB CX,901A CX=8D8F y las banderas detalladas abajo
SUB AL,CL AX=D1E9 y las banderas detalladas abajo
SUB AX,BX AX=CCA6 y las banderas detalladas abajo
SUB CH,[2100] CX=E48F y las banderas detalladas abajo
SUB AX,[BX]AX=262E y las banderas detalladas abajo
ADD [2101],AL [2101]=EF y las banderas detalladas abajo
ADD [BX],CX [0543]=E9 y [0544]=C1 y las banderas abajo
HLT

1) AH,D5

AH A6 AF=0 (no se presta en la primera resta)


- D5 - D5 CF=1 (se presta al final)
OF=0 (no hay error de signo - - - = -)
AH D1 SF=1 (la respuesta es negativa D)
ZF=0 (la respuesta no es 0)
PF=1 (el número de bits 1 es par en D1)

2) CX,901A

CX 1DA9 AF=1 (se presta en la primera resta)


- 901A - 901A CF=1 (se presta al final)
OF=1 (hay error de signo + - - = -)
AX 8D8F SF=1 (la respuesta es negativa 8)
ZF=0 (la respuesta no es 0)
PF=0 (el número de bits 1 impar en 8F)

3) AL,CL

AL 78 AF=1 (se presta en la primera resta)


- CL - 8F CF=0 (se presta al final)
OF=1 (hay error de signo + - - = -)
AL E9 SF=1 (la respuesta es negativa E)
ZF=0 (la respuesta no es 0)
PF=0 (el número de bits 1 impar en E9)

4) AX,BX

AX D1E9 AF=0 (no se presta en la primera resta)


- BX - 0543 CF=0 (no se presta al final)
OF=0 (no hay error de signo - - + = -)
AX CCA6 SF=1 (la respuesta es negativa C)
ZF=0 (la respuesta no es 0)
PF=1 (el número de bits 1 es par en A6)

5) CH,[2100]

CH 8D AF=0 (no se presta en la primera resta)


- [2100] - A9 CF=1 (se presta al final)
OF=0 (no hay error de signo - - - = -)
CH E4 SF=1 (la respuesta es negativa E)
ZF=0 (la respuesta no es 0)
PF=1 (el número de bits 1 es par en E4)

6) AX,[BX]
AX CCA6 AF=1 (se presta en la primera resta)
- [BX] - A678 CF=0 (no se presta al final)
OF=0 (no hay error de signo - - - = +)
AX 262E SF=0 (la respuesta es positiva 2)
ZF=0 (la respuesta no es 0)
PF=1 (el número de bits 1 es par en 2E)

7) [2101],AL

[2101] 1D AF=1 (se presta en la primera resta)


- AL - 2E CF=1 (se presta al final)
OF=0 (no hay error de signo + - + = -)
[2101] EF SF=1 (la respuesta es negativa E)
ZF=0 (la respuesta no es 0)
PF=0 (el número de bits 1 impar en EF)

8) [BX],CX

[BX] A678 AF=1 ( se presta en la primera resta)


- CX - E48F CF=1 (se presta al final)
OF=0 (no hay error de signo - - - = -)
[BX] C1E9 SF=1 (la respuesta es negativa C)
ZF=0 (la respuesta no es 0)
PF=0 (el número de bits 1 impar en E9)

d. DEC (Decremento)

Formato: DEC destino


Operación: destino destino - 1

Debe revisarse el estado de cinco banderas de la ALU, ya que no se


altera la CF.

Pueden ser destino: Registros internos de la CPU sean estos de 8 o 16


bits menos los de segmento.

Ejercicio:

MOV DX,0018 DX=0018, CF=0


MOV DI,A3F4 DI=A3F4, CF=0
DEC DH DX=FF18, CF=0 y las banderas detalladas abajo
DEC DI DI=A3F3, CF=0 y las banderas detalladas abajo
DEC DX DX=FF17, CF=0 y las banderas detalladas abajo
HLT

1) DH

DH 00 AF=1 (se presta en la primera resta)


- 1 - 1 PF=1 (el número de bits 1 es par en FF)
OF=0 (no hay error de signo + - + = -)
DH FF SF=0 (la respuesta es negativa F)
ZF=0 (la respuesta no es 0)

2) DI

DI A3F4 AF=0 (no se presta en la primera resta)


- 1 - 1 PF=1 (el número de bits 1 es par en F3)
OF=0 (no hay error de signo - - + = -)
DI A3F3 SF=1 (la respuesta es negativa A)
ZF=0 (la respuesta no es 0)

3) DX

DX FF18 AF=0 (no se presta en la primera esta)


- 1 - 1 PF=1 (el número de bits 1 es par en 17)
OF=0 (no hay error de signo - - + = -)
DX FF17 SF=1 (la respuesta es negativa F)
ZF=0 (la respuesta no es 0)

e. CMP (Comparación)

Formato: CMP fuente1,fuente2


Operación: fuente1 – fuente2

Las fuentes no se alteran. Debe revisarse el estado de las seis banderas de


la ALU.

Pueden ser fuente: Datos inmediatos, registros internos de la CPU sean


estos de 8 o 16 bits menos los de segmento y localidades de memoria, en
direccionamiento directo y de registro indirecto.

Tiene básicamente las mismas combinaciones de la SUB y es utilizada


para tomar decisiones en los programas.

La simbología que suele emplearse en los diagramas de flujo para ésta


instrucción es la siguiente:

Ejercicio:

MOV DX,5C39 DX=5C39


MOV [1300],DX [1300]=39 y [1301]=5C
CMP DH,E5 DX=5C39 y las banderas detalladas abajo
CMP [1300],DL [1300]=39 y las banderas detalladas abajo
HLT

1) DH,E5

DH 5C AF=0 (no se presta en la primera resta)


- E5 - E5 CF=1 (se presta al final)
OF=0 (no hay error de signo + - - = +)
77 SF=0 (la respuesta es positiva 7)
ZF=0 (la respuesta no es 0)
PF=1 (el número de bits 1 es par en 77)

2) [1300],DL

[1300] 39 AF=0 (no se presta en la primera resta)


- DL - 39 CF=0 (no se presta al final)
OF=0 (hay error de signo + - + = +)
00 SF=0 (la respuesta es positiva 0)
ZF=1 (la respuesta es 0)
PF=1 (el número de bits 1 es par en 00)

f. MUL (Multiplicación aritmética)

Formato: MUL fuente

Si la fuente es de 8 bits:
Operación: AX AL * fuente

Si la fuente es de 16 bits:
Operación: DXAX AX * fuente

Pueden ser fuente: Registros internos de la CPU sean estos de 8 o 16 bits


menos los de segmento.

En esta instrucción sólo son predecibles el valor de CF y OF, las mismas


que alteran según la fuente de la siguiente manera:

Si la fuente es de 8 bits: CF = OF = 1 si el registro AH es diferente de 0.


Si la fuente es de 16 bits es de 16 bits: CF = OF = 1 si el registro DX es
diferente de 0.

Ejercicio:

MOV AX,3FA5 AX=3FA5


MOV CX,D349 CX=D349
MOV SI,81B6 SI=81B6
MUL CL AX=2F0D y las banderas detalladas abajo
MUL AL AX=00A9 y las banderas detalladas abajo
MUL CX AX=7B31, DX=008B y las banderas abajo
MUL SI AX=45D6, DX=3E6B y las banderas abajo
HLT

1) CL

CL 49 CF=1 (AH es diferente de 00)


x AL x A5 OF=1 (AH es diferente de 00)

AX 2F0D

2) AL

AL OD OF=0 (AH es igual a 00)


x AL x OD CF=0 (AH es igual a 00)

AX 00A9

3) CX

CX D349 CF=1 (DX es diferente de 0000)


x AX x 00A9 OF=1 (DX es diferente de 0000)

DXAX 008B7B31

4) SI

SI 81B6 CF=1 (DX es diferente de 0000)


x AX x 7B31 OF=1 (DX es diferente de 0000)

DXAX 3E6B45D6

g. IMUL (Multiplicación de enteros)

Formato: IMUL fuente

Si la fuente es de 8 bits:
Operación: AX AL * fuente

Si la fuente es de 16 bits:
Operación: DXAX AX * fuente

Pueden ser fuente: Registros internos de la CPU sean estos de 8 o 16 bits


menos los de segmento.

Trabajan las banderas CF y OF igual que en la MUL.


NOTA: Para obtener en la calculadora común las respuestas, debe sacar
el complemento a 2 del o los operandos negativos y de la respuesta si no
se cumple la ley de signos, la misma que se indica a continuación:

+*+=+
+*-=-
-*+=-
-*-=+

Ejercicio:

MOV AX,3FA5 AX=3FA5


MOV CX,D349 CX=D349
MOV SI,81B6 SI=81B6
IMUL CL AX=E60D y las banderas detalladas abajo
IMUL AL AX=00A9 y las banderas detalladas abajo
IMUL CX AX=7B31, DX=FFE2 y las banderas abajo
IMUL SI AX=45D6, DX=C33A y las banderas abajo
HLT

1) CL

CL 49 (+) 49
x AL x A5 (-)  x 5B

AX (-) 19F3(+)  E60D

OF=CF=1 (AH es diferente de 00)

2) AL

AL OD (+)
x AL x OD (+)

AX 00A9 (+)

OF=CF=0 (AH es igual a 00)

3) CX

CX D349 (-)  2CB7


x AX x 00A9 (+) x 00A9

DXAX (-) 001D84CF (+)  FFE27B31

OF=CF=1 (DX es diferente de 0000)

4) SI

SI 81B6 (-)  7E4A


x AX x 7B31 (+) x 7B31

DXAX (-) 3CC5BA2A (+)  C33A45D6

OF=CF=1 (DX es diferente de 0000)

h. DIV (División aritmética)

Formato: DIV fuente

Si la fuente es de 8 bits:
Operación: AX AX / fuente; AL es el cociente y AH es el
residuo.

Si la fuente es de 16 bits:
Operación: DXAX AX / fuente; AX es el cociente y DX es el
residuo

Pueden ser fuente: Registros internos de la CPU sean estos de 8 o 16 bits


menos los de segmento.

Las banderas se alteran de forma impredecible. Puede ocurrir un


sobreflujo, que genera una interrupción, si se realiza una división para 0
o si el cociente excede de FF para 8 bits y de FFFF para 16 bits.

Ejercicio:

MOV AX,1CD5 AX=1CD5


MOV DX,0002 DX=0002
MOV DI,8358 DI=8358
MOV BX,8549 BX=8549
DIV BH AX=4237
DIV BL AX=0FE8
DIV BX AX=0003, DX=800D
DIV DI Sobreflujo
HLT

1) BH

AX/BH 1CD5 / 85  Cociente=AL=37 y Residuo=AH=42

2) BL

AX/BL 4237 / 49  Cociente=AL=E8 y Residuo=AH=0F

3) BX

DXAX/BX 00020FE8 / 8549  C=AX=0003 y R=DX=800D


4) DI

DXAX/DI 800D0003 / 8358  C=AX=1069D > FFFF error

i. IDIV (División de enteros)

Formato: IDIV fuente

Si la fuente es de 8 bits:
Operación: AX AX / fuente; AL es el cociente y AH es el
residuo.

Si la fuente es de 16 bits:
Operación: DXAX AX / fuente; AX es el cociente y DX es el
residuo

Pueden ser fuente: Registros internos de la CPU sean estos de 8 o 16 bits


menos los de segmento. Tiene las mismas opciones que DIV.

Las banderas se alteran de forma impredecible. Puede ocurrir un


sobreflujo, que genera una interrupción, si se realiza una división para 0
o si el cociente excede de 7F (menor a -80) para 8 bits y 7FFF (menor a
-8000) para 16 bits.

NOTA: Para obtener en la calculadora común las respuestas, debe sacar


el complemento a 2 del o los operandos negativos y de la respuesta
(cociente y residuo) si no se cumple la ley de signos, ésta se indica a
continuación:

+  + = Cociente + y Residuo +
+  - = Cociente - y Residuo +
-  + = Cociente - y Residuo -
-  - = Cociente + y Residuo -

Ejercicio:

MOV AX,1CD5 AX=1CD5


MOV DX,0002 DX=0002
MOV DI,8358 DI=8358
MOV BX,8549 BX=8549
IDIV BH AX=01C4
IDIV BL AX=0E06
IDIV BX AX=FFFC, DX=232A
IDIV DI AX=B7C8, DX=7B3C
HLT

1) BH
AX/BH 1CD5 / 85; (+) / (-)  1CD5/7B Coc=3C, Res=01

 Cociente=AL=37 y Residuo=AH=42

2) BL

AX/BL 01C4 / 49; (+) / (+)  01C4 / 49 Coc=06, Res=0E

 Cociente=AL=06 y Residuo=AH=0E

3) BX

DXAX/BX 000200E06 / 8549; (+) / (-)


 00020E06 / 7AB7 Coc=0004, Res=232A

 Cociente=AX=FFFC y Residuo=DX=232A

4) DI

DXAX/DI 232AFFFC / 8358; (+) / (-)


 232AFFFC / 7CA8 Coc=4838, Res=7B3C

 Cociente=AX=B7C8 y Residuo=DX=7B3C

Вам также может понравиться