-
-
[原创]LEA指令的疑惑
-
发表于:
2007-2-4 10:40
10810
-
LEA interl指令集中的解释是 Load Effect Address
但实际用起来有些费解,似乎更像是传值而不是传址
假设 eax=1
LEA eax [eax+eax*4] 结果为什么是 eax=5呢?
难道the Address of [eax+eax*4] =5吗?
===================
下面是google搜到的,看不太明白,请哪位一起给解释一下,菜鸟感激不尽
能否详细说明LEA的功能
我对老师讲的指令系统和程序设计不理解,能不能用一种简单意懂的方法教我.就如:"设BX=0328H,SI=023CH,执行LEA BX,[BX+SI+0F54H]后,BX的内容是什么?
回复:
需要正确理解LEA指令的功能。
该指令有两个操作数。左边是目的操作数,表示操作结果保存在此,该指令目的操作数只能是8个通用寄存器之一。逗号右边的是源操作数,该指令的源操作数只能是一个存储单元,表达存储单元有多种寻址方式。
LEA指令的功能是将源操作数、即存储单元的有效地址(偏移地址)传送到目的操作数。
示例指令中,[BX+SI+0F54H]采用相对基址变址的寻址方式表达存储单元,它表示的存储单元的有效地址是:BX内容加SI内容加0F54H。这个结果被传送到BX中。
是否是很烦琐?
该指令涉及了多个基本知识点,尤其是存储器寻址方式。问题很有可能是前面的内容并没有真正理解和掌握。
这是汇编语言程序设计课程的一个特点,知识点点滴滴,需要静心学习。
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课