天天看点

【8086汇编复习】8086的寄存器组参考文献:

8086的寄存器组如图1所示。

【8086汇编复习】8086的寄存器组参考文献:

图1 8086的寄存器组

  1. 通用寄存器

8086有8个通用的16位寄存器,其中4个数据寄存器还可以分成高8位和低8位两个独立寄存器,这样又形成8个通用的8位寄存器。

(1)数据寄存器

8086有4个数据寄存器:AX,BX,CX,DX;它们都可以分为两个独立的8位寄存器:AH/AL,BH/BL,CH/CL,DH/DL;对其中某8位的操作,并不影响另外对应8位的数据。数据寄存器通用的,用来存放计算的结果和操作数,但每个寄存器又有它们各自的专用目的,并因此得名:

  • AX称为累加器,使用频率最高,用于算术、逻辑运算以及与外设传送信息等。
  • BX称为基址寄存器,常用作存放存储器地址。
  • CX称为计数器,作为循环和传操作等指令中的隐含计数器。
  • DX称为数据寄存器,常用来存放双字长数据的高16位,或存放外设端口地址。

(2)变址(索引)及指针寄存器

变址(索引)及指针寄存器包括SI、DI、BP、SP四个16位寄存器,常用于存储器寻址时提供地址。

SI是源变址寄存器,DI是目的变址寄存器,一般与DS联用,确定数据段中某一存储单元地址。在串指令中,SI与DS联用、DI与ES联用,分别寻址数据段和附加段;同时,在串指令中,SI和DI还具有自动增量或减量的功能。

SP为堆栈指针寄存器,指示栈顶的偏移地址;BP为基址指针寄存器,表示堆栈段中的基地址。SP和BP寄存器均可与SS段寄存器联用,以确定堆栈段中的存储单元地址。需要特别指出的是,堆栈(Stack)是主存中一个特殊的区域,采用先进后出(First In Last Out,FILO)或后进先出(Last In First Out,LIFO)操作方式,而不是随机存取操作方式。堆栈通常由处理器自动维持,由堆栈段寄存器SS和S堆栈指针寄存器SP共同指示。所以,SP不应该再用于其他目的,实际上可归类为专用寄存器。

  1. 段寄存器

对应用程序来说,主要设计3类段:存放程序中指令代码的代码段(Code Segment)、存放当前运行程序所用数据的数据段(Data Segment)和指明程序使用的堆栈区域的堆栈段(Stack Segment)。

为了表明段在主存中的位置,8086设计有4个16位段寄存器:代码段寄存器CS、堆栈段寄存器SS、数据段寄存器DS和附加段寄存器ES(Extra Segment)。其中,附加段也是用于存放数据的数据段,专为处理数据串设计的串指令必须使用附加段作为其目的操作数的存放区域。

  1. 指令指针寄存器

程序由指令组成,指令存放在主存储器中。处理器需要一个专用寄存器表示将要执行的指令在主存中的位置,这个位置用存储器地址表示。在8086微处理器中,这个存储器地址保存在16位指令指针寄存器IP(Instruction Pointer)中。

IP是专用寄存器,具有自动增量的能力。处理器执行完一条指令,IP就加上该指令的字节数,这样指向下一条指令,实现程序的顺序执行。需要实现分支、调用等操作时要修改IP,它的改变将引起程序转移到指定的指令执行。但IP寄存器不能像通用寄存器那样直接赋值修改,需要执行控制转移指令(如跳转、分支、调用和返回指令)、出现中断或异常时背处理器赋值而相应改变。

  1. 标志寄存器

标志(Flag)用于反映指令执行结果或控制指令执行形式,是汇编语言程序设计中必须特别注意的一个方面。许多指令执行之后将影响有关的标志位,不少指令的执行要利用某些标志。当然,也有许多指令与标志无关。8086处理器中各种常用的标志i形成一个16位的标志寄存器FLAGS,也被称为程序状态字寄存器(Program Status Word,PSW)。标志寄存器中的各种标志分成了两类:6个状态标志和3个控制标志,如表1所示。

表1 标志寄存器FLAGS

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
OF DF IF TF SF ZF AF PF CF

(1)状态标志

状态标志是最基本的标志,用来记录指令执行结果的辅助信息。加减运算和逻辑运算指令是主要设置它们的指令,其他有些指令的执行也会相应地设置它们。8086地状态标志有6个,但主要使用其中5个构成各种条件,分支指令判断这些条件实现程序分支。它们从低位到高位是:进位标志CF(Carry Flag)、奇偶标志PF(Parity Flag)、调整指令AF(Adjust Flag)、零标志ZF(Zero Flag)、符号标志SF(Sign Flag)、溢出标志OF(Overflow Flag)。

(2)控制标志

控制标志可由程序根据需要用指令设置,用于控制处理器执行指令的方式。8086的控制标志有3个:方向标志DF(Direction Flag),仅用于串操作指令中;中断允许标志IF(Interrupt-enable Flag),或简称中断标志,用于控制外部可屏蔽中断是否可以背处理器响应;陷阱标志TF(Trap Flag),也常称为单步标志,用于控制处理器是否进入单步操作方式。

参考文献:

钱晓捷. 汇编语言程序设计(第4版)[M]. 北京:电子工业出版社, 2012.6: 16 - 17.

继续阅读