| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2047 人关注过本帖
标题:王爽《汇编语言》 第四章 实验3 的问题?
取消只看楼主 加入收藏
guancracker
Rank: 1
等 级:新手上路
威 望:1
帖 子:27
专家分:0
注 册:2007-5-14
收藏
 问题点数:0 回复次数:4 
王爽《汇编语言》 第四章 实验3 的问题?
assume cs:codesg
codesg segment
mov ax,2000h
mov ss,ax
mov sp,0
add sp,4
pop ax
pop bx
push ax
push bx
pop ax
pop bx
mov ax,4c00h
int 21h
codesg ends
end
把上面的程序保存为QQ.ASM文件,将其生成QQ.EXE 这个我会。
下面问题来了。
用DEBUG 跟踪 QQ.EXE 的执行过程,(即在CMD下bebug qq.exe 然后,T单步 查看寄存器和栈顶的内容)
TT单步执行 pop ax 时,出现 NTVDM CPU 遇到无效指令 对话框。
这是什么原因啊????
搜索更多相关主题的帖子: 王爽 汇编语言 实验 
2007-05-14 14:05
guancracker
Rank: 1
等 级:新手上路
威 望:1
帖 子:27
专家分:0
注 册:2007-5-14
收藏
得分:0 
谢谢你!
我找到原因了。试验了一个下午。
mov ax,2000h
mov ss,ax
mov sp,0 ;栈顶为2000:0

(到这里系统会中断,会把标志寄存器,CS ,IP的值在栈顶为2000:0
处压入,可以通过d 2000:fff0 查看到;)
add sp,4 ;栈顶为2000:4

( 到这里系统,会把标志寄存器,CS ,IP的值在栈顶为2000:4 处压入,丢失IP 值)
改为add sp,6 程序正常运行。

[此贴子已经被作者于2007-5-14 17:20:25编辑过]


2007-05-14 16:43
guancracker
Rank: 1
等 级:新手上路
威 望:1
帖 子:27
专家分:0
注 册:2007-5-14
收藏
得分:0 
哪里错了呀。  可以说说吗?

2007-05-14 21:04
guancracker
Rank: 1
等 级:新手上路
威 望:1
帖 子:27
专家分:0
注 册:2007-5-14
收藏
得分:0 
当然了,但那个代码是交换 AX 和BX的值。

2007-05-14 21:55
guancracker
Rank: 1
等 级:新手上路
威 望:1
帖 子:27
专家分:0
注 册:2007-5-14
收藏
得分:0 

不清楚呀。


2007-05-15 12:43
快速回复:王爽《汇编语言》 第四章 实验3 的问题?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012636 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved