+ -
当前位置:首页 → 问答吧 → 求解emu8086中的调用子程序的小问题!!!!

求解emu8086中的调用子程序的小问题!!!!

时间:2010-12-30

来源:互联网

在emu8086中写了一个程序运行,调用了一个子程序,可是调用完之后却不能返回主程序,一直停在RET指令那儿。这是怎么回事啊,急求解!!!!
子程序是这样的:
PT2 PROC NEAR
  PUSH AX
  PUSH DX
  MOV AH,2CH ;获系统时间.
  INT 21H
  ADD DH,5 ;DH为当前的秒数,加5秒进去
  PUSH DX
WAIT2: POP DX
  MOV AL,DH
  PUSH DX
  MOV AH,2CH ;获取新的系统时间
  INT 21H
  CMP DH,AL
  JB WAIT2 ;判断是否运行了5秒
  POP DX
  POP AX
  RET
PT2 ENDP

作者: yangwuwu   发布时间: 2010-12-30

在线求解答啊!!大虾出现吧

作者: yangwuwu   发布时间: 2010-12-30

PUSH和POP的次数不一样~
代码中出现PUSH和POP的相关指令如下:
PUSH AX
PUSH DX
PUSH DX
POP DX
PUSH DX
POP DX
POP AX
这样堆栈被破坏,当然无法正常返回咯

作者: zhanglei8893   发布时间: 2010-12-30