mov指令和数据传输 | 您所在的位置:网站首页 › mov_b指令怎么清零 › mov指令和数据传输 |
mov指令
1.mov指令的顺序是从右到左,如mov a,b,则把b的值复制给a。如:MOV 目的操作数(a),源操作数(b) ,即a=b 2.除了之前提到的movb,movw,movl,movq,还有movabsq,代表传送绝对的四字,movq虽可传四字,但一旦要传立即数,则只能传32位补码表示的立即数,随后把它符号拓展到64位。而movabsq可以直接传64位的立即数,但是它只能以寄存器作为目的地。 3.所有mov指令都不支持从一个内存地址直接传到另一个内存地址,如movw (%rax),4(%rsp)是不行的。 4.决定mov使用哪个后缀的是寄存器的大小,当两边操作的都是寄存器时,若大小不同,必须用第5条中的小数据复制到大目的地的类型的mov指令,当两边操作的是立即数和内存时,可以以立即数大小为准, 例子:movl $0x4050,%eax 0x4050虽然是2字节,但%eax是4字节,所以movl movw %bp,%sp movb (%rdi,%rcx),%al movb $17,(%rsp) 立即数->内存 movq %rax,-12(%rbp) 5.当想将小的数据复制到大的目的地时,可以用movz或movs,前者代表用0填充高字节,后者代表用符号填充高字节,后面还要加上两种转换数据的大小, 比如movzbw(字节->字,0填充),movswq(字->四字,符号填充),还有一种cltq指令,特指%eax->%rax的符号拓展转换,等价于movslq %eax,%rax 注意movs和movz都是以寄存器为目的地的。 根据以上信息,可以知道,之前的第4点中的特殊规则其实相当于是说movl可以实现movzlq的功能 |
CopyRight 2018-2019 实验室设备网 版权所有 |