汇编中movl,movw,movb 的作用 及汇编基础知识普及

操作系统: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

结果:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

转自:http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=28458801&id=3558498

猜你喜欢

转载自blog.csdn.net/weixin_42560250/article/details/95461029
今日推荐