单片机二进制转十进制程序

发布网友 发布时间:2022-04-24 14:49

我来回答

2个回答

热心网友 时间:2023-10-17 05:42

整理一下格式,原来的程序如下:

DBUF1 EQU 40H ;定义数据存储区起始地址
NUM EQU 5AH ;给定转换的数据
ORG 0000H
CALL HEXDIV
SJMP $

HEXDIV:
MOV R1, #DBUF1 ;R1指向数据存储区的起始地址
MOV A, #NUM
MOV B, #100
DIV AB ;除以100,求得百位值
MOV @R1, A ;百位存放在存储区起始地址单元中
MOV A, #10 ;
XCH A, B ;把余数放A,除数放B
DIV AB ;除以10,求得十位值
INC R1 ;
MOV @R1, A ;十位放在存储区起始地址+1单元中
INC R1 ;
MOV A, B
MOV @R1, A ;个位放在存储区起始地址+2单元中
RET
END
---------------
这个子程序,编写的太滥了,去掉三分之一的指令,都是可以的。
简化后,功能完全相同,如下。

MOV A, #NUM
MOV B, #100
DIV AB ;除以100,求得百位
MOV DBUF1, A ;百位存放到存储区的起始地址单元中
MOV A, #10 ;
XCH A, B ;把余数放A,除数放B
DIV AB ;除以10
MOV DBUF1 + 1, A ;十位放到存储区起始地址+1单元中
MOV DBUF1 + 2, B ;个位放到存储区起始地址+2单元中
RET

原文的注释,有些,写的也不对路。
如传送指令的注释,应该写:数据存放到...,它却写:数据存放在...。
有些书,就是在瞎编,不看也罢。

热心网友 时间:2023-10-17 05:43

1.5AH (40H)=0 (41H)= 9 (42H)=0
2.FFH (40H)=2 (41H)= 5 (42H)=5

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com