2.3 8086寄存器组

转载 2007年10月08日 18:52:00

在8086的EU和BIU两部分中包含有一些工作寄存器,这些寄存器用来存放计算过程中的各种信息,如操作数地址、操作数及运算的中间结果等。微处理器从寄存器中存取数据比从存储器中存取数据要快的多,因此,在计算过程中,合理利用寄存器保存操作数、中间结果或其它信息,能提高程序的运行效率。根据这些寄存器所起的作用,8086寄存器组可以分为通用寄存器、专用寄存器和段寄存器三类,如图2.3所示。下面分别介绍这些寄存器。
图2.3 8086寄存器组
          
1. 通用寄存器
  通用寄存器包括了8个16位的寄存器:AX、BX、CX、DX、SP、BP、DI及SI。其中AX、BX、CX、DX在一般情况下作为通用的数据寄存器,用来暂时存放计算过程中所用到的操作数、结果或其他信息。它们还可分为两个独立的8位寄存器使用,命名为AL、AH、BL、BH、CL、CH、DL和DH。这4个通用数据寄存器除通用功能外,还有如下专门用途:

  AX作为累加器用,所以它是算术运算的主要寄存器。在乘除指令中指定用来存放操作数。另外,所有的I/O指令都使用AX或AL与外部设备传送信息。

  BX在计算存储器地址时,可作为基址寄存器使用。

  CX常用来保存计数值,如在移位指令、循环指令和串处理指令中用作隐含的计数器。
DX在作双字长运算时,可把DX和AX组合在一起存放一个双字长数,DX用来存放高16位数据。此外,对某些I/O操作,DX可用来存放I/O的端口地址。

  SP、BP、SI、DI四个16位寄存器可以象数据寄存器一样在运算过程中存放操作数,但它们只能以字(16位)为单位使用。此外,它们更经常的用途是在存储器寻址时,提供偏移地址。因此,它们可称为指针或变址寄存器。

  SP称为堆栈指针寄存器,用来指出栈顶的偏移地址。

  BP称为基址指针寄存器,在寻址时作为基地址寄存器使用,但它必须与堆栈段寄存器SS联用来确定堆栈段中的存储单元地址。

  SI为源变址寄存器,在串处理指令中,SI作为隐含的源变址寄存器与DS联用,以确定数据段中的存储单元地址,并有自动增量和自动减量的变址功能。

  DI为目的变址寄存器,在串处理指令中,DI和附加段寄存器ES联用,以达到在附加段中寻址的目的,然后DI自动增量或减量。

2. 专用寄存器

  8086的专用寄存器包括IP、SP和FLAGS三个16位寄存器。

  IP为指令指针寄存器,它用来存放将要执行的下一条指令地址的偏移量,它与段寄存器CS联合形成代码段中指令的物理地址。在计算机中,控制程序的执行流程就是通过控制IP的值来实现的。

  SP为堆栈指针寄存器,它与堆栈段寄存器联用来确定堆栈段中栈顶的地址,也就是说SP用来存放栈顶的偏移地址。

  FLAGS为标志寄存器,这是一个存放条件码标志、控制标志的16位寄存器。

  图2.4说明了8086中标志寄存器的内容,图中未标明的位暂不用。


    图2.4 8086的标志寄存器
          
  
  条件码标志用来记录程序中运行结果的状态信息,它们是根据有关指令的运行结果由CPU自动设置的。由于这些状态信息往往作为后续条件转移指令的转移控制条件,所以称为条件码。
  ① 进位标志 CF,记录运算时最高有效位产生的进位值。
  ② 符号标志 SF,记录运算结果的符号。结果为负时置1,否则置0。
  ③ 零标志  ZF,运算结果为0时ZF位置1,否则置0。
  ④ 溢出标志 OF,在运算过程中,如操作数超出了机器可表示数的范围称为溢出。溢出时OF位置1,否则置0。
  ⑤ 辅助进位标志 AF,记录运算时第3位(半个字节)产生的进位值。
  ⑥ 奇偶标志 PF,用来为机器中传送信息时可能产生的代码出错情况提供检验条件。当结果操作数中1的个数为偶数时置1,否则置0。


  控制标志位有3位:
  ① 方向标志 DF,在串处理指令中控制处理信息的方向。当DF=1时,串处理从高地址向低地址方向处理。当DF=0时,串处理就从低地址向高地址方向处理。
  ② 陷阱标志 TF,用于调试时的单步方式操作。当TF=1时,每条指令执行完后产生陷阱,由系统控制计算机;当TF=0时,CPU正常工作,不产生陷阱。
  ③ 中断标志 IF,用于控制可屏蔽硬件中断。当IF=1时,允许8086微处理器响应中断请求,否则关闭中断。

  8086提供了设置某些状态信息的指令。必要时,程序员可使用这些指令来建立状态信息。

  在调试程序Debug中提供了测试标志位的手段,它用符号表示某些标志位的值。表2.1说明这些标志位的符号表示。

  
 
 
               表2.1 标志位的符号表示

        标 志 名
       标 志 为1
     标 志 为0
       OF    溢出
      OV   (是)
    NV    (否)
       DF    方向
      DN   (减量)
    UP    (增量)
       IF    中断
      EI   (允许)
    DI    (关闭)
       SF    符号
      NG   (为负)
    PL    (为正)
       ZF    零
      ZR   (是)
    NZ    (否)
       AF    辅助进位
      AC   (是)
    NA    (否)
       PF    奇偶
      PE   (偶)
    PO    (奇)
       CF    进位
      CY   (是)
    NC    (否)

 3. 段寄存器

  8086微处理器共有4个16位的段寄存器,在寻址内存单元时,用它们直接或间接地存放段地址。
  代码段寄存器CS:存放当前执行的程序的段地址。
  数据段寄存器DS:存放当前执行的程序所用操作数的段地址。
  堆栈段寄存器SS:存放当前执行的程序所用堆栈的段地址。
  附加段寄存器ES:存放当前执行程序中一个辅助数据段的段地址。

