. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->寄存器(内存访问)
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  第三章问题3.10  [待解决] 回复[ 17次 ]   点击[ 726次 ]  
zhangyaqi
[帖 主]   [ 发表时间:2010-02-26 10:25 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-02-09 02:39
第三章问题3.10补全代码的题目,按照王老师的答案调试通不过,执行2条指令后总出现program terminated normally(程序正常终止),再执行的时候就退出debug了.
versaariel
[第1楼]   [ 回复时间:2010-02-26 12:50 ]   [引用]   [回复]   [ top ] 
荣誉值:62
信誉值:0
注册日期:2009-12-03 13:14
代码贴出来看看吧
zhangyaqi
[第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
versaariel
[第3楼]   [ 回复时间:2010-02-26 20:48 ]   [引用]   [回复]   [ top ] 
荣誉值:62
信誉值:0
注册日期:2009-12-03 13:14
mov sp,2->mov sp,100
zhangyaqi
[第4楼]   [ 回复时间:2010-02-28 02:22 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-02-09 02:39
对了,为什么呢?
likeineedyou
[第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


期待有人解答、
nevergiveup
[第6楼]   [ 回复时间:2010-03-13 11:54 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-03-09 16:08
楼上的问题怎么没人回答啊,我也遇到同样的问题!!!楼上的哥们解决了吗?
wh98765
[第7楼]   [ 回复时间:2010-05-14 23:18 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-05-09 12:31
是呀。。有人来解决下不呀。。
yangtsefisher
[第8楼]   [ 回复时间:2010-05-18 15:56 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-01-12 11:05
在我的机子上也遇到同样的问题!
执行到
mov ax,2266
的时候,第一次是异常退出,后面几次会导致CPU(双核)增大至50%..

期待高手解答
liuquanhao7232
[第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 选择“关闭”终止应用程序。
wenjie
[第10楼]   [ 回复时间:2010-07-29 11:43 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-07-23 22:20
是啊,希望有高手帮忙告诉一下,我的也是执行到mov ax,2266的时候弹出那个错误的框框。
wenjie
[第11楼]   [ 回复时间:2010-07-29 23:32 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-07-23 22:20
嗯,刚看了第5章的内容,里面有讲了一下,可能是在1000:2H这个内存单元中存放的是系统重要数据,改写了那里的数据会导致系统死机,详见第5章,在128页
jaguaer
[第12楼]   [ 回复时间:2010-08-22 09:56 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-08-20 12:42
我的情况和你们一样,sp=1、2、3、4、5的情况下debug都会退出,改为0,或者6就可以执行,其他的还没有测试。
jaguaer
[第13楼]   [ 回复时间:2010-08-22 10:04 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-08-20 12:42
不仅仅是1000:2这个位置要退出,我随便改到5000:2,aaaa:2,debug都会退出。
jaguaer
[第14楼]   [ 回复时间:2010-08-22 18:44 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-08-20 12:42
现在大概知道了,因为debug的中断机制,需要现场保护,所以栈内至少要有六个字节来保存cs、ip和标志寄存器的数据。
tulip784461422
[第15楼]   [ 回复时间:2010-10-29 14:56 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-03-08 11:29
同意楼上的说法,提醒楼主在用到栈的时候注意一下。否则就会发生楼主所说的情况,汇编程序也得不到正确的执行。
20085617
[第16楼]   [ 回复时间:2010-11-06 19:56 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:0
注册日期:2010-11-01 15:17
同意14楼的说法,-t指令运行时,为了保护数据,cpu先将标志寄存器中的数据进栈,再将cs进栈然后将ip进栈!所以栈开的不够多就会报错
ugene
[第17楼]   [ 回复时间:2010-11-09 16:02 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-11-09 15:48
同意楼上
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved