欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

检测点:
ret指令 和 retf指令

;补全程序,实现从内存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

ret指令 和 retf指令
ret指令 和 retf指令
ret指令 和 retf指令
此时cs=1000,ip=0000符合题意。

相关标签: AssemblyLanguage