Sei sulla pagina 1di 3

Apuntes de Lenguaje Ensamblador Luis A.

Zarza López, UTM, 2017

10. Más operaciones aritméticas y lógicas


Operaciones con acarreo
Las operaciones que generan acarreo y préstamo, activan banderas que pueden producir saltos con las
instrucciones de salto condicional, son ADD, INC, SUB, DEC, y otras.

add al,bl ;suma valores directamente, sin agregar


; acarreo
adc al,bl ;suma valores y agrega valor de
; acarreo, que puede ser 0 o 1.

sub al,bl ;resta sin acarreo


sbb al,bl ;resta con acarreo, le resta además
; valor de borrow, ya sea 0 o 1.

Para saltar si hubo acarreo o préstamo:


JC y JNC

Multiplicación y división

Estas operaciones se efectúan sobre registros fijos y optativos

MUL Multiplica:
8 bits en AL por 8 bits en otro registro -> resultado en AX (16)
MUL BL ;AL * BL, resultado en AX
16 bits en AX por 16 bits en otro registro -> resultado en DX-AX (32)
MUL CX ;AX * CX, resultado en DX-AX
DIV Divide:
16 bits en AX entre 8 bits en otro registro -> resultado en AL, residuo en AH
DIV BL ;AX/BL, resultado en AL, residuo en AH
32 bits en DX-AX entre 16 bits en otro registro -> resultado en AX, residuo en DX
DIV CX ;DX-AX/CX, resultado en AX, residuo en DX
Posibles errores que detienen el programa:
Sobreflujo: cuando el resultado no cabe en el registro.

1
Apuntes de Lenguaje Ensamblador Luis A. Zarza López, UTM, 2017

División por cero: cuando se intenta dividir entre cero.

Ejercicio:
Hacer programa que divida un número de 32 bits entre otro de 16 bits, y despliegue con claridad
resultado y residuo, pero si el divisor es cero, pedirlo de nuevo (las veces que haga falta).

Números negativos
Una forma no eficiente de representar números negativos es simplemente ocupar el bit de la izquierda
para indicar el signo y el resto de bits para indicar la magnitud. Sin embargo, esta representación no
permite realizar operaciones, ya que no coloca los números de manera que se pase de la parte positiva a
la negativa de manera simple, como se muestra en la siguiente secuencia.
-3,-2,-1,-0,0,1,2,3
Una manera razonablemente simple y eficiente de representar números negativos es conocido como
“complemento a 2”, donde el signo está representado por el bit de la izquierda, donde si el bit=1,
entonces es negativo, y la magnitud se obtiene aplicando la conversión complemento a 2.
Complemento a 2:
1. Se invierten todos los bits (NOT)
2. Se le suma uno.
Para convertir un positivo en negativo, se aplica complemento a 2.
Un número negativo se reconoce por tener el bit de la izquierda encendido
dato en AL, comprobándolo y decidiendo con las siguientes operaciones.
and al,80h ;o bien and al,10000000b
jz etiqueta ;salta si no fue negativo

Para cambiar el signo a un número, se aplican las siguientes operaciones:


not al
inc al

BCD
BCD: binary coded decimal

1
Apuntes de Lenguaje Ensamblador Luis A. Zarza López, UTM, 2017

BCD es la representación binaria o hexadecimal de números base 10. Puesto que la base 10 es la más
natural para los seres humanos, es conveniente poder realizar operaciones con estos números usando el
procesador, aunque son limitadas.
Existen dos representaciones básicas para BCD:
BCD comprimido, donde cada dígito decimal ocupa 4 bits
1001 1000 visto como BCD = 98d
BCD expandido, donde cada dígito decimal ocupa 8 bits
0000 1001 0000 1000 visto como BCD = 98d

Instrucción DDA: Decimal Add Adjust, se utiliza si se desea sumar números BCD comprimido de 2
dígitos. Es indispensable que la suma sea de 8 bits y se reciba el resultado en AL:
add al,bl ;entradas: valores BCD, salida valor
HEX
daa ;salida: BCD y posible acarreo

Existen operaciones para realizar ajustes a fin de considerar una operación como decimal con números
expresados en BCD:
DAA
Se aplica sobre una suma cuyo resultado está en AL, y realiza el ajuste necesario considerando
los sumandos BCD comprimido. Esta operación utiliza banderas del registro de banderas, por lo que se
deberá realizar inmediatamente después de la suma.

ADD AL,BL ;Se interpretarán los datos como


; hexadecimales. Resultado en AL.
DAA ;Modifica el resultado en AL
; considerando que los sumandos
; eran BCD, el resultado en AL
; quedará en BCD.

DAS
Se aplica después de una resta y realiza un ajuste a AL para que sea BCD

Ejercicio: Programa para efectuar la suma de 2 números decimales de 8 digitos (usar arreglo en
memoria)

Potrebbero piacerti anche