回 帖 发 新 帖 刷新版面

主题:挑战汇编高手

┇                               .
       CALL  PROC1                                  
 P1:   ……                                   
          ┇ 
 P2:    ……
 PROC1  PROC
        PUSH  BX            
        PUSH  AX  ①                    
          ┇                       
        POP   AX                        
        RET
 PROC1 ENDP
(2)    从子程序能返回到主程序P1处执行吗?为什么?

回复列表 (共4个回复)

沙发

可以啊 用个条件跳转指令.但这种情况 很少见

板凳

你最后少一个pop bx,会乱跳的。

3 楼

CALL  PROC1                                  
 P1:   ……                                   
这两行语句是连续的,所以,只要PROC1结束了(不管从哪里返回),就可以执行P1语句

4 楼

[quote]CALL  PROC1                                  
 P1:   ……                                   
这两行语句是连续的,所以,只要PROC1结束了(不管从哪里返回),就可以执行P1语句[/quote]

  ret 会把 栈顶的 内容 送给PC(程序指针)。
  在这个程序中,PROC1 没有做到堆栈平衡,或者执行完ret语句后,下一条执行的指令取决于bx的值,即2楼所说的,程序会乱跳的。

我来回复

您尚未登录,请登录后再回复。点此登录或注册