|
主题 : : 第三章问题3.10 [待解决] |
回复[ 17次 ]
点击[ 726次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2010-02-26 10:25 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-02-09 02:39 |
第三章问题3.10补全代码的题目,按照王老师的答案调试通不过,执行2条指令后总出现program terminated normally(程序正常终止),再执行的时候就退出debug了. | | |
|
|
|
|
[第1楼]
[ 回复时间:2010-02-26 12:50 ]
[引用]
[回复]
[ top ] | |
荣誉值:62
信誉值:0
注册日期:2009-12-03 13:14 |
|
|
|
|
|
[第2楼]
[ 回复时间:2010-02-26 16:11 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-02-09 02:39 |
代码如下:
mov ax,1000h
mov ss,ax
mov sp,2
mov ax,2266h
push ax | | |
|
|
|
|
[第3楼]
[ 回复时间:2010-02-26 20:48 ]
[引用]
[回复]
[ top ] | |
荣誉值:62
信誉值:0
注册日期:2009-12-03 13:14 |
|
|
|
|
|
[第4楼]
[ 回复时间:2010-02-28 02:22 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-02-09 02:39 |
|
|
|
|
|
[第5楼]
[ 回复时间:2010-03-12 01:05 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-02-01 17:27 |
同样问题、
mov ax,1000h
mov ss,ax
mov sp,0002h
mov ax,2266h :在运行该指令后debug程序正常终止
push ax
期待有人解答、 | | |
|
|
|
|
[第6楼]
[ 回复时间:2010-03-13 11:54 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-03-09 16:08 |
楼上的问题怎么没人回答啊,我也遇到同样的问题!!!楼上的哥们解决了吗? | | |
|
|
|
|
[第7楼]
[ 回复时间:2010-05-14 23:18 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-05-09 12:31 |
|
|
|
|
|
[第8楼]
[ 回复时间:2010-05-18 15:56 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-01-12 11:05 |
在我的机子上也遇到同样的问题!
执行到
mov ax,2266
的时候,第一次是异常退出,后面几次会导致CPU(双核)增大至50%..
期待高手解答 | | |
|
|
|
|
[第9楼]
[ 回复时间:2010-07-21 19:46 ]
[引用]
[回复]
[ top ] | |
荣誉值:8
信誉值:0
注册日期:2010-07-12 08:47 |
我的是弹出一个框框。。
命令提示符-debug
NTVDM CPU 遇到无效的指令
CS:13b4 IP:a4f7 OP:63 21 00 01 00 选择“关闭”终止应用程序。 | | |
|
|
|
|
[第10楼]
[ 回复时间:2010-07-29 11:43 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-07-23 22:20 |
是啊,希望有高手帮忙告诉一下,我的也是执行到mov ax,2266的时候弹出那个错误的框框。 | | |
|
|
|
|
[第11楼]
[ 回复时间:2010-07-29 23:32 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-07-23 22:20 |
嗯,刚看了第5章的内容,里面有讲了一下,可能是在1000:2H这个内存单元中存放的是系统重要数据,改写了那里的数据会导致系统死机,详见第5章,在128页 | | |
|
|
|
|
[第12楼]
[ 回复时间:2010-08-22 09:56 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-08-20 12:42 |
我的情况和你们一样,sp=1、2、3、4、5的情况下debug都会退出,改为0,或者6就可以执行,其他的还没有测试。 | | |
|
|
|
|
[第13楼]
[ 回复时间:2010-08-22 10:04 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-08-20 12:42 |
不仅仅是1000:2这个位置要退出,我随便改到5000:2,aaaa:2,debug都会退出。 | | |
|
|
|
|
[第14楼]
[ 回复时间:2010-08-22 18:44 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-08-20 12:42 |
现在大概知道了,因为debug的中断机制,需要现场保护,所以栈内至少要有六个字节来保存cs、ip和标志寄存器的数据。 | | |
|
|
|
|
[第15楼]
[ 回复时间:2010-10-29 14:56 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-03-08 11:29 |
同意楼上的说法,提醒楼主在用到栈的时候注意一下。否则就会发生楼主所说的情况,汇编程序也得不到正确的执行。 | | |
|
|
|
|
[第16楼]
[ 回复时间:2010-11-06 19:56 ]
[引用]
[回复]
[ top ] | |
荣誉值:2
信誉值:0
注册日期:2010-11-01 15:17 |
同意14楼的说法,-t指令运行时,为了保护数据,cpu先将标志寄存器中的数据进栈,再将cs进栈然后将ip进栈!所以栈开的不够多就会报错 | | |
|
|
|
|
[第17楼]
[ 回复时间:2010-11-09 16:02 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2010-11-09 15:48 |
|