. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->第一个程序
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  实验3关于堆栈的问题  [已解决] 回复[ 2次 ]   点击[ 492次 ]  
xiaolaopo
[帖 主]   [ 发表时间:2008-05-10 07:52 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:2
注册日期:2008-04-13 09:39
这是我的汇编代码:
assume cs:codesg
codesg segment
   mov ax,2000H
   mov ss,ax
   mov sp,0
   add sp,6
   pop ax
   push ax
   pop ax
   push ax
   pop ax
   push ax
   mov ax,4c00H
   int 21H
codesg ends
end  这段代码是能够成功调试运行的,但仔细观察发现:
在还没运行第一次出栈前:
2000:0000 0B 00 A7 14 66 0E 00 00-后面略
在运行第一次出栈后:
2000:0000 00 00 0C 00 A7 14 66 0E-后面不变
在运行第一次压栈后:
2000:0000 0D 00 A7 14 66 0E 00 00-后面不变
后面也是这样的情况,为什么??
app
[第1楼]   [ 回复时间:2008-05-10 18:58 ]   [引用]   [回复]   [ top ] 
荣誉值:15
信誉值:2
注册日期:2007-12-05 14:06
因为单步中断的过程中硬件会进行某些自动处理,现在不必了解细节过程。这在以后的课程中会逐渐明朗。

能够发现这个问题已经很不错了。说明楼主很仔细。
xiaolaopo
[第2楼]   [ 回复时间:2008-05-11 05:52 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:2
注册日期:2008-04-13 09:39
此贴由 贴主 于 [ 2008-05-11 05:52 ] 结贴。 结贴原因:问题已解决
得分情况: 1楼(app):2分  
此问题已结贴!
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved