. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->寄存器(内存访问)
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  PUSH、POP操作的不是16位的数据吗?  [待解决] 回复[ 8次 ]   点击[ 486次 ]  
cutebe
[帖 主]   [ 发表时间:2013-05-28 12:39 ]   [引用]   [回复]   [ top ] 
荣誉值:4
信誉值:0
注册日期:2010-01-27 19:28
PUSH AX        ;AX是16位的寄存器
POP DS        ;段寄存器也是16位的

所以PUSH [0]        ;操作的也应该是字单元罢!

前面有字单元是16位,等于2个内存单元
cutebe
[第1楼]   [ 回复时间:2013-05-28 12:41 ]   [引用]   [回复]   [ top ] 
荣誉值:4
信誉值:0
注册日期:2010-01-27 19:28
忘了描述出处了,如下:
P67 疑问
“如何使 PUSH AX 访问的内存单元是10000H”
yunzhuo
[第2楼]   [ 回复时间:2013-06-02 00:00 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2013-05-05 20:45
字单元数据入栈
capitelation
[第3楼]   [ 回复时间:2013-06-26 18:19 ]   [引用]   [回复]   [ top ] 
荣誉值:18
信誉值:0
注册日期:2013-06-25 18:18
就是入栈操作啊 那就得指定cs:ip的位置不就可以了吗。书上讲的很明白啊。因为该指令 PUSH AX读取后,ip就变了。所以将ip设为0002H。
capitelation
[第4楼]   [ 回复时间:2013-06-26 18:20 ]   [引用]   [回复]   [ top ] 
荣誉值:18
信誉值:0
注册日期:2013-06-25 18:18
push当然是操作的16位数据了 你说访问的内存单元 是20位的内存单元的地址 不是数据。数据仍然是16位的。
alexc
[第5楼]   [ 回复时间:2015-01-13 23:48 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2015-01-12 22:00
你的意思是把ax的数据放到内存地址10000的位置是吧
代码:
mov ax,1000
mov ss,ax
mov sp,0002
push ax
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved