Programa 8086 para convertir un número BCD de 8 bits en un número hexadecimal

Problema: escriba un programa en lenguaje ensamblador en un microprocesador 8086 para convertir un número BCD de 8 bits en un número hexadecimal.

Ejemplo –

Suposición:
el valor inicial del registro de segmento es 00000.
Cálculo de la dirección de la memoria física:
Dirección de memoria = Registro de segmento * 10(H) + Compensación
donde el Registro de segmento es 00000 (suposición) y la Compensación se proporciona en el programa.

Algoritmo –

  1. Asigne valor 500 en SI y 600 en DI.
  2. Mueva el contenido de [SI] en BL.
  3. Use la instrucción AND para calcular AND entre 0F y el contenido de BL.
  4. Mueva el contenido de [SI] en AL.
  5. Use la instrucción AND para calcular AND entre F0 y el contenido de AL.
  6. Mueva 04 en CL.
  7. Use la instrucción ROR en AL.
  8. Mover 0A en DL.
  9. Use la instrucción MUL para multiplicar AL con DL.
  10. Utilice la instrucción ADD para sumar AL con BL.
  11. Mueva el contenido de AL en [DI].
  12. Detener el programa.

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 Y BL, 0F BL = BL Y 0F
040A MOV AL, [SI] AL <- [SI]
040C Y AL, F0 BL = AL Y F0
040E CL MOV, 04 CL = 04
0410 ROR AL, CL Rotar AL
0412 MOV DL, 0A DL = 0A
0414 MUL DL AX = AL * DL
0416 AÑADIR AL, BL AL = AL + BL
0418 MOV [DI], AL [DI] <- AL
041A HLT Fin del programa

Explicación – Registros utilizados SI, DI, AL, BL, CL, DL.

  1. MOV SI,500 se usa para mover el desplazamiento 500 al índice inicial (SI)
  2. MOV DI,600 se usa para mover el desplazamiento 600 al índice de destino (DI)
  3. MOV BL,[SI] se usa para mover el contenido de [SI] a BL
  4. AND BL,0F se usa para enmascarar el nibble de orden superior de BL
  5. MOV AL,[SI] se usa para mover el contenido de [SI] a AL
  6. AND AL,F0 se usa para enmascarar el nibble de orden inferior de BL
  7. MOV CL,04 se usa para mover 04 a CL
  8. ROR AL,CL se utiliza para invertir el contenido de AL
  9. MOV DL,0A se usa para mover 0A a DL
  10. MUL DL se utiliza para multiplicar contenidos de AL con DL
  11. ADD AL,BL se usa para agregar contenidos de AL y BL
  12. MOV [DI],AL se usa para mover el contenido de AL a [DI]
  13. HLT deja de ejecutar el programa y detiene cualquier ejecución adicional

Publicación traducida automáticamente

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