汇编语言中LEA指令和MOV指令的区别是什么啊?
7个回答
展开全部
MOV指令的功能是传送数据,例如MOV AX,[1000H],作用是将1000H作为偏移地址,寻址找到内存单元,将该内存单元中的数据送至AX;
LEA指令的功能是取偏移地址,例如LEA AX,[1000H],作用是将源操作数[1000H]的偏移地址1000H送至AX。理解时,可直接将[ ]去掉,等同于MOV AX,1000H。
再如:LEA BX,[AX],等同于MOV BX,AX;LEA BX,TABLE 等同于 MOV BX,OFFSET TABLE。
但有时不能直接使用MOV代替:
比如:LEA AX,[SI+6] 不能直接替换成:MOV AX,SI+6;但可替换为:
MOV AX,SI
ADD AX,6
两步完成。
LEA指令的功能是取偏移地址,例如LEA AX,[1000H],作用是将源操作数[1000H]的偏移地址1000H送至AX。理解时,可直接将[ ]去掉,等同于MOV AX,1000H。
再如:LEA BX,[AX],等同于MOV BX,AX;LEA BX,TABLE 等同于 MOV BX,OFFSET TABLE。
但有时不能直接使用MOV代替:
比如:LEA AX,[SI+6] 不能直接替换成:MOV AX,SI+6;但可替换为:
MOV AX,SI
ADD AX,6
两步完成。
展开全部
LEA指令的功能是取偏移地址,例如LEA AX,[1000H],作用是将源操作数[1000H]的偏移地址1000H送至AX;
MOV指令的功能是传送数据,例如MOV AX,[1000H],作用是将1000H作为偏移地址,寻址找到内存单元,将该内存单元中的数据送至AX。
MOV指令的功能是传送数据,例如MOV AX,[1000H],作用是将1000H作为偏移地址,寻址找到内存单元,将该内存单元中的数据送至AX。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
mov有很多很多种,格式上跟lea对应的那种是从一个内存地址(可以是很复杂的寻址模式)到一个寄存器的mov,效果是计算内存地址,然后把里面的值读出来放在寄存器里。而lea是计算内存地址,然后把内存地址本身放进寄存器里。注意有的作者(以及编译器)会利用lea指令支持的寻址模式来计算一些例如一个数乘2/4/8并且加另一个数一类的运算,所以如果你感觉计算的东西不太像个真正的内存地址,它有可能真的不是。要注意指令的名字跟它的字面意义未必符合,所以你要看手册里对指令功能的描述(intel手册有官方下载,你可以去找,不过格式跟gcc的不同; 你教材里多少也应该会写一点,记不清CSAPP里的Y86语言有没有LEA了,没有的话你得找本讲汇编的书参考一下)。比如mov其实在别的编程语言里一般不对应到“移动”而是对应到“赋值”、“拷贝”、“读取”、“写入”等操作(不同格式的mov不一样);lea名字叫load effective address,但是不要太字面地理解,它的本意是让你用各种寻址模式去算地址,实际用法就是凡是可以塞进寻址模式的计算公式里的算式都可以用它算。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
LEA指令的功能是取偏移地址,例如LEA AX,[1000H],作用是将源操作数[1000H]的偏移地址1000H送至AX;
MOV指令的功能是传送数据,例如MOV AX,[1000H],作用是将1000H作为偏移地址,寻址找到内存单元,将该内存单元中的数据送至AX。
MOV指令的功能是传送数据,例如MOV AX,[1000H],作用是将1000H作为偏移地址,寻址找到内存单元,将该内存单元中的数据送至AX。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
MOV指令是数据传送指令,LEA指令是地址传送指令
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询