汇编语言实现112233H+445566H的加法

LEA DI,SUM
ADD DI,2
MOV BX,2
MOV AL,FIRST[BX] 这一步看不懂
ADD AL,SECOND+2
MOV [DI],AL
DEX DI
DEX BX
MOV AL,FIRST[BX]
ADC AL,SECOND+1
MOV [DI],AL
DEX DI
DEX BX
MOF AL,FIRST[BX]
ADC AL,SECOND

MOV [DI],AL






这个程序段完成112233H+445566H,并把结果存放在sum单元
first 是这样定义的:
first db 11h,22h,33h
second db 44h,55h,66h
对应相加的话应该从最低位开始
所以应该是
MOV AL,FIRST[BX]
这时bx=2,就相当于mov al,first+2(变址寻址嘛)
也就是先计算33H+66H
然后依次计算22H+55H和11H+44H
后两次加法注意进位(使用adc指令)
不是只取后两位,而是从后两位开始相加
LEA DI,SUM
ADD DI,2
MOV BX,2
MOV AL,FIRST[BX]
ADD AL,SECOND+2 先是后两位相加
MOV [DI],AL 存结果
DEX DI 这里应该是dec di,di减一,指向中间字节
DEX BX 这里也是dec bx
MOV AL,FIRST[BX]
ADC AL,SECOND+1 中间字节相加,还有后两位的进位
MOV [DI],AL 存结果
DEX DI 还是dec di
DEX BX 一样的,也是dec bx,指向最高字节
MOF AL,FIRST[BX]
ADC AL,SECOND 相加,还有中间两位相加的进位
MOV [DI],AL 存结果

猜你喜欢

转载自blog.csdn.net/duyujian706709149/article/details/80397726
今日推荐