Programa 8086 para restar dos números de 16 bits con o sin préstamo

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 –

  1. Cargue 0000H en el registro CX (para pedir prestado)
  2. Cargue los datos en AX (acumulador) desde la memoria 3000
  3. Cargue los datos en el registro BX desde la memoria 3002
  4. Restar BX con Acumulador AX
  5. Salta si no pides prestado
  6. Incrementar CX en 1
  7. Mover datos de AX (acumulador) a la memoria 3004
  8. Mover datos del registro CX a la memoria 3006
  9. 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 –

  1. MOV se utiliza para cargar y almacenar datos.
  2. SUB se usa para restar dos números donde su único número está en acumulador o no.
  3. JNC es un comando de 2 bits que se usa para verificar si el préstamo se genera desde el acumulador o no.
  4. INC se utiliza para incrementar un registro en 1.
  5. HLT se utiliza para detener el programa.
  6. AX es un acumulador que se utiliza para cargar y almacenar los datos.
  7. 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.

Publicación traducida automáticamente

Artículo escrito por ujjwal57 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *