Problema: escriba un programa para restar dos números de 16 bits donde la dirección inicial sea 2000 y los números estén en las direcciones de memoria 3000 y 3002 y almacene el resultado en las direcciones de memoria 3004 y 3006 .
Ejemplo –
Algoritmo –
- Cargue 0000H en el registro CX (para pedir prestado)
- Cargue los datos en AX (acumulador) desde la memoria 3000
- Cargue los datos en el registro BX desde la memoria 3002
- Restar BX con Acumulador AX
- Salta si no pides prestado
- Incrementar CX en 1
- Mover datos de AX (acumulador) a la memoria 3004
- Mover datos del registro CX a la memoria 3006
- Deténgase
Programa –
Memoria | Mnemotécnica | operandos | Comentario |
---|---|---|---|
2000 | MOVIMIENTO | CX, 0000 | [CX] <- 0000 |
2003 | MOVIMIENTO | HACHA, [3000] | [EJE] <- [3000] |
2007 | MOVIMIENTO | BX, [3002] | [BX] <- [3002] |
200B | SUB | HACHA, BX | [AX] <- [AX] – [BX] |
200D | JNC | 2010 | Salta si no pides prestado |
200F | CÍA | CX | [CX] <- [CX] + 1 |
2010 | MOVIMIENTO | [3004], HACHA | [3004] <- [EJE] |
2014 | MOVIMIENTO | [3006], CX | [3006] <- [CX] |
2018 | HLT | Deténgase |
Explicación –
- MOV se utiliza para cargar y almacenar datos.
- SUB se usa para restar dos números donde su único número está en acumulador o no.
- JNC es un comando de 2 bits que se usa para verificar si el préstamo se genera desde el acumulador o no.
- INC se utiliza para incrementar un registro en 1.
- HLT se utiliza para detener el programa.
- AX es un acumulador que se utiliza para cargar y almacenar los datos.
- BX, CX son registros de propósito general donde BX se usa para almacenar el segundo número y CX se usa para almacenar el préstamo.