首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

帮忙注释一下下面这个 ASCII加减法程序 的几步解决办法

2012-02-09 
帮忙注释一下下面这个 ASCII加减法程序 的几步DATA1DATA2中分别放着两个两位数(从外面读入的,为ASCII码形

帮忙注释一下下面这个 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 走一遍, 看看结果随着个指令的变化, 就会理解的.

热点排行