You are on page 1of 9

Números BCD

Instrucciones Aritméticas
Instrucciones BCD
El procesador provee instrucciones especialmente
diseñadas para hacer conversiones a y de un formato
BCD, llamadas instrucciones de “Ajuste ASCII” y
“Ajuste decimal”.
Se usan los términos:
• Ajuste ASCII, para referirse a BCD no empaquetado.
• Decimal, para referirse a BCD empaquetado.
BCD no empaquetado
Cuando un calculo usa dos valores de un digito,
produce un resultado de dos dígitos.
Las instrucciones AAA, AAS, AAM y AAD, colocan
el primer dígito en AL y el segundo digito en AH,
modificando las banderas de carry (CF) y Bandera
auxiliar (AF).
• Instrucción: AAA. Ajuste ASCII de AL después de adición.
• Propósito: Usada para ajustar el resultado de la suma de dos números
BCD colocándolo en AL, si el nibble bajo en AL contiene un valor > 9 o
si se activa AF, AH se incrementa en UNO y se le suman 6 a AL. AAA
pone el nibble superior de AL en 0.
• Sintaxis: AAA
• Flags: AF y CF son 0 si el valor en AL es < 9, si AL es > 9 son puestas
a 1.
• Comentarios: Esta instrucción es utilizada cuando se suman números
BCD no empaquetados (un número o digito BCD por byte) Luego de
sumar 2 valores BCD no empaquetados con ADD colocando el
resultado en AL, se deberá llamar a AAA para ajustar la suma en un
digito válido BCD.
• Ejemplo:
xor ax, ax
mov ax, a ;Carga 9
mov bx, b ;Carga 8
add al, bl ;Suma 09h + 08h es 11
aaa ;Ajusta 11 como: AH = 01, AL = 07
BCD Empaquetado
Son números decimales, en donde 2 números
son puestos, uno en la parte alta del byte y el
otro en la parte baja.
Hay instrucciones para realizar el ajuste después
de la suma y la resta.
Para la multiplicación y división es necesario
implementar las rutinas.
Instrucciones BCD empaquetadas
Para el cálculo de números BCD empaquetados, se
deberán realizar los cálculos aritméticos de 8 bits sobre
cada byte de manera separada, colocando el resultado en
AL, después de cada operación, deberá usar la instrucción
de ajuste decimal correspondiente para ajustar el
resultado.

El procesador proporciona las instrucciones DAA (Ajuste
decimal después de la suma) y DAS ((Ajuste decimal
después de la resta).
• Instrucción: DAA, Ajuste decimal en AL después de la adición.
• Propósito: Úsela después de sumar dos números BCD empaquetados
para convertir el resultado (asumiendo que esta en AL y es menor que
100), en un valor BCD. Si el nibble bajo en AL contiene un valor > 9 y
AF = 1, suma 6 a AL, después de esto, si AL > 9Fh o si CF = 1 suma
60h a AL.
• Sintaxis: DAA
• Flags: AF = 1, si el nibble bajo de AL excede 9. Si AL > 9Fh luego del
primer ajuste, CF = 1. Las banderas SF, ZF y PF son también
afectadas por el resultado del ajuste.
• Comentarios: De igual forma que AAA ajusta el resultado de sumar no
empaquetado BCD, DAA ajusta el resultado de sumar 2 números BCD
empaquetados y de esta forma mantener BCD válido.
• Ejemplo:
xor ax, ax
mov ax, f ;Carga 39 y 88 como BCD empaquetados
add al, ah ;Suma 39 + 88 = 127
daa ;Ajusta 0C1h a 127 como BCD empaquetado
;Pone en al = 27 y en CF = 1

• Instrucción:
• Propósito:

• Sintaxis:

• Flags:

• Comentarios:

• Ejemplo: