大学生新闻网

整数指令按功能分七种类型

80x86微处理器的指令系统大致分为整数指令、浮点数指令和操作系统型指令三大类。掌握好指令是学习汇编语言程序设计的关键,要求读者对每条指令的助记符、操作数的正确书写格式和指令执行后对标志位的影响都能很好地掌握。

  本书只重点介绍整数指令,对浮点数指令和操作系统型指令不作叙述,有需要的读者可查阅有关资料。

  整数指令按功能分为以下七种类型。

  数据传送类指令;

  算术运算类指令;

  逻辑运算类指令;

  串操作类指令;

  控制转移类指令;

  处理器控制类指令;

  高级和保护控制类指令。

   本书约定标记:寄存器(Reg)、存储器(Mem)、段寄存器(Seg)、累加器(Acc)、立即数(Imm)、I/O端口(Port),源操作数 (源)、目标操作数(目标)。状态标志:进位(CF)、符号(SF)、零(ZF)、溢出(OF)、辅助进位(AF)、奇偶(PF)。指令的操作数可以是8 位、16位或32位,寻址宽度可以是16位或32位。各类指令以表格形式给出,仅对程序设计中常用的指令加以解释。

  3.4.1 数据传送类指令

  数据传送指令将数据、地址或立即数(称源操作数)传送到寄存器或存储单元中(称目标操作数),完成寄存器与寄存器,寄存器与存储单元,I/O端口和累加器之间的字节、字和双字的传送,传送指令大多都不影响标志位。

  3.4.2 算术运算类指令

   算术运算类指令有加、减、乘、除等,可进行8位、16位和32位的运算。参加运算的操作数可以是二进制数和十进制数(BCD码);这些数可以是无符号 数,也可以是带符号数。算术运算指令的主要特点是执行结果影响标志寄存器的状态标志位OF、SF、ZF、AF、PF、CF。

  3.4.3 控制转移类指令

   在微机系统中,指令执行的顺序由CS和IP(EIP)决定。CS存放当前代码段的段基址,IP(EIP)存放指令的偏移地址。在正常顺序执行时,要执行 的指令已经由总线接口部件BIU,按CS和IP(EIP)的内容从存储单元中取出存入指令队列中;CPU执行一条指令后,按指令队列中的指令顺序,执行下 一条指令。但实际上经常会遇到改变程序执行流程的情况,程序转移指令就是用改变CS和IP(EIP)的内容,使程序执行的顺序发生变化。当程序需要发生转 移时,存放在指令队列中的指令将被清除,BIU根据改变后的CS和IP(EIP)重新确定指令的地址,并按此地址将指令从存储单元中取出,重新送入指令队 列,并送到CPU去执行。

  指令系统中有以下四类控制转移指令:

  无条件转移指令;

  条件转移指令;

  循环控制指令;

  中断指令。

  3.4.4 处理机控制指令

  处理机控制指令完成简单的控制功能。

   由表中可看到,在指令系统中允许用指令操作的标志位有CF、DF和IF三位。其中DF用于串运算中决定地址变化的方向,DF0时串运算为地址增量方向执 行,DF1串运算为地址减量方向执行。IF用于可屏蔽中断,当IF0时表示禁止可屏蔽中断(关中断),IF1时表示允许可屏蔽中断(开中断)。

  除上述指令外,32位微机增加了位操作的指令,包括位测试指令和位扫描指令两类,从而增加指令的功能,下面加以介绍。

  功能:撤销前面ENTER指令的动作。当退出子程序时,应撤销堆栈框架的设定。

  在C语言中,不允许函数的嵌套调用,故C语言的编译程序中只采用ENTER M,0的格式。Pascal语言则允许子程序和函数的多层嵌套调用,故可采用ENTER M, N的格式。有关操作系统型指令和浮点运算指令本书不再叙述,需要时可查阅有关手册。

推荐新闻