10.1 ret和retf
ret指令用栈中的数据更改IP的内容,从而实现近转移
进行的过程:pop IP
(IP) = ((SS * 16) + (SP))
(SP) = (SP) + 2
retf指令用栈中的数据更改CS和IP的内容,从而实现远转移
执行过程:1.pop IP,2.pop CS
(IP) = ((SS) * 16 + (SP))
(SP) = (SP) + 2
(CS) = ((SS) * 16 + (SP))
(SP) = (SP) + 2
书中程序ret前面有一个mov bx,0感觉没实际作用
检测点10.1
补全程序,实现从内存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
code ends
end start
发现ss和sp指令一条执行完
执行结果:cs:1000H ip:0
10.2 call指令
1.将当前的IP或者CS和IP压入栈中
2.转移到标号的地址
call指令不能实现短转移