. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->寄存器(内存访问)
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  检测3.2第一题问题  [已解决] 回复[ 4次 ]   点击[ 424次 ]  
zen_z
[帖 主]   [ 发表时间:2010-10-22 03:40 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:2
注册日期:2010-10-14 02:01
自己填的三个空为:
mov ax,2000
mov ss,ax
mov sp,10
在网上查了,很多答案也是这个没错..
但debug
0AFC:0100 mov ax,1000 
0AFC:0103 mov ds,ax 
0AFC:0105 mov ax,2000 
0AFC:0108 mov ss,ax 
0AFC:010A mov sp,10 
0AFC:010D push [0] 
0AFC:0111 push [2] 
0AFC:0115 push [4] 
0AFC:0119 push [6] 
0AFC:011D push [8] 
0AFC:0121 push [a] 这里都是正常的

0AFC:0125 push [c] 当T这一条的时候就直接退出了debug到了C:\>
                   到这条指令时sp为004,为什么会一下就退出来了.有人说是栈小了..小弟就不懂了..
                   sp明明才到004还能-2,还未到0
                   (后来我把mov sp,10改为mov sp,0,,,,后..在fff0到ffff中可以把1000:0中的
                      数据逆回来,而且sp递减也正常..逆完后.sp为fff0)

0AFC:0129 push [e] 

求解 mov sp 10时为什么会在0AFC:0125 push [c]这一条出错.....
zfuke
[第1楼]   [ 回复时间:2010-10-22 13:55 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:0
注册日期:2010-10-22 13:31
我觉得mov sp,10 应该是 mov sp,11
因为是以字为单位的
masmaster
[第2楼]   [ 回复时间:2010-10-22 16:08 ]   [引用]   [回复]   [ top ] 
荣誉值:268
信誉值:12
注册日期:2010-06-18 22:19
因为debug也是程序,他在单步调试的时候也会用到栈。解决的方法是把sp适当加大即可。
zen_z
[第3楼]   [ 回复时间:2010-10-22 16:29 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:2
注册日期:2010-10-14 02:01
唉...debug太误人子弟了..加大了...这样就会出现书面答案不准的现象....谢谢两位
zen_z
[第4楼]   [ 回复时间:2010-10-22 18:15 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:2
注册日期:2010-10-14 02:01
此贴由 贴主 于 [ 2010-10-22 18:15 ] 结贴。 结贴原因:问题已解决
得分情况: 1楼(zfuke):2分   2楼(masmaster):4分  
此问题已结贴!
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved