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 –
- Cargue el contenido de la ubicación de memoria 2000 en el registro AL
- Copie el contenido del registro AL en el registro AH
- Realice la operación AND en el registro AL con 0F
- Asignar 04 al Registro CL
- Cambie el contenido de AH ejecutando la instrucción SHR usando CL
- Realice la operación OR en el registro AX con 3030
- 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 –
- MOV AL, [2000]: carga el contenido de la ubicación de memoria 2000 en AL
- MOV AH, AL: copiar contenido de AL en AH
- AND AL, 0F: hacer operación AND en AL con 0F
- MOV CL, 04 asigna 04 al registro CL
- SHR AH, CL: desplaza el contenido del registro AH 4 bits a la derecha, es decir, el valor del registro CL
- OR AX, 3030: hacer operación OR en AX con 3030
- MOV [3000], AX: almacena el contenido del par de registros AX en la dirección de memoria 3000
- 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