社区
汇编语言
帖子详情
LEA和OFFSET的区别是什么?
forture
2004-01-02 04:24:59
RT
...全文
1978
13
打赏
收藏
LEA和OFFSET的区别是什么?
RT
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
cynic0916
2004-07-16
打赏
举报
回复
在运算速度这么快的情况下,时间已经不那么明显了
我看楼上的说的有理,现在或许也就这点不同了吧
prettyladys
2004-07-16
打赏
举报
回复
OFFSET 首先是伪指令.....其次...LEA 可以做到OFFEST 的所有功能以外.还可以寄存器送
如
LEA AX,BX 对的。
MOV AX,OFFSET BX 是错的
longsong
2004-01-20
打赏
举报
回复
现在的CPU对执行lea和mov offset指令的速度应该是一样快了。
jrjj
2004-01-02
打赏
举报
回复
lea可以用基址、变址...寻址,offset则只能用mem,offset是由汇编程序实现,而lea是在程序运行时由指令实现,所以在程序中才可得到的地址时只能用lea,如果在汇编时可得到地址则用offset,毕竟指令短,又是由汇编程序操作,程序执行时可直接使用得到的地址。
csdsjkk
2004-01-02
打赏
举报
回复
一般来说,
mov reg,offset xxx 比 lea reg,xxx 的指令长度少一个字节,且快一个时钟,
因此,应优先选用 mov offset 指令,
lea的优势真正体现在这个方面:
计算两个寄存器的和并放入另一个寄存器中
比如
lea ax,[bx+di+100]
比
mov ax,bx
add ax,di
add ax,100
高效得多
fuzq
2004-01-02
打赏
举报
回复
两个都是传地址
正如易水所说,lea使用更加灵活
whoho
2004-01-02
打赏
举报
回复
回复人: sundytu(晶晶) ( ) 信誉:100 2004-01-02 15:25:00 得分:0
都说得不对啊。
lea是真正的汇编指令,它对应于一个机器码,而offset只是一个给汇编程序的关键字,它要求汇编程序在汇编时算出相应的地址偏移,也就是说它对应的操作数必须是一个汇编程序知道的变量或者标量!而lea却可以算出任何形式的地址偏移!这才是它们真正的区别哟。
=>offset的确不是指令,mov offset汇编前会被替换成真正的mov,同意
但别人怎么错了?:)
Areslee
2004-01-02
打赏
举报
回复
LEA的使用更加灵活,比如可以这样用:
lea BX,[Value+DI]
bullet2003
2004-01-02
打赏
举报
回复
楼上说的是不是指offset是masm的伪指令?
sunny
2004-01-02
打赏
举报
回复
都说得不对啊。
lea是真正的汇编指令,它对应于一个机器码,而offset只是一个给汇编程序的关键字,它要求汇编程序在汇编时算出相应的地址偏移,也就是说它对应的操作数必须是一个汇编程序知道的变量或者标量!而lea却可以算出任何形式的地址偏移!这才是它们真正的区别哟。
csdsjkk
2004-01-02
打赏
举报
回复
"lea ax, str ;如果用mov offset出错"
局部变量str在汇编里是象这样的:
[bp-xxxx]
当然不能写成
mov ax,offset [bp-xxxx] ;语法错
因此,必须写成
lea ax,[bp-xxxx] ,即 lea ax,str
whoho
2004-01-02
打赏
举报
回复
例如嵌入汇编中
#inlude <stdio.h>
int main()
{
int u=3;
char *str="%d";
__asm{
push u
lea ax, str ;如果用mov offset出错
call _printf
add esp, 8
}
whoho
2004-01-02
打赏
举报
回复
例如嵌入汇编中
#inlude <stdio.h>
int main()
{
int u=3;
char *str="%d";
__asm{
push u
lea ax, str ;如果用mov offset出错
call _printf
微型计算机原理考试题答案.pdf
微型计算机原理考试题答案.pdf
汇编实验程序代码 字符串匹配 排序 bios dos
肯定让你不会后悔。。 .MODEL SMALL .STACK .DATA STRING1 DB 'THE FIRST:','$' STRING2 DB 'THE SECOND:','$' STR1 DB 'MATCH','$' STR2 DB 'NOTMATCH','$' BUF1 DB 30,?,30 DUP(?) BUF2 DB 30,?,30 DUP(?) CRLF DB 0AH,0DH,'$' X DW 0000H .CODE .STARTUP MOV DX,
OFFSET
STRING1 MOV AH,9 INT 21H MOV DX,
OFFSET
BUF1 MOV AH,0AH INT 21H MOV DX,
OFFSET
CRLF MOV AH,9 INT 21H MOV DX,
OFFSET
STRING2 MOV AH,9 INT 21H MOV DX,
OFFSET
BUF2 MOV AH,0AH INT 21H MOV DX,
OFFSET
CRLF MOV AH,9 INT 21H MOV CL,BUF1+1 MOV AH,BUF2+1 CMP CL,AH JA BJ1 MOV CL,BUF2+1 MOV AH,BUF1+1
LEA
SI,BUF2+2
LEA
DI,BUF1+2 。 。 。 。 。 。
汇编语言期末复习知识点总结
汇编语言期末复习知识点总结,全是个人总结,仅供参考,pdf一共有31页。
汇编子程序收集.pdf
汇编子程序收集.pdf
《PLC控制技术AR版》配套课后习题:任务06-邮件分拣机.docx
《PLC控制技术AR版》配套课后习题:任务06-邮件分拣机.docx
汇编语言
21,497
社区成员
41,618
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章