操作系统:ubuntu11.10
MOV指令的基本格式:
movx source, destination
source 和 destinatino 的值可以是内存地址,存储在内存中的数据值,指令语句中定义的数据值,或者是寄存器。
注意:GNU汇编器使用 AT&T 样式的语法,所以其中的源和目的操作数和 Intel 文档中给出的顺序是相反的。
GNU汇编器为 mov 指令添加了一个维度,在其中必须声明要传送的数据元素的长度。
通过吧一个附加字符添加到 MOV 助记符来声明这个长度。
因此,指令就变成了如下:
movx
其中 x 可以是下面的字符:
1,l用于32位的长字值
2,w用于16位的字值
3,b用于8位的字节值
实例:
movl %eax, %ebx #把32位的EAX寄存器值传送给32为的EBX寄存器值
movw %ax, %bx #把32位的EAX寄存器值传送给32为的EBX寄存器值
movb %al, %lx #把32位的EAX寄存器值传送给32为的EBX寄存器值
MOV指令的源和目的操作数组合如下:
实例:
-
.section .data
-
output:
-
.asciz "The value is %d\n"
-
values:
-
.int 10,15,20,25,30,35,40,45,50,55,60
-
-
.section .text
-
.global _start
-
_start:
-
nop
-
movl $0,%edi
-
-
loop:
-
movl values(,%edi,4),%eax
-
pushl %eax
-
pushl $output
-
call printf
-
addl $8,%esp
-
inc %edi
-
cmpl $11,%edi
-
jne loop
-
-
movl $0, %ebx
-
movl $1, %eax
-
int $0x80
结果:
阅读(42017) | 评论(0) | 转发(4) |