博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
汇编中中括号[]作用以及lea和mov指令的区别
阅读量:5299 次
发布时间:2019-06-14

本文共 724 字,大约阅读时间需要 2 分钟。

现在总结一下:其中牵扯到lea指令,mov指令,[]

一.lea指令: 对于寄存器来说:第二个操作数是寄存器必须要加[],不然报错,这里lea就是取[寄存器]的值,

如:

mov eax,2

lea ebx,[eax];

执行后ebx=2

mov ebx,eax;等同于上句 lea ebx,eax;

器报错: error A2070: invalid instruction operands

对于变量来说加不加[]都是一样的效果,都是取变量的地址,相当于指针

如:

num dword 2 lea ebx,

num lea eax,[num];

eax为num的地址,

如eax=4206598,随不同不同,这时ebx==eax

二.mov指令:

对于变量来说

num dword 2

mov eax,2

mov ebx,num

mov ecx,[num];

执行完ebx==ecx==2

对寄存器 mov ebx,eax;ebx==2 mov ecx,[eax];可能会报错,因为这里翻译成汇编是mov ecx,DS:[eax]
总的说来加不加中括号[]的区别就是: lea对变量没有影响是取地址,对寄存器来说加[]时取值,第二操作数不加[]非法

mov对变量来说没有影响是取值,对寄存器来说是加[]时取地址,第二操作数不加[]是取值

 

还有一点这里顺便说下,看有的教程说mov指令不支持mov ebx,[eax+2*eax......什么乱七八糟的表达式]归根结底就是对于mov来说当第二个操作数是寄存器的时候如果加上[]就是寻址了....

转载于:https://www.cnblogs.com/gaolong/p/4900619.html

你可能感兴趣的文章
VSCODE更改文件时,提示:EACCES: permission denied的解决办法(mac电脑系统)
查看>>
web前端之路,js的一些好书(摘自聂微东 )
查看>>
【模板】对拍程序
查看>>
Pycharm安装Markdown插件
查看>>
【转】redo与undo
查看>>
C#更新程序设计
查看>>
解决升级系统导致的 curl: (48) An unknown option was passed in to libcurl
查看>>
Java Session 介绍;
查看>>
spoj TBATTLE 质因数分解+二分
查看>>
Django 模型层
查看>>
dedecms讲解-arc.listview.class.php分析,列表页展示
查看>>
Extjs6 经典版 combo下拉框数据的使用及动态传参
查看>>
【NodeJS】http-server.cmd
查看>>
研磨JavaScript系列(五):奇妙的对象
查看>>
面试题2
查看>>
selenium+java iframe定位
查看>>
P2P综述
查看>>
第五章 如何使用Burp Target
查看>>
Sprint阶段测试评分总结
查看>>
sqlite3经常使用命令&语法
查看>>