汇编中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

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值