. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->寄存器(内存访问)
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  检测点3.2 执行不下去  [待解决] 回复[ 13次 ]   点击[ 626次 ]  
huacam
[帖 主]   [ 发表时间:2010-09-29 10:41 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-11-17 23:00
-d 1000:0 f
1000:0000  23 01 66 22 AA BB CC DD-EE FF 55 66 77 88 33 11   #.f"......Ufw.3.
-d 2000:0 f
2000:0000  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00

-a
0AFC:0100 mov ax,1000
0AFC:0103 mov ds,ax
0AFC:0105 mov bx,2000
0AFC:0108 mov ss,bx
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]
0AFC:0129 push [e]


我执行到push [a]还可以,再往下执行就跳出个什么对话框了,不知道为什么
masmaster
[第1楼]   [ 回复时间:2010-09-29 22:37 ]   [引用]   [回复]   [ top ] 
荣誉值:268
信誉值:12
注册日期:2010-06-18 22:19
栈小。 因为debug单步中断,也需要用到栈,所以,把sp适当设大一点就可以啦。
84404037
[第2楼]   [ 回复时间:2010-10-05 18:37 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-09-25 21:54
16位了,超出了。
ugene
[第3楼]   [ 回复时间:2010-11-09 16:22 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-11-09 15:48
将栈空间设大一些就行了  1楼正解
lolmuta
[第4楼]   [ 回复时间:2011-07-24 08:54 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-07-04 17:09
栈小。 因为debug单步中断,也需要用到栈,所以,把sp适当设大一点就可以啦!

SP =10
push [0] SP= E
push [2] SP= C
push [4] SP= A
push [6] SP=8
push [8] SP=6
push [A] SP= 4
push [C]------>错误!!

SP最小只能为4
不知道若SP=- 2会是什么结果,因为试验之前就因栈小被迫退出。
王爽老师是故意留下伏笔吗?
lolmuta
[第5楼]   [ 回复时间:2011-07-24 09:04 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-07-04 17:09
还有一个小问题
如果以t来执行,会发生下面状况
执行到mov ss,bx时
会直接到push [0]
虽然有执行中间的mov sp,10
但是trace硬是不秀出来。

这又是为什么呢?
yipianyipian
[第6楼]   [ 回复时间:2011-08-21 21:29 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-08-21 21:07
我也正在为此苦恼呢,补上的程序是
MOV AX,2000
MOV SS,AX
MOV SP,10

用T执行程序段,MOV SS,AX后,IP自动加5,跳到PUSH [0],强制IP指到MOV SP,10继续执行出现错误提示:16位 MS-DOS子系统
    C:\WINDOWS\SYSTEM32\CMD.EXE-DEBUG
NTVDM CPU 遇到无效的指令
CS: 00B8 IP:0246 OP:FF FF 00 00 00 选择“关闭”终止应用程序

无论如何都会出现如此错误,都迷惑了一周了!!!!
yipianyipian
[第7楼]   [ 回复时间:2011-08-21 21:31 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-08-21 21:07
题目是把10000-1000F中的8个字逆序复制到20000-2000F中!!

IP 在栈空时,肯定是10H
knightno.1
[第8楼]   [ 回复时间:2011-09-05 00:47 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:1
注册日期:2011-08-06 16:07
也许答案不是       
mov ax,2000h
mov ss,ax
mov sp,0010h
knightno.1
[第9楼]   [ 回复时间:2011-09-05 12:17 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:1
注册日期:2011-08-06 16:07
第1问答案可否如下:
mov ax,1fffh
mov ss,ax
mov sp,0020h
chinatree
[第10楼]   [ 回复时间:2011-09-05 12:39 ]   [引用]   [回复]   [ top ] 
荣誉值:118
信誉值:0
注册日期:2011-07-07 22:59
段不对了。
cf630314
[第11楼]   [ 回复时间:2011-09-22 09:09 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-09-22 09:01
栈小。 因为debug单步中断,也需要用到栈,所以,把sp适当设大一点就可以啦!

SP =10
push [0] SP= E
push [2] SP= C
push [4] SP= A
push [6] SP=8
push [8] SP=6
push [A] SP= 4
push [C]------>错误!!

SP最小只能为4
不知道若SP=- 2会是什么结果,因为试验之前就因栈小被迫退出。
王爽老师是故意留下伏笔吗?
------------------
回复:我也是在执行到这一步时,发生了报错!幸好找到了这个论坛,不然我要一直迷惑下去了!
atmbank
[第12楼]   [ 回复时间:2011-12-16 17:50 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-11-28 15:50
sp要调大到多少,我弄成001F
执行是不报错,不过,最后-D 2000:0 F 不是显示所希望的结果,为什么?
tomato
[第13楼]   [ 回复时间:2011-12-16 23:40 ]   [引用]   [回复]   [ top ] 
荣誉值:405
信誉值:0
注册日期:2008-01-19 14:51
回复12楼:
不是希望的结果,跟sp的大小应该是没关系的。在虚拟环境下确实会出现栈结果不一致的情况,这个是因为中断产生的,中断需要保存现场,跟我们的程序共用一个栈段。
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved