第29部分-Linux x86 64位汇编 加法指令
adc指令可以执行两个无符号或者带符号整数值的加法,并且把前一个ADD指令产生的进位标志的值包含在其中。为了执行多组多字节的加法操作,可以把多个ADC指令链接在一起。
示例
代码如下:
.section .data
data1:
.quad 11111111,7252051615;//16字节整数
data2:
.quad 22222222,5732348928;//16字节整数
output:
.asciz "The result is %qd\n"
.section .text
.globl _start
_start:
movq data1, %rbx;//保存data1的前8个字节到ebx
movq data1+8, %rax;//保存data1的后8个字节到ebx
movq data2, %rdx;//保存data2的前8个字节到ebx
movq data2+8, %rcx;//保存data2的后8个字节到ebx
addq %rbx, %rdx;//前8个字节相加
adcq %rcx, %rax;//后8个字节相加
adcq %rdx, %rax;//全部相加
movq $output,%rdi
movq %rax ,%rsi
call printf
movq $60,%rax
movq $0,%rdi
syscall
as -o adctest.o adctest.s
ld -o adctest adctest.o -lc -I /lib64/ld-linux-x86-64.so.2
减法也是类型,减法中有类似adc的功能,是sbb指令。