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 –
- Asigne valor 500 en SI y 600 en DI.
- Mueva el contenido de [SI] en BL.
- Use la instrucción AND para calcular AND entre 0F y el contenido de BL.
- Mueva el contenido de [SI] en AL.
- Use la instrucción AND para calcular AND entre F0 y el contenido de AL.
- Mueva 04 en CL.
- Use la instrucción ROR en AL.
- Mover 0A en DL.
- Use la instrucción MUL para multiplicar AL con DL.
- Utilice la instrucción ADD para sumar AL con BL.
- Mueva el contenido de AL en [DI].
- 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.
- MOV SI,500 se usa para mover el desplazamiento 500 al índice inicial (SI)
- MOV DI,600 se usa para mover el desplazamiento 600 al índice de destino (DI)
- MOV BL,[SI] se usa para mover el contenido de [SI] a BL
- AND BL,0F se usa para enmascarar el nibble de orden superior de BL
- MOV AL,[SI] se usa para mover el contenido de [SI] a AL
- AND AL,F0 se usa para enmascarar el nibble de orden inferior de BL
- MOV CL,04 se usa para mover 04 a CL
- ROR AL,CL se utiliza para invertir el contenido de AL
- MOV DL,0A se usa para mover 0A a DL
- MUL DL se utiliza para multiplicar contenidos de AL con DL
- ADD AL,BL se usa para agregar contenidos de AL y BL
- MOV [DI],AL se usa para mover el contenido de AL a [DI]
- 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