社区
汇编语言
帖子详情
请问下汇编中MOV和LEA的区别是什么
linhuz
2009-09-21 06:08:14
如题 感觉MOV和LEA功能差不多,刚学汇编
...全文
11340
15
打赏
收藏
请问下汇编中MOV和LEA的区别是什么
如题 感觉MOV和LEA功能差不多,刚学汇编
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
zhangwenfeng12345
2010-04-20
打赏
举报
回复
很好 受教了
Lizichuan1996
2009-10-12
打赏
举报
回复
不错 ,受教了
Guilty
2009-10-08
打赏
举报
回复
[Quote=引用 10 楼 lonelyboysvc 的回复:]
引用 9 楼 guilty 的回复:
6楼说的也不太准确,很多情况是LEA就是MOV一样,不一定和就地址有关,可以用做+计算
那在什么情况下,是用做+运算呢?
[/Quote]
比如说:LEA EAX,[EBX+ECX*2+1]
等效于:
MOV EAX, EBX
ADD EAX, ECX
ADD EAX, ECX
ADD EAX, 1
所以可以说LEA就是一种MOV,所有LEA可以用MOV+ADD取代,但反过来说就不正确,读写内存的MOV指令并不能用LEA取代
dbgchen
2009-10-08
打赏
举报
回复
[Quote=引用 9 楼 guilty 的回复:]
6楼说的也不太准确,很多情况是LEA就是MOV一样,不一定和就地址有关,可以用做+计算
[/Quote]
那在什么情况下,是用做+运算呢?
Guilty
2009-10-08
打赏
举报
回复
6楼说的也不太准确,很多情况是LEA就是MOV一样,不一定和就地址有关,可以用做+计算
dbgchen
2009-10-08
打赏
举报
回复
6楼说的正确
Guilty
2009-10-08
打赏
举报
回复
[Quote=引用 12 楼 guilty 的回复:]
本来LEA是很容易理解的,就是MOV和ADD、SHL的组合,但是成天有人问,本版可能是第800次出现这个问题了吧?
究其原因,吃屎的8086汇编语言设计者负有很大责任,LEA后面跟[]的语法太愚蠢了,造成N多误会费大家N多口水,
语法上把[]就好了,少敲键盘程序也整洁易读。
[/Quote]
语法上把[]去掉就好了,少敲键盘程序也整洁易读。
Guilty
2009-10-08
打赏
举报
回复
本来LEA是很容易理解的,就是MOV和ADD、SHL的组合,但是成天有人问,本版可能是第800次出现这个问题了吧?
究其原因,吃屎的8086汇编语言设计者负有很大责任,LEA后面跟[]的语法太愚蠢了,造成N多误会费大家N多口水,
语法上把[]就好了,少敲键盘程序也整洁易读。
veranh
2009-10-06
打赏
举报
回复
新手,来学习!
a5796489
2009-09-30
打赏
举报
回复
3
lea传的是地址
mov传的是值
举个例子:
mov eax,[00400000]
传的是地址400000这个地址里的值,假设400000这个地址中的值是100,那么eax寄存器中的值就为100
lea eax,[00400000]
那么eax寄存器中的值就是400000
LAISHUAN001
2009-09-27
打赏
举报
回复
4
lea传送的是寄存器里面的值,mov传送的是主存中以寄存器的值为地址里面的值。
例如。
leal 8(%eax),%ecx
movl 8(%eax) ,%ecx
这样,两条指令,传送的值是不一样的
leal 是传送 8+%eal(值)到 寄存器%ecx
movl 是传送的是在主存中以8+%eax为地址的存储序列里面存的值到%ecx。
anjie4402211
2009-09-22
打赏
举报
回复
我觉得LEA 就像C中的 取地址& ,当源操作数是在内存的时候
传参时
mov 寄存器,offset 变量名
比用LEA快
dlpzgr
2009-09-21
打赏
举报
回复
LEA BX,list
MOV BX,OFFSET list
等价的,但是OFFSET后面不能跟复杂的寻址方式
shenshunxiao
2009-09-21
打赏
举报
回复
支持
killbug2004
2009-09-21
打赏
举报
回复
mov是将数据从源操作传到目的操作数中
lea是将源操作数的地址传到目的操作数中
一个是数据,一个是地址
lea指令只有一个周期,某些编译器会使用lea来优化加法等操作
汇编
语言-在线第4周1.pptx
在编写
汇编
代码时,熟练掌握`
MOV
`和`
LEA
`指令对于高效地管理数据至关重要。它们是构建复杂程序和优化性能的基础,尤其是在需要精确控制内存访问和计算内存地址的场合。理解这些指令的工作原理和用途,可以帮助开发者...
汇编
语言-在线第4周1.pdf
《
汇编
语言
中
的数据传送与
LEA
指令...`
MOV
`和`
LEA
`指令的结合使用,使得程序员能够高效地管理内存和寄存器
中
的数据,从而实现复杂的计算和控制逻辑。理解并熟练掌握这些指令,是深入学习
汇编
语言和底层系统编程的关键。
汇编
打字游戏
MOV
AX, DATA
MOV
DS, AX
MOV
CX, 10
MOV
SI, 0 LP:
LEA
DX, N CALL PRINT
MOV
DX, [STR+SI] CALL PRINT
LEA
DX, N CALL PRINT
LEA
DX, MSG CALL PRINT SCANF BUF
LEA
DX, N CALL PRINT
MOV
DX, ...
经典
汇编
程序实例21例
start:
mov
ax,data
mov
ds,ax
lea
dx,infon ;在屏幕上显示提示信息
mov
ah,9 int 21h
lea
dx,buf ;从键盘输入年份字符串
mov
ah,10 int 21h
mov
cl, [buf+1]
lea
di,buf+2 call datacate call ...
人机对话
汇编
源代码
汇编
语言编写的人机对话小程序。
mov
ax,data
mov
ds,ax
lea
dx,msg1 ;ti shi yonghu shu ru name
mov
ah,9 int 21h
lea
dx,msg
mov
ah,9 int 21h
汇编语言
21,498
社区成员
41,617
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章