题目:补全程序,实现从内存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 ;cs的值
push ax
mov ax,0 ;IP的值
push ax
retf
code ends
end start
解析:
CPU执行retf指令时,进行四步操作:
- (IP)=((ss)*16+sp)
- (sp)=(sp)+2
- (CS)=((ss)*16+sp)
- (sp)=(sp)+2
也就是相当于进行
pop IP
pop CS
这样就很容易理解啦。