Programa 8086 para dividir un número de 16 bits por un número de 8 bits

Problema: escriba un programa en lenguaje ensamblador en un microprocesador 8086 para dividir un número de 16 bits por un número de 8 bits.

Ejemplo –
division of 16 bit number by an 8 bit number

Algoritmo –

  1. Asignar valor 500 en SI y 600 en DI
  2. Mueva el contenido de [SI] en BL e incremente SI en 1
  3. Mover el contenido de [SI] y [SI + 1] en AX
  4. Use la instrucción DIV para dividir AX por BL
  5. Mueva el contenido de AX en [DI].
  6. Detener el programa.

Suposición: el valor inicial de cada registro de segmento es 00000.

Cálculo de la dirección de la memoria física –
Dirección de la memoria = Registro de segmento * 10(H) + desplazamiento,
donde el Registro de segmento y el desplazamiento se deciden sobre la base de la siguiente tabla.

OPERACIONES REGISTRO DE SEGMENTOS COMPENSAR
Obtención de instrucciones Segmento de código Puntero de instrucciones
operación de datos Segmento de datos Registro base [BX], Desplazamiento [DISP]
operación de pila Segmento de pila Puntero de pila (SP), Puntero base (BP)
String como fuente Segmento de datos Fuente indexada (SI)
String como destino Segmento adicional Destino indexado (DI)

Programa –

DIRECCIÓN DE MEMORIA MNEMOTÉCNICA COMENTARIO
0400 MOV SI, 500 SI <- 500
0403 MOV DI, 600 ED <- 600
0406 MOV BL, [SI] BL <- [SI]
0408 INC SI SI <- SI + 1
0409 EJE MOV, [SI] AX <- [SI]
040B DIV BL AX <- AX / BL
040D MOV [ED], AX [DI] <-AX
040F HLT fin de programa

Explicación – Registros utilizados AX, BL, SI, DI

  1. MOV SI, 500 asigna 500 a SI
  2. MOV DI, 600 asigna 600 a DI
  3. MOV BL, [SI] mueve el contenido de [SI] al registro BL, es decir, el valor del divisor se almacenará en BL
  4. INC SI incrementa el contenido de SI en 1
  5. MOV AX, [SI] mueve el contenido de [SI] y [SI + 1] al registro AX, es decir, el valor del dividendo se almacenará en AX
  6. DIV BL divide el contenido de AX por BL, después de la ejecución de esta instrucción, el cociente se almacena en AL y el resto en AH
  7. MOV [DI], AX mueve el contenido de AX a [DI]
  8. HLT deja de ejecutar el programa y detiene cualquier ejecución adicional

Publicación traducida automáticamente

Artículo escrito por AmishTandon 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 *