编写ARM汇编程序,完成两个64位数相加,结果存放在NUM单元

编写ARM汇编程序,完成两个64位数相加,结果存放在NUM单元,第1张

MOV R0 #X第一个睁裤让立即数悉局的低32位

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关心之前是否有进位,关心加了后是否有进位


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8240151.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存