8086系列寄存器的分类和功能

在8086里面,16位通用寄存器为ax,bx,cx,dx,  在80386里,寄存器为32位,对应8086,即为eax,ebx,ecx,edx  dword ptr fs:[0] 表示fs*16+0处...
  • eddy_liu
  • eddy_liu
  • 2013年02月20日 15:40
  • 1420

汇编语言(8086)-寄存器

汇编语言,寄存器是CPU中程序员可以用指令读写的部件。程序员通过改变各种寄存器中的内容来实现对CPU的控制。...
  • name_z
  • name_z
  • 2015年05月03日 20:08
  • 1489

8086和80386寄存器总结

首先先说8086  在8086的EU--执行单元(Execution Unit)和BIU--总线接口单元(Bus Interface Unit)两部分中包含有一些工作寄存器,这些寄存器用来存放计算过...
  • laiqun_ai
  • laiqun_ai
  • 2014年01月01日 19:16
  • 1096

8086/8088 CPU寄存器组

作者:黑剑   出处:http://www.cnblogs.com/blacksword/      这一节先从8086/8088 CPU寄存器组开始说起。     说到8086/8088 C...
  • xiaomingtongxie
  • xiaomingtongxie
  • 2016年11月17日 12:05
  • 778

汇编语言8086寄存器课件

  • 2012年04月25日 11:04
  • 1.55MB
  • 下载

8086cpu寄存器详解.doc

  • 2010年10月25日 08:55
  • 125KB
  • 下载

8086_8088 CPU的内部寄存器.png

  • 2014年12月25日 11:24
  • 933KB
  • 下载

8086寄存器编码表

  • 2010年12月04日 16:35
  • 1KB
  • 下载

8086 DS 和 ES 寄存器

DS 寄存器和 ES 寄存器: DS  寄存器和  ES  寄存器都属于段寄存器,其实它们和  CS  寄存器以及  SS  寄存器用起来区别不大, 既然是段寄存器的话,自然它们存放的就是某个段地...
  • qq_35212671
  • qq_35212671
  • 2016年10月09日 21:29
  • 1806

汇编学习笔记----8086CPU的段寄存器

(1)在8086CPU中,它是16bit结构,一次可以传送一个字的数据,但其地址总线有20根,一次可以传送2的20次方的数据 也就是说它的寻址能力为1MB,很明显,如果将地址从CPU内部简单的发出来...
  • fengxiaoke_fxk
  • fengxiaoke_fxk
  • 2012年06月14日 15:41
  • 3363
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:2.3 8086寄存器组
举报原因:
原因补充:

(最多只允许输入30个字)