Problema : escriba un programa para restar dos números de 8 bits con o sin préstamo donde el primer número esté en la dirección de memoria 2500 y el segundo número esté en la dirección de memoria 2501 y almacene el resultado en 2502 y tome prestado en la dirección de memoria 2503 .
Ejemplo –
Algoritmo –
- Cargar 00 en un registro C (para préstamo)
- Cargue dos números de 8 bits de la memoria en los registros
- Mover un número al acumulador
- Resta el segundo número con el acumulador
- Si el préstamo no es igual a 1, vaya al paso 7
- Incrementar registro para préstamo por 1
- Almacenar el contenido del acumulador en la memoria
- Mover el contenido del registro al acumulador
- Almacene el contenido del acumulador en otra ubicación de memoria
- Deténgase
Programa –
Memoria | Mnemotécnica | operandos | Comentario |
---|---|---|---|
2000 | IMV | C, 00 | [C] <- 00 |
2002 | LHLD | 2500 | [HL] <- [2500] |
2005 | MOVIMIENTO | un, h | [A] <-[H] |
2006 | SUB | L | [A] <- [A] – [L] |
2007 | JNC | 200B | Saltar si no hay préstamo |
200A | EUR | C | [C] <- [C] + 1 |
200B | ESTA | 2502 | [A] -> [2502], Resultado |
200E | MOVIMIENTO | A, C | [A] <- [C] |
2010 | ESTA | 2503 | [A] -> [2503], tomar prestado |
2013 | HLT | Deténgase |
Explicación: los registros A, H, L, C se utilizan para fines generales:
- MOV se utiliza para transferir los datos de la memoria al acumulador (1 byte)
- LHLD se usa para cargar el par de registros directamente usando una dirección de 16 bits (instrucción de 3 bytes)
- MVI se utiliza para mover datos inmediatamente a cualquiera de los registros (2 bytes)
- STA se utiliza para almacenar el contenido del acumulador en la memoria (instrucción de 3 bytes)
- INR se usa para aumentar el registro en 1 (instrucción de 1 byte)
- JNC se usa para saltar si no hay préstamo (instrucción de 3 bytes)
- SUB se usa para restar dos números donde un número está en el acumulador (1 byte)
- HLT se utiliza para detener el programa
Ver para: programa 8086 para restar dos números de 16 bits con o sin préstamo