Problema: Escriba un programa en lenguaje ensamblador en un microprocesador 8085 para invertir números de 8 bits.
Ejemplo:
Suponga que el número que se invertirá se almacena en la ubicación de memoria 2050 y el número invertido se almacena en la ubicación de memoria 3050.
Algoritmo –
- Cargue el contenido de la ubicación de memoria 2050 en el acumulador A
- Utilice la instrucción RLC para desplazar el contenido de A en 1 bit sin acarreo. Use esta instrucción 4 veces para invertir el contenido de A
- Almacene el contenido de A en la ubicación de memoria 3050
Programa –
DIRECCIÓN DE MEMORIA | MNEMOTÉCNICA | COMENTARIO |
---|---|---|
Explicación – Registro A utilizado:
- LDA 2050: valor de carga de la ubicación de memoria 2050 en el Acumulador A.
- RLC: rotar el contenido del acumulador a la izquierda por 1 bit
- RLC: rotar el contenido del acumulador a la izquierda por 1 bit
- RLC: rotar el contenido del acumulador a la izquierda por 1 bit
- RLC: rotar el contenido del acumulador a la izquierda por 1 bit
- STA 3050: almacene el contenido de A en la ubicación de memoria 3050.
- HLT: deja de ejecutar el programa y detiene cualquier ejecución posterior.
Otra forma alternativa y sencilla de ejecutar el programa anterior y la magia de las instrucciones de rotación 8085:
Esto se puede hacer usando la instrucción RRC 4 veces .
LDA2050H
CRR
RRC // 4 RRC hacen el mismo trabajo que 4 RLC. Entonces podemos usar cualquiera alternativamente.
CRR
RRC //Después de esta cuarta instrucción RRC, nuestro número de 8 bits se invierte y se almacena en el acumulador.
STA 3050H
HLT
Explicación paso a paso y bit a bit del programa anterior con un ejemplo:
Example : 98H in Binary Written as : 1001 1000 RLC 1st Time : 0011 0001 {Carry Flag = 1} RLC 2nd Time : 0110 0010 {Carry Flag = 0} RLC 3rd Time : 1100 0100 {Carry Flag = 0} RLC 4th Time : 1000 1001 { Carry Flag = 1} Converted Number after 4th RLC : 1000 1001 [89H] Hence our number is reversed from 98H to 89H. For Example : 98H in Binary Written as : 1001 1000 RRC 1st Time : 0100 1100 {Carry Flag = 0} RRC 2nd Time : 0010 0110 {Carry Flag = 0} RRC 3rd Time : 0001 0011 { Carry Flag = 0} RRC 4th Time : 1000 1001 { Carry Flag = 1} Converted Number after 4th RRC : 1000 1001 [89H] Hence our number is reversed from 98H to 89H. Hence Instead of 4 RLC, we can also use 4 RRC instructions in our code alternatively.
Publicación traducida automáticamente
Artículo escrito por AmishTandon y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA