看来楼主没有好好看“博友abcabc提出的问题以及相应的答复”o(∩_∩)o...
这个程序debug调试的时候之所以会出现“无效指令”的提示,并不是程序的原因,而是debug在调试程序的时调用了中断【中断使用栈来保存现场(这里就涉及到了ss/sp)】,当sp过小,压入数据过多的话,sp就会发生环绕,保护模式下的操作系统为了安全就将其杀死了。
一个程序一运行就应该是从第一条指令开始执行,一直执行至遇到mov ax,4c00h int 21h等程序返回中断来结束程序的。而我们用debug调试程序需要程序运行一条或几条语句就停下来,这就用到了中断,比如debug的t命令。
由于第四章的程序没有向屏幕下东西,也就是说程序运行过程中我们看不到屏幕的变化,等到第九章开始就有能运行并从屏幕看到结果了。不管能不难看到屏幕,debug都是无敌工具啊:-)一定要熟练才行啊~ |