Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Multiplicación y división
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
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
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.
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)