目录 上一页 下一页 下一章

第5章 子程序和串处理 -93-

dss:fffc注意返回地址为0123
0E69:FFF023 01 00 00#...
  可以看到返回地址是0123,恰好是LOW4B处。当第一次执行RET指令时,CPU将返回到这个地址处继续执行。
-g=125 12e
1← 程序显示出ESC键的ASCII码高4位对应的十六进制数
AX=0231BX=0103CX=0004DX=1B31SP=FFFCBP=0000SI=0000DI=0000
DS=0E69ES=0E69SS=0E69CS=0E69IP=012E NV UP EI PL NZ NA PO NC
0E69:012EC3RET
  利用"G"命令在012E处打一个断点,以便于观察RET指令的执行。
-t
AX=0231BX=0103CX=0004DX=1B31SP=FFFEBP=0000SI=0000DI=0000
DS=0E69ES=0E69SS=0E69CS=0E69IP=0123 NV UP EI PL NZ NA PO NC
0E69:01238AC6MOV AL,DH
CPU返回0123处继续执行程序
  可以看到CPU正确地返回到0123处继续执行程序,再往下CPU将直接进入0125处。
-t
AX=021BBX=0103CX=0004DX=1B31SP=FFFEBP=0000SI=0000DI=0000
DS=0E69ES=0E69SS=0E69CS=0E69IP=0125 NV UP EI PL NZ NA PO NC
0E69:0125240FAND AL,0F
程序直接进入了0125处
  我们再次用"G"命令在012E处打上断点,以便于观察RET指令第二次执行的情况。
-g=125 12e[Enter]
B← 程序显示出ESC键对应ASCII码的低半个字节
AX=0242BX=0103CX=0004DX=1B42SP=FFFEBP=0000SI=0000DI=0000
DS=0E69ES=0E69SS=0E69CS=0E69IP=012E NV UP EI PL NZ NA PO NC
0E69:012EC3RET
  再次用"T"命令跟踪RET指令,注意此时堆栈中已经没有CALL指令压入的返回地址,只有DOS存入的一个"0"

Copyright © 2004-2015 Reanimator www.cookmoon.org

目录 上一页 下一页 下一章