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位结果
.global _start.text
.arm
_start:
MOV R0,#0x10
MOV R1,#0x1000000A
MOV R2,#0x00
MOV R3,#0x9000000D @ 给第一个128位数赋初值
MOV R4,#0x10
MOV R5,#0x1000000A
MOV R6,#0x00
MOV R7,#0x9000000D @ 给第二个128位数赋档兄初值
ADDS R0,R4,R0 @ 最低32位相加,御行结果保存到R0
ADCS R1,R5,R1 @ 次低32位带进位相加,结行拆袭果保存到R1
ADCS R2,R6,R2 @ 次高32位带进位相加,结果保存到R2
ADCS R3,R7,R3 @ 最高32位带进位相加,结果保存到R2
MOV R4,#0 @ R4的值改为零
ADC R4,R4,#0 @ R4接受最高32相加的进位
Stop:
B Stop
.end
当然,这是128位无符号整数加法 GNU ARM 汇编 修改一下就行
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)