3.4.5控制传送指令 ②段内间接调用 例: CALL AⅩ;调用地址由AX给出 CALL[SI];调用地址由存储器给出 指令的操作为 (SP)-1,(SP)-2)←(IP (SP)←(SP)-2 (IP)+(reg16)/(mem16)
3.4.5 控制传送指令 ②段内间接调用 例:CALL AX ;调用地址由AX给出. CALL [SI] ;调用地址由存储器给出. 指令的操作为: ((SP)-1,(SP)-2)←(IP) (SP)←(SP)-2 (IP)←(reg16)/(mem16)
3.4.5控制传送指令 ■③段间直接调用 例:CALL2000H:1000H 指令的操作为 (SP)-1,(SP)-2)←(CS);CS压栈 (SP)←(SP)-2 ;修改SP (CS)←段地址 ;(CS)←给定的段地址 (SP)-1,(SP)-2)←(IP);IP压栈 (SP)←(SP)-2 ;修改SP (IP)←偏移地址 ;(IP)←给定的偏址 返回
3.4.5 控制传送指令 ③段间直接调用 例:CALL 2000H:1000H 指令的操作为: ((SP)-1,(SP)-2)←(CS) ;CS压栈 (SP)←(SP)-2 ;修改SP (CS)←段地址 ;(CS)←给定的段地址 ((SP)-1,(SP)-2)←(IP) ;IP压栈 (SP)←(SP)-2 ;修改SP (IP)←偏移地址 ;(IP)←给定的偏址 返回
3.4.5控制传送指令 ■④段间间接调用 例: CALL DWORD PTR[DI 调用地址在D,DI+1,D+2,D+3所指的存储单元 中,前两个字节内容为偏移地址,后两个字节内容为 段地址 执行的操作与上段间直接调用类似。 返回
3.4.5 控制传送指令 ④段间间接调用 例:CALL DWORD PTR[DI] ; 调 用 地 址 在 DI,DI+1,DI+2,DI+3 所 指 的 存 储 单 元 中,前两个字节内容为偏移地址,后两个字节内容为 段地址. 执行的操作与上段间直接调用类似。 返回
3.4.5控制传送指令 (2)返回指令RET 段内返回指令RET的操作为: (IP)←(SP)+1,(SP)),(SP)←(SP)+2 段间返回指令RET的操作为: (IP)←(SP)+1,(SP),(SP)←(SP)+2 (CS)←(SP)+1,(SP),(SP)←(SP)+2 为了正确返回,RET类型必须与CAL指令相匹配, 这将由伪指令来加以区别,后面第四章将予以介绍
3.4.5 控制传送指令 (2)返回指令RET 段内返回指令RET的操作为: (IP)←((SP)+1,(SP)),(SP)←(SP)+2 段间返回指令RET的操作为: (IP)←((SP)+1,(SP)),(SP)←(SP)+2 (CS)←((SP)+1,(SP)),(SP)←(SP)+2 为了正确返回, R E T类型必须与C A L L指令相匹配, 这将由伪指令来加以区别,后面第四章将予以介绍
3.4.5控制传送指令 rET n 另有一种带立即数返回指令:RETn 式中n为偶数。表示从栈顶弹出地址后舍掉的字节数。 例:RET4,返回后舍掉4个字节
3.4.5 控制传送指令 RET n 另有一种带立即数返回指令:RET n 式中n为偶数。表示从栈顶弹出地址后舍掉 的 字 节 数 。 例:RET 4,返回后舍掉4个字节