|
1、ADD 指令
ADD 指令用于把两个数加。格式如下:其中,source 可以是立即值、内存位置或寄存器。destination 参数可以是寄存器或者内存位置中存储的值,但是源和目标不能同时是内存位置,加法的结果放在目标位置。
ADD 指令可以将 8 位、16位或者 32位值相加,和其他GNU汇编指令一样,必须通过 ADD 助记符的结尾添加 b(用于字节)、w(用于字) 或者 l(用于双字)来指定操作数的长度。如:addb $10, %al
addw %bx, %cx
addl data, %eax
addl %eax, %eax
测试程序:
.section .data
data:
.int 40
.section .text
.global _start
_start:
nop
movl $0, %eax
movl $0, %ebx
movl $0, %ecx
movb $20, %al
addb $10, %al
movsx %al, %eax
movw $100, %cx
addw %cx, %bx
movsx %bx, %ebx
movl $100, %edx
addl %edx, %edx
addl data, %eax
addl %eax, data
movl $1, %eax
movl $0, %ebx
int $0x80 在 gdb 里观察相应寄存器和内存地址的值:(gdb) print $eax
$1 = 70
(gdb) print $ebx
$2 = 100
(gdb) print $ecx
$3 = 100
(gdb) print $edx
$4 = 200
(gdb) x/d &data
0x80490b4 <data>: 110 所有的指令都按照期望的那样执行了。另外,ADD 同样适用于带符号的加法运算。 |
|