第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指令。