主题:挑战汇编高手
吉吉的老公
[专家分:0] 发布于 2007-06-17 15:14:00
┇ .
CALL PROC1
P1: ……
┇
P2: ……
PROC1 PROC
PUSH BX
PUSH AX ①
┇
POP AX
RET
PROC1 ENDP
(2) 从子程序能返回到主程序P1处执行吗?为什么?
回复列表 (共4个回复)
沙发
topzhengjie [专家分:160] 发布于 2007-06-17 16:43:00
可以啊 用个条件跳转指令.但这种情况 很少见
板凳
def [专家分:3380] 发布于 2007-06-18 00:54:00
你最后少一个pop bx,会乱跳的。
3 楼
塞北江南 [专家分:1350] 发布于 2007-06-18 09:23:00
CALL PROC1
P1: ……
这两行语句是连续的,所以,只要PROC1结束了(不管从哪里返回),就可以执行P1语句
4 楼
liangbch [专家分:1270] 发布于 2007-06-18 19:01:00
[quote]CALL PROC1
P1: ……
这两行语句是连续的,所以,只要PROC1结束了(不管从哪里返回),就可以执行P1语句[/quote]
ret 会把 栈顶的 内容 送给PC(程序指针)。
在这个程序中,PROC1 没有做到堆栈平衡,或者执行完ret语句后,下一条执行的指令取决于bx的值,即2楼所说的,程序会乱跳的。
我来回复