首页 > 编程 > ASM > 正文

汇编指令

2019-11-10 20:28:37
字体:
来源:转载
供稿:网友

move指令: 参考文章:http://book.51cto.com/art/200810/93007.htm

lea指令:该指令有两个操作数。左边是目的操作数,表示操作结果保存在此,该指令目的操作数只能是8个通用寄存器之一。逗号右边的是源操作数,该指令的源操作数只能是一个存储单元,表达存储单元有多种寻址方式。 LEA是INTEL颇为得意的一条指令。在INTEL OPTIMIZATION REFERFENCE MANUAL中,特别提到了这条指令的好处。 0.LEA指令具有单时钟周期,执行效率很高。 1.它是CPU地址生成单元参与运算的,而不是ALU参与运算的,所以在流水线上不会与上下文的算术逻辑指令产生流水相关 2.INTEL指令集中不存在很多RISC机器所具有的三操作数算术运算指令,比如像ARM的”add r0,r1,r2”,而LEA指令恰好提供了同样的功能,以模拟“三元算术逻辑指令”。

ptr含义及作用 mov ax,bx ;是把BX寄存器“里”的值赋予AX,由于二者都是Word型,所以没有必要加“WORD” mov ax,word ptr [bx];是把内存地址等于“BX寄存器的值”的地方所存放的数据,赋予ax。由于只是给出一个内存地址,不知道希望赋予ax的,是byte还是word,所以需要用word明确指出! 所以,当两个操作数的宽度不一样时,就要用到ptr。 也就是说 int *p 用汇编表示就是:dword ptr [p] *p是取p所指内存地址处的值。

rep stos指令 rep指令的目的是重复其上面的指令.ECX的值是其重复的次数. stos指令的作用是将eax的值拷贝到ES:EDI指向的地址

如果设置了direction flag, 那么edi会在该指令执行后减小, 如果没有设置direction flag, 那么edi的值会增加.

REP可以是任何字符传输指令(CMPS, LODS, MOVS, SCAS, STOS)的前缀. REP能够引发其后的字符串指令被重复, 只要ecx的值不为0, 重复就会继续. 每一次字符串指令执行后, ecx的值都会减小.


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选