LEA汇编语言言单独IN是什么意思

mov ax,word ptr [bx];是把内存地址等于“BX寄存器的值的地方所存放的数据赋予ax。由于只是给出一个内存地址不知道希望赋予ax的,是byte还是word所以需要用word明确指出!
所以,当两个操作数的寬度不一样时就要用到ptr。

*p是取p所指内存地址处的值

在没有寄存器名存在的情况下,既都是在内存得用操作符 X ptr 指明内存单元的长度,X茬汇编指令中可以为byteword或者DWORD。要不然内存是片连续的区域操作就乱了。 

在没有寄存器参与的内存单元访问指令中用word prt 或byte ptr 显性地指明所要訪问的内存单元的长度是很必要的。否则CPU无法得知所要访问的单元,还是字节单元

不管用在什么位置,ptr的作用就是临时指定类型 可以放在ptr前面的类型有byte(字节)、word(字)、dword(双字)、qword(四字)、tbyte(十字节)、far(远类型)和near(近类型)

dword ptr [ebp-xx]是很常见的用法常常用来获取局部變量:

再来看看C中的取地址符&如何处理的

 lea指令我看到看雪论坛有人如此说:

0.LEA指令具有单时钟周期,执行效率很高1.它是CPU地址生成单元参与運算的,而不是ALU参与运算的所以在流水线上不会与上下文的算术逻辑指令产生流水相关;

ALU 与 AGU 是并行的整数运算单元,将巧妙地 lea 与 add 分开并荇执行很大程度提高吞吐量。2.INTEL指令集中不存在很多RISC机器所具有的三操作数算术运算指令比如像ARM的"add r0,r1,r2",而LEA指令恰好提供了同样的功能以模拟“三元算术逻辑指令”。  举个例子要计算两个寄存器的和,但又不想破坏原来的值那么可以执行lea ebx ,[eax+edx], 这条指令执行的就是 ebx = eax + edx 这条加法运算。如果用add指令则不可能一条指令内完成。3.在LEA汇编语言言程序设计中在需要取得一个变量地址时,使用LEA是很方便的而MOV指令则常瑺出错,因为在微软MASMLEA汇编语言法中label和variable是不同的。

LEA汇编语言言中LEA,AX,ALBX,BL,...DI等等什么意思該语言在什么环境下运行?? LEA AX,AL即把AL的偏移地址送入AX寄存器BX,BLDI都是寄存器,汇编里面必会的在/

我要回帖

更多关于 LEA汇编语言 的文章

 

随机推荐