鱼C论坛

 找回密码
 立即注册
查看: 2373|回复: 2

6.4例题中的问题

[复制链接]
发表于 2012-2-6 23:27:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. ASSUME CS:CODE,DS:DATA,SS:STACK

  2. DATA SEGMENT
  3.    DW 0123H,0456H,0789H,0ABCH,0DEFH,0FEDH,0CBAH,0987H
  4. DATA ENDS

  5. STACK SEGMENT
  6.    DW 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  7. STACK ENDS

  8. CODE SEGMENT
  9. START:  MOV AX,DATA
  10.         MOV DS,AX
  11.                 MOV AX,STACK
  12.                 MOV SS,AX
  13.                 MOV SP,20H
  14.                 MOV BX,0
  15.                
  16.                 MOV CX,8
  17.         S:  PUSH [BX]
  18.             ADD BX,2
  19.                 LOOP S
  20.                
  21.                 MOV BX,0
  22.                 MOV CX,8
  23.         S0: POP [BX]
  24.             ADD BX,2
  25.                 LOOP S0
  26.                
  27.                 MOV AX,4C00H
  28.                 INT 21H
  29.                
  30. CODE ENDS

  31. END START
复制代码
程序中栈段定义了16个字型数据,SP为20H,DEBGU(是单步不跳过循环)单步调试时不用P命令,可以全部通过
我把16个字型数据改成8个字型数据,SP改为10H,用DEBUG单步调试,到最后几个循环时,DEBUG错误退出,无法进行,但是如果用P命令跳过循环,一切正常,结果也正确,请高手指教下,这个问题纠结了一晚上了,实在搞不懂原因,就包括小甲鱼讲到这个例题时,电脑所输入的也是定义8个字的栈段,SP为16.代码是原题。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-2-7 07:14:00 | 显示全部楼层
我刚才已试过,是你如你所说;书中说的:“程序中栈段定义16个字型数据,SP为20H”是正确的。
显而易见,其栈段定义少了,以后要定义多一些才对。
至于栈段为什么要定义多一些的原因,我也不太清楚;同时也奉劝你不要在这个小问题上过度的纠结了,你已经把此题的答案做出来了,就不要再把大量的时间花费于此了,以后还有更多更难得题目等着你呢!

《孙子兵法》第二篇中有一句话叫:“兵闻拙速,未睹巧之久也。”
凡干大事者,不可因小失大;如果太在意小,则完成不了大业!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-2-7 09:47:13 | 显示全部楼层
已经不下第三次看到有人问这个问题了……

debug中的t命令

书上说是用了单步中断的原理

1.取得中断码
2.tf if入栈
3.cs ip入栈
4.响应中断


原因和debug的T命令有关。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-28 23:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表