MOV R1 #Y第二个立即数的低32位
ADD R2 R1 R0;低位相加
MOV R0 #X>>32第一个立即数的高32位
MOV R1 #Y>>32第二纯答个立即数的高32位
ADC R1 R0;带进位的高位相加
MOV R0 #NUM内存单元NUM地址送入R0
STR R2 [R0];存储低32位结果
STR R1 [R0,#32];存储高32位结果
.stack 100h.data
.code
start:
mov ax, @data
mov ds, ax
mov cx, 50 循绝森环50次
xor ax, ax
label:
mov bx, cx
shl bx, 1 相当森闹于将当前循环计数乘此宏罩2,用来做加法
add ax, bx
loop label 循环完成后,结果放在AX中
mov ax, 4c00h
int 21h
因为R7-R4和R11-R8是高到低,加法是由地位开始加,所以先加R4,R8到R0,但如果R4+R8有进位,就要更新CF标志,所以不用ADD,要用ADDS,中间源氏两位要考虑前面的进位,又要考虑加了以后有进位,所以要用ADCS,而最后一位加只考虑第三位的进位,并不关心加磨行后的结果又进瞎裂哗位。所以用ADC。说白了就是
ADD不关心之前是否有进位,也不关心加了后是否有进位
ADDS不关心之前是否有进位,但关心加了后是否有进位
ADC只关心之前是否有进位,不关心加了后是否有进位
ADCS关心之前是否有进位,关心加了后是否有进位
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)