| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2047 人关注过本帖
标题:王爽《汇编语言》 第四章 实验3 的问题?
只看楼主 加入收藏
guancracker
Rank: 1
等 级:新手上路
威 望:1
帖 子:27
专家分:0
注 册:2007-5-14
收藏
 问题点数:0 回复次数:9 
王爽《汇编语言》 第四章 实验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
菜鸟上路
Rank: 4
等 级:贵宾
威 望:14
帖 子:1120
专家分:0
注 册:2006-3-21
收藏
得分:0 
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
红的可以去掉,用系统默认的,如果自己定义堆栈的话,要声明堆栈段
stack segment
db 100 dup(?)
stack ends
assume code:codesg, ss:stack
codesg segment
mov ax, stack
mov ss, ax
codesg ends

2007-05-14 16:11
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
爱以走远
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:52
帖 子:7542
专家分:21
注 册:2007-3-16
收藏
得分:0 
呵呵 还有就是你进栈和出栈错拉哈
lz还是先理解一哈入栈和出栈哈
是先进后出

   好好活着,因为我们会死很久!!!
2007-05-14 20:36
guancracker
Rank: 1
等 级:新手上路
威 望:1
帖 子:27
专家分:0
注 册:2007-5-14
收藏
得分:0 
哪里错了呀。  可以说说吗?

2007-05-14 21:04
爱以走远
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:52
帖 子:7542
专家分:21
注 册:2007-3-16
收藏
得分:0 
pop ax
pop bx
push ax
push bx
pop ax
pop bx
先进后出 你看你是不是先进后出呢

   好好活着,因为我们会死很久!!!
2007-05-14 21:28
guancracker
Rank: 1
等 级:新手上路
威 望:1
帖 子:27
专家分:0
注 册:2007-5-14
收藏
得分:0 
当然了,但那个代码是交换 AX 和BX的值。

2007-05-14 21:55
爱以走远
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:52
帖 子:7542
专家分:21
注 册:2007-3-16
收藏
得分:0 
  那不好意思  

   好好活着,因为我们会死很久!!!
2007-05-14 22:07
菜鸟上路
Rank: 4
等 级:贵宾
威 望:14
帖 子:1120
专家分:0
注 册:2006-3-21
收藏
得分:0 
好象现在的32位程序的程序入口点处一般都有add sp, 4,不知道是不是和这有冲突?

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

不清楚呀。


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



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

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