Programa de conversión de binario a decimal de microcontrolador
DBUF1 EQU 40H; Definir la dirección inicial del área de almacenamiento de datos
NUM EQU 5AH Dados los datos convertidos<; /p>
ORG 0000H
CALL HEXDIV
SJMP $
HEXDIV.
MOV R1, #DBUF1 puntos; al comienzo del área de almacenamiento de datos Dirección inicial
MOV A, #NUM
MOV B, #100
DIV AB divida por 100; dígito de centenas
MOV @R1, A; El dígito de centenas se almacena en la unidad de dirección inicial del área de almacenamiento
MOV A, #10;
XCH A, B; Pon el resto en A, Pon el divisor en B
DIV AB ; divide por 10 para obtener el dígito de las decenas
INC R1 ; MOV @R1, A ; divide el dígito de las decenas almacenado en 1 celda de la dirección inicial del área de memoria
INC R1
MOV A, B
MOV @R1, A; Cambia el dígito de las unidades El número se coloca en 2 celdas desde la dirección inicial del área de memoria
RET
END
-- --- -------- --
Esta subrutina está muy mal escrita. Simplemente elimine un tercio de las instrucciones y estará bien.
Simplificado, su funcionalidad es la misma que se muestra a continuación.
MOV A, #NUM
MOV B, #100
DIV AB; divide por 100 para obtener el dígito de las centenas
MOV DBUF1, A; el dígito de las centenas se almacena en la unidad de dirección inicial del área de memoria
MOV A, #10; divisor B <
DIV AB ; dividir por 10
MOV DBUF1 1, A ; coloque el dígito de las decenas en la dirección inicial del área de memoria 1 unidad
MOV DBUF1 2, B; Coloque un solo dígito en la dirección inicial de la unidad del área de memoria 2
RET
Los comentarios en el texto original no están escritos correctamente en algunos casos.
Por ejemplo, el comentario para una instrucción de transferencia sería: Almacenar datos en…. , pero está escrito como: Los datos se almacenan en...
Algunos libros son simplemente inventados, así que no los leas.