. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->汇编语言学习交流区
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  PUSH   [EAX] 指令的疑问  [待解决] 回复[ 1次 ]   点击[ 340次 ]  
jedcai
[帖 主]   [ 发表时间:2008-09-13 10:27 ]   [引用]   [回复]   [ top ] 
荣誉值:5
信誉值:5
注册日期:2007-11-03 11:40
PUSH   [EAX] 指令的疑问:该指令为386及其后继机型可用的32位指令,它可把DS段中以EAX内容为指针所指向的存储单位内容进入堆栈,指令执行后ESP内容应减4,仍指向但前栈顶。

我的疑问就是,EAX是32位指令没错,但[EAX]是寄存器间接寻址方式,所以[EAX]指向的是一个存储单元,那么如何得知它是一个字还是二个字呢?PUSH [EAX] 与PUSH [BX]的区别在哪里?

附:MOVSX EDX,[EDI] : 该指令把DS段中由EDI 内容指定地址的16位数 符号扩展位32位数,送到EDX寄存器中。 
这里的[EAX]为什么是16位数?
mouse
[第1楼]   [ 回复时间:2008-10-07 14:00 ]   [引用]   [回复]   [ top ] 
荣誉值:472
信誉值:12
注册日期:2007-10-16 15:34
那么如何得知它是一个字还是二个字呢?
--------------------------
push [bx]是两个字节,原因是push,这个知识点参看王爽老师的汇编语言第三章。

PUSH [EAX] 与PUSH [BX]的区别在哪里?
----------
期待楼主比较一下:-)

后面的附问题不用说了,其实也就是前面的问题。

涉及数据的指令的执行,肯定要问数据在哪?要处理的数据有多长。这个参看第八章。
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved