|
主题 : : 检测点3.2 执行不下去 [待解决] |
回复[ 13次 ]
点击[ 626次 ] | |
|
|
|
|
[帖 主]
[ 发表时间: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]还可以,再往下执行就跳出个什么对话框了,不知道为什么 | | |
|
|
|
|
[第1楼]
[ 回复时间:2010-09-29 22:37 ]
[引用]
[回复]
[ top ] | |
荣誉值:268
信誉值:12
注册日期:2010-06-18 22:19 |
栈小。 因为debug单步中断,也需要用到栈,所以,把sp适当设大一点就可以啦。 | | |
|
|
|
|
[第2楼]
[ 回复时间:2010-10-05 18:37 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-09-25 21:54 |
|
|
|
|
|
[第3楼]
[ 回复时间:2010-11-09 16:22 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-11-09 15:48 |
|
|
|
|
|
[第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会是什么结果,因为试验之前就因栈小被迫退出。
王爽老师是故意留下伏笔吗? | | |
|
|
|
|
[第5楼]
[ 回复时间:2011-07-24 09:04 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-07-04 17:09 |
还有一个小问题
如果以t来执行,会发生下面状况
执行到mov ss,bx时
会直接到push [0]
虽然有执行中间的mov sp,10
但是trace硬是不秀出来。
这又是为什么呢? | | |
|
|
|
|
[第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 选择“关闭”终止应用程序
无论如何都会出现如此错误,都迷惑了一周了!!!! | | |
|
|
|
|
[第7楼]
[ 回复时间:2011-08-21 21:31 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-08-21 21:07 |
题目是把10000-1000F中的8个字逆序复制到20000-2000F中!!
IP 在栈空时,肯定是10H | | |
|
|
|
|
[第8楼]
[ 回复时间:2011-09-05 00:47 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:1
注册日期:2011-08-06 16:07 |
也许答案不是
mov ax,2000h
mov ss,ax
mov sp,0010h | | |
|
|
|
|
[第9楼]
[ 回复时间:2011-09-05 12:17 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:1
注册日期:2011-08-06 16:07 |
第1问答案可否如下:
mov ax,1fffh
mov ss,ax
mov sp,0020h | | |
|
|
|
|
[第10楼]
[ 回复时间:2011-09-05 12:39 ]
[引用]
[回复]
[ top ] | |
荣誉值:118
信誉值:0
注册日期:2011-07-07 22:59 |
|
|
|
|
|
[第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会是什么结果,因为试验之前就因栈小被迫退出。
王爽老师是故意留下伏笔吗?
------------------
回复:我也是在执行到这一步时,发生了报错!幸好找到了这个论坛,不然我要一直迷惑下去了! | | |
|
|
|
|
[第12楼]
[ 回复时间:2011-12-16 17:50 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-11-28 15:50 |
sp要调大到多少,我弄成001F
执行是不报错,不过,最后-D 2000:0 F 不是显示所希望的结果,为什么? | | |
|
|
|
|
[第13楼]
[ 回复时间:2011-12-16 23:40 ]
[引用]
[回复]
[ top ] | |
荣誉值:405
信誉值:0
注册日期:2008-01-19 14:51 |
回复12楼:
不是希望的结果,跟sp的大小应该是没关系的。在虚拟环境下确实会出现栈结果不一致的情况,这个是因为中断产生的,中断需要保存现场,跟我们的程序共用一个栈段。 | | |