目录 上一页 下一页 下一章

-22- PC机汇编语言实战精解

为了能够看到程序执行的细节情况,我们先学习DEBUG的一个新命令--T。T命令主要用于"跟踪"(TRACE)程序,这是DEBUG最重要的功能。利用T命令,我们可以一次执行一条指令,每执行一条指令后DEBUG都会把所有的寄存器内容列出来,这样即可看到指令执行的结果。我们现在跟踪这个程序。
  程序输入完毕,我们首先使用"R"命令将所有寄存器的当前值列出,重点观察一下SP寄存器与AX寄存器的值。
-rAX寄存器的初值SP寄存器的指向
AX=0000BX=0000CX=000ADX=0000SP=FFEEBP=0000SI=0000DI=0000
DS=0B01ES=0B01SS=0B01CS=0B01IP=0100 NV UP EI PL NZ NA PO NC
0B01:0100B83412MOV AX,1234第一条待执行的指令
  现在我们输入一个"T"命令,CPU就会将第一条指令"MOV AX,1234"执行,执行之后DEBUG会将执行结果显示出来。
-t注意此寄存器的变化指令指针的增加
AX=1234BX=0000CX=000ADX=0000SP=FFEEBP=0000SI=0000DI=0000
DS=0B01ES=0B01SS=0B01CS=0B01IP=0103 NV UP EI PL NZ NA PO NC
0B01:0103BBCDABMOV BX,ABCD第二条待执行的指令
  以上显示的内容就是执行了指令"MOV AX,1234"之后的各寄存器的状态,可以看到AX寄存器中确实存入了1234。另外一点,请注意IP寄存器的变化情况。
  再次输入"T"命令,则指令"MOV BX,ABCD"也会被执行。
-tBX寄存器存入ABCD指令指针继续增长
AX=1234BX=ABCDCX=000ADX=0000SP=FFEEBP=0000SI=0000DI=0000
DS=0B01ES=0B01SS=0B01CS=0B01IP=0106 NV UP EI PL NZ NA PO NC
0B01:010650PUSH AX需要重点观察的指令
  "PUSH"指令的执行情况是我们要点要观察的,单步执行此指令之后请注意SP寄存器的变化。
-tSP寄存器减量
AX=1234BX=ABCDCX=000ADX=0000SP=FFECBP=0000SI=0000DI=0000
DS=0B01ES=0B01SS=0B01CS=0B01IP=0107 NV UP EI PL NZ NA PO NC
0B01:010753PUSH BX
  这是第一次执行PUSH指令,可以观察到SP寄存器由原来的FFEE变成了FFEC,恰好是减了2。

Copyright © 2004-2015 Reanimator www.cookmoon.org

目录 上一页 下一页 下一章