【高手指教】一段汇编程序读不懂。
发布网友
发布时间:2023-07-17 08:01
我来回答
共1个回答
热心网友
时间:2024-11-29 12:37
本程序把R2中的16进制数字的ASCII码,变换成了16进制数。
0~9的ASCII码,进行变换的时候,要减去30H、
A~F的ASCII码,则需要减去37H,这样就变换成了对应的16进制数。
减去30H还是37H,要看原始数据是否小于10。详细理论可以参考有关资料。
L: MOV A, R2 ;取来16进制数字的ASCII码.
CLR C ;进位清零,因为下面的减法,进位要参加运算,故此先清零.
SUBB A, #30H ;先减去30H.
MOV R2, A ;保存.
SUBB A, #0AH ;再减去10
JC SBIO ;有借位,即不够减转移.
;无借位,则要再减7.
XCH A, R2 ;取回来。 XCH是交换指令,在这里相当于传送.
SUBB A, #07H ;减去7.
MOV R2, A ;送回去.
SBIO: RET ;结束.
原程序中,标号 SBIO 的位置有错误。