Problema : escriba un programa para sumar números de 2 BCD donde la dirección inicial es 2000 y los números se almacenan en las direcciones de memoria 2500 y 2501 y almacena la suma en 2502 y la lleva a la dirección de memoria 2503 .
Ejemplo –
Algoritmo –
- Cargue 00H en un registro (para llevar)
- Cargar contenido de la memoria en el par de registros
- Mover contenido del registro L al acumulador
- Agregar contenido del registro H con acumulador
- Agregue 06H si la suma es mayor que 9 o el acarreo auxiliar no es cero
- Si la bandera de acarreo no es igual a 1, vaya al paso 8
- Incrementar el registro de acarreo en 1
- Almacene el contenido del acumulador en la memoria
- Mover contenido del registro de acarreo al acumulador
- Almacene el contenido del acumulador en la memoria
- Deténgase
Programa –
Memoria | Mnemotécnica | operandos | Comentario |
---|---|---|---|
2000 | IMV | C, 00H | [C] <- 00H, llevar |
2002 | LHLD | [2500] | [HL] <- [2500] |
2005 | MOVIMIENTO | A, L | [A] <-[I] |
2006 | AGREGAR | H | [A] <- [A] + [H] |
2007 | DAA | Suma 06 si suma > 9 o AC = 1 | |
2008 | JNC | 200C | Salta si no lleva |
200B | EUR | C | [C] <- [C] + 1 |
200C | ESTA | [2502] | [A] -> [2502], suma |
200F | MOVIMIENTO | A, C | [A] <- [C] |
2010 | ESTA | [2503] | [A] -> [2503], llevar |
2013 | HLT | Deténgase |
Explicación: los registros A, C, H, L se utilizan para fines generales
- MVI se utiliza para mover datos inmediatamente a cualquiera de los registros (2 bytes)
- LHLD se usa para cargar el par de registros directamente usando una dirección de 16 bits (instrucción de 3 bytes)
- MOV se utiliza para transferir los datos de la memoria al acumulador (1 byte)
- ADD se usa para agregar acumulador con cualquiera de los registros (instrucción de 1 byte)
- STA se utiliza para almacenar datos del acumulador en la dirección de memoria (instrucción de 3 bytes)
- DAA se usa para verificar si la suma> 9 o AC = 1 agrega 06 (instrucción de 1 byte)
- JNC se usa para saltar si no se lleva a la ubicación de memoria dada (instrucción de 3 bytes)
- INR se usa para aumentar el registro dado en 1 (instrucción de 1 byte)
- HLT se utiliza para detener el programa