帮忙注释一下下面这个 ASCII加减法程序 的几步
DATA1 DATA2中分别放着两个两位数(从外面读入的,为ASCII码形式),SUM DIFF是放和,差的.
MOV AL,DATA1+3
ADD AL,DATA2+3
AAA
MOV SUM+2,AL
MOV AL,DATA1+2
ADC AL,DATA2+2
AAA
MOV SUM+1,AL
JNC SKIP1
MOV SUM, '1 '
SKIP1:
OR SUM+1,30H ;这步起什么作用不明白
OR SUM+2,30H
MOV AL,DATA1+3
SUB AL,DATA2+3
AAS
MOV DIFF+2,AL
MOV AL,DATA1+2
SBB AL,DATA2+2
AAS
MOV DIFF+1,AL
JNC SKIP2
MOV DIFF, '- '
MOV AL,0 ;这后面的几步起什么作用也不明白
SUB AL,DIFF+2
AAS
MOV DIFF+2,AL
MOV AL,0
SBB AL,DIFF+1
AAS
MOV DIFF+1,AL
SKIP2:
OR DIFF+1,30H
OR DIFF+2,30H
希望能够帮忙注释一下 感激不尽
[解决办法]
SKIP1: 那里是将数值转换为显示用的数字字符, 比如字节数值 03h, 显示字符是 '3 '=33h, 所以是要加 30h, 由于高 4 位为 0, 与 30h 或操作也对.
SKIP2: 那后面, 是处理高位不足产品借位, 结果为负数时的调整. 这个, 解释也不太明了, 还是将程序生成 .exe 用 debug 走一遍, 看看结果随着个指令的变化, 就会理解的.