ret指令 和 retf指令
程序员文章站
2024-03-23 22:37:22
...
当执行ret指令时,相当于执行pop ip
当执行retf指令时,相当于先执行pop ip,后执行pop cs
ret指令用栈中的数据,修改ip的内容,从而实现近转移;
retf指令用栈中的数据,修改cs和ip的内容,从而实现远转移
CPU执行ret指令时,进行下面两步操作:
(1)IP=((SS)*16)+(SP))
(2)SP=SP+2
CPU执行retf指令时,进行下面4步操作:
(1)IP=((SS)*16)+(SP))
(2)SP=SP+2
(3)CS=SS * 16+SP
(4)SP=SP+2
检测点:
;补全程序,实现从内存1000:0000处开始执行指令
assume cs:code
stack segment
db 16 dup (0)
stack ends
code segment
start:
mov ax,stack
mov ss,ax
mov sp,16
mov ax,1000H
push ax
mov ax,0
push ax
retf
;执行retf相当于执行了pop ip=0,再执行pop cs=1000
code ends
end start
此时cs=1000,ip=0000符合题意。
下一篇: isa详解