Programa 8086 para convertir números BCD de 8 bits en código ASCII

Problema: escriba un programa en lenguaje ensamblador en un microprocesador 8086 para convertir un número BCD de 8 bits a su respectivo código ASCII. 

Suposición: 
dirección de inicio del programa: 400  Ubicación de
la memoria de entrada: 2000 
Ubicación de la memoria de salida: 3000 

Ejemplo : 

Input: 
DATA: 98H in memory location 2000

Output:
DATA: 38H in memory location 3000 and 
      39H in memory location 3001 

Algoritmo – 

  1. Cargue el contenido de la ubicación de memoria 2000 en el registro AL 
     
  2. Copie el contenido del registro AL en el registro AH 
     
  3. Realice la operación AND en el registro AL con 0F 
     
  4. Asignar 04 al Registro CL 
     
  5. Cambie el contenido de AH ejecutando la instrucción SHR usando CL 
     
  6. Realice la operación OR en el registro AX con 3030 
     
  7. Almacene el contenido de AX en la ubicación de memoria 3000 
     

Programa – 

Dirección de memoria Mnemotécnica Comentarios
400 MOV AL, [2000] AL<-[2000]
404 MOV AH, AL AH<-AL
406 Y AL, 0F AL <- (AL Y 0F)
408 CL MOV, 04 CL <- 04
40A SHR AH, CL Desplazar el contenido de AH a la derecha en 4 bits (valor de CL)
40C O HACHA, 3030 AX <- (AX O 3030)
40F MOV [3000], HACHA [3000]<-AX
413 HLT Detener ejecución

Explicación – 

  1. MOV AL, [2000]: carga el contenido de la ubicación de memoria 2000 en AL 
     
  2. MOV AH, AL: copiar contenido de AL en AH 
     
  3. AND AL, 0F: hacer operación AND en AL con 0F 
     
  4. MOV CL, 04 asigna 04 al registro CL 
     
  5. SHR AH, CL: desplaza el contenido del registro AH 4 bits a la derecha, es decir, el valor del registro CL 
     
  6. OR AX, 3030: hacer operación OR en AX con 3030 
     
  7. MOV [3000], AX: almacena el contenido del par de registros AX en la dirección de memoria 3000 
     
  8. HLT: deja de ejecutar el programa

Publicación traducida automáticamente

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