Chinaunix首页 | 论坛 | 博客
  • 博客访问: 6478432
  • 博文数量: 579
  • 博客积分: 1548
  • 博客等级: 上尉
  • 技术积分: 16635
  • 用 户 组: 普通用户
  • 注册时间: 2012-12-12 15:29
个人简介

http://www.csdn.net/ http://www.arm.com/zh/ https://www.kernel.org/ http://www.linuxpk.com/ http://www.51develop.net/ http://linux.chinaitlab.com/ http://www.embeddedlinux.org.cn http://bbs.pediy.com/

文章分类

全部博文(579)

文章存档

2018年(18)

2015年(91)

2014年(159)

2013年(231)

2012年(80)

分类: LINUX

2013-04-01 11:08:18

操作系统: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指令的源和目的操作数组合如下:








实例:

点击(此处)折叠或打开

  1. .section .data
  2.     output:
  3.         .asciz "The value is %d\n"
  4.     values:
  5.         .int    10,15,20,25,30,35,40,45,50,55,60

  6. .section .text
  7. .global _start
  8. _start:
  9.     nop
  10.     movl $0,%edi

  11. loop:
  12.     movl values(,%edi,4),%eax
  13.     pushl %eax
  14.     pushl $output    
  15.     call    printf
  16.     addl    $8,%esp
  17.     inc        %edi
  18.     cmpl    $11,%edi
  19.     jne        loop

  20.     movl    $0,    %ebx
  21.     movl    $1,    %eax
  22.     int        $0x80
结果:














阅读(42171) | 评论(0) | 转发(4) |
给主人留下些什么吧!~~