进入/退出过程指令

来源:互联网 发布:徐宥箴 知乎 编辑:程序博客网 时间:2024/04/29 05:23
导读:

在许多高级语言中,每个子程序(函数)都有自己的局部变量,这些局部变量只有当它们所在的子程序执行时才有意义。为了保存这些局部变量,当执行到这些子程序时,因为其局部变量已建立起相应的堆栈框架,因而当退出子程序时,应将这个框架撤除。ENTERLEAVE指令相互配合,可完成上述工作。










指令格式 ENTER  


imm16 imm8


 


指令格式 LEAVE  


 


 


· ENTER指令为局部变量建立一个堆栈区,指令中imm16指出子程序中所需堆栈的字节数,imm8指出子程序的嵌套层数(0-31);


· LEAVE指令用于撤消前面ENTER指令的操作。


                       


4-26  LEAVE指令举例。




























TASK


PROC  NEAR


 


 


ENTER  6 , 0


;建立堆栈区,并保存6字节的局部变量


 



 


 


LEAVE


;撤消已建立的堆栈区


 


RET


 


TASK


ENDP


 


另外80286的指令系统还包括一些保护模式下的系统控制类指令,这组指令是


与保护模式相适应的处理器控制指令,它们常用于操作系统以及其它的控制软

件中,应用程序设计中用到的不多,故而此处不作详细介绍。

保护模式下的系统控制类指令见表4-18


 











































4-18  80286保护模式的系统控制指令


助记符


功能


助记符


功能


CLTS


 


清除任务转移标志


LGDT


SGDT


src


dest


装入全局描述符表寄存器GDTR


存储全局描述符表寄存器GDTR


ARPL


dest , src


调整请求特权级RPL


LMSW


SMSW


src


dest


装入机器状态字


存储机器状态字


LIDT


SIDT


src


dest


装入8字节中断描述符表寄存器IDTR


存储8字节中断描述符表寄存器IDTR


LAR


LSL


dest , src


dest , src


装入访问权限


装入段界限值


LLDT


SLDT


src


dest


装入局部描述符表寄存器LDTR


存储局部描述符表寄存器LDTR


VERR


VERW


src


src


检查读允许


LTR


STR


src


dest


装入任务寄存器TR


存储任务寄存器TR


本文转自
http://courseware.lzu.edu.cn/upload/2006/mayide/dianzikejian/4/a12.htm
原创粉丝点击