发布网友 发布时间: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