CALL 指令
阿新 • • 發佈:2019-01-28
CALL指令用在主程式中,實現子程式的呼叫。它類似無條件轉移JMP指令,但是,子程式執行結束是要返回的;所以,CALL指令不僅要同JMP指令一樣改變CS : IP以實現轉移,而且還要保留下一條要執行指令的地址,以便返回時重新獲取它。保護CS : IP值的方法是壓入堆疊,獲取CS : IP值的方法就是彈出堆疊。
CALL指令的4種格式如下:CALL label ;段內呼叫,相對定址:SP←SP-2,SS:[SP]←IP, ;IP←IP+16位位移量 CALL r16/m16 ;段內呼叫,間接定址:SP←SP-2,SS:[SP]←IP, ;IP←r16/m16 CALL far ptr label ;段間呼叫,直接定址:SP←SP-2,SS:[SP]←CS, ;SP←SP-2,SS:[SP]←IP, ;IP←label偏移地址,CS←label段地址 CALL far ptr mem ;段間呼叫,間接定址:SP←SP-2,SS:[SP]←CS, ;SP←SP-2,SS:[SP]←IP, ;IP←[mem],CS←[mem+2] |