. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->寄存器(内存访问)
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  检测点3.2的问题  [已解决] 回复[ 5次 ]   点击[ 479次 ]  
qddzj
[帖 主]   [ 发表时间:2011-01-29 13:12 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:6
注册日期:2010-10-23 04:24
mov ax,1000h 
mov ds,ax       以上两条指令是设置数据段的段地址为1000H 
mov ax,2000H 
mov ss,ax       以上两条指令是设置栈段的段地址为2000H 
mov sp,10       设置栈顶的偏移地址,因栈为空,所以SP=0010H 
push [0]        将1000:0处的字压入栈中 
push [2]        将1000:2处的字压入栈中 
push [4]        将1000:4处的字压入栈中 
push [6]        将1000:6处的字压入栈中 
push [8]        将1000:8处的字压入栈中 
push [A]        将1000:A处的字压入栈中 
push [C]        将1000:C处的字压入栈中 
push [E]        将1000:E处的字压入栈中 
CUP是怎样知道在1000:0处开始拿数据的?CPU执行PUSH 【0】时,CPU是取SS中的数据为段地址,SP的为偏移地址,我就是搞不懂CPU执行PUSH 【0】时为什么知道在1000:0开始拿数据压到SS:SP中。
yinmei159
[第1楼]   [ 回复时间:2011-01-29 19:36 ]   [引用]   [回复]   [ top ] 
荣誉值:8
信誉值:0
注册日期:2011-01-29 19:28
我也是新手,我是这么理解的不知道对不,当CPU执行到PUSH [0]时,PUSH是个栈压入的命令,上面已经设置了栈,而[0]这个里面的0是个内存单元的偏移地址,而CPU要取里面的数据得先找段地址,内存单元段地址存放在DS里面,貌似说得又明白又不明白,嘿嘿
qddzj
[第2楼]   [ 回复时间:2011-01-30 10:41 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:6
注册日期:2010-10-23 04:24
还是不明白晕咯
character_w
[第3楼]   [ 回复时间:2011-02-01 11:49 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:4
注册日期:2011-01-29 19:28
mov sp,10       设置栈顶的偏移地址,因栈为空,所以SP=0010H  
=====================================================
我是新手,我想问一下, mov sp,10  这里的10是十进制吧,请问和0010H有什么区别?
qddzj
[第4楼]   [ 回复时间:2011-02-02 07:06 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:6
注册日期:2010-10-23 04:24
回复:[第3楼]
------------------
mov sp,10这里的10不是十进制,是十六进制是0010H,4个十六进制,一位十六进制代表4位二进制,你那里说的10其实只是没写H而已,10H=0010H,不知道我说的帮不帮到你,如果说错了请各位指正。
qddzj
[第5楼]   [ 回复时间:2011-02-02 07:08 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:6
注册日期:2010-10-23 04:24
此贴由 贴主 于 [ 2011-02-02 07:08 ] 结贴。 结贴原因:问题已解决
得分情况: 1楼(yinmei159):8分  
此问题已结贴!
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved