8086 寄存器

作者: 相关函数 | 来源:发表于2018-09-15 22:40 被阅读3次

一个典型的CPU是由进行信息处理的运算器,进行信息存储的寄存器,和控制各种器件进行工作的控制器组成。

寄存器是cpu中程序员可以用指令读写的部件,程序员通过改变各种寄存器中的内容实现对cpu的控制。

对于8086cpu来说有14个寄存器,并且都是16位的,每一个可以存放2个字节的数据(1个字节为8bit)

这些寄存器按其用途可分为通用寄存器,指令指针,标志寄存器和段寄存器4类。

通用寄存器:

  • ax, bx, cx, dx 为数据寄存器。由于8086的上一代cpu是8位的,为了兼容,是原来基于上代cpu编写的程序稍加修改就能运行在8086cpu上,所以这四个寄存器都可以分为独立使用的8位寄存器。每个寄存器的低8位(0-7)构成*L寄存器,高8位(8-15)构成了*H寄存器。
  • 指针寄存器 sp(堆栈指针), bp(基数指针)。sp通常用于表示堆栈位置,bp可用作ss的一个相对基址位置。
  • si(源地址)和di(目的地址)为变址寄存器。si可用来存放相对于DS段之源变址指针,di可用来存放相对于ES 段之目的变址指针。

控制寄存器:

  • ip(指令寄存器)当前需要取出的指令字节,当BIU(总线控制单元)从内存中取出一个指令字节后,IP就自动加(取出该字节的长度,如:BIU从内存中取出的是1个字节,IP就会自动加1,如果BIU从内存中取出的字节数长度为3,IP就自动加3),指向下一个指令字节。注意,IP指向的是指令地址的偏移地址。
  • flag (状态标志)

段寄存器:

为了运用所有的内存空间,8086设定了四个段寄存器,专门用来保存段地址:

  • cs:代码段寄存器
  • ds:数据段寄存器
  • ss:堆栈段寄存器
  • es:附加段寄存器。

其中
cs:ip指向的指令作为下一条需要取出执行的指令
mov ax, [address]是指将ds:address的数据取出赋值给ax寄存器
ss:sp在任意时刻指向栈顶元素

对于数据段,将他的段地址放在ds中,用mov,add,sub指令访问内存单元时,cpu就将我们定义的数据段中的内容当做数据来访问。
对于代码段,将它的段地址放在cs中,将段中第一条指令的偏移地址放在ip中,这样cpu就将执行我们定义的代码段中的指令。
对于栈段,将它的段地址放在ss中,将栈顶单元的偏移地址放在sp中,这样cpu在需要进行栈操作的时候,比如执行push,pop指令等,就将我们定义的栈段当做栈空间来使用。

8086汇编的相关笔记来自 小码哥 MJ iOS底层视频 以及 王爽《汇编语言(第三版)》

相关文章

  • Linux0.11源码学习--知识基础

    这里简要介绍下8086的寄存器和 Linux0.11源码 硬件知识 8086CPU结构图 8086内部的寄存器可以...

  • CPU实模式和保护模式

    原文链接 16位微处理器 8086寄存器组成 8086/8088包括:4个16位的数据寄存器,2个16位的指针寄存...

  • 记一波汇编考前突击

    汇编问题列表 (1)8086CPU是多少位的?寄存器有哪些?名称是什么? 8086CPU是16位的 寄存器8个16...

  • 8086寻址方式

    8086寻址方式 16位的8086cpu中运算器一次最多可以处理16位的数据,寄存器的最大宽度为16位,寄存器和运...

  • 8086 寄存器

    一个典型的CPU是由进行信息处理的运算器,进行信息存储的寄存器,和控制各种器件进行工作的控制器组成。 寄存器是cp...

  • 寄存器(8086)

    1.地址线的寻址能力不是指它能传多少位的数据,而是它传递的数据范围能找到多少个存储单位的地址,存储单元的单位又是1...

  • 8086汇编之寄存器

    8086 有14个16位寄存器 一. 通用寄存器(8个) 1. 数据寄存器(4个) 特点:这4个16位的寄存器可以...

  • 汇编01

    8086CPU有14个寄存器,每个寄存器有一个名称。这些寄存器是:AX,BX,CX,DX,SI,DI,SP,BP,...

  • (四)标记寄存器

    8086 CPU 的标记寄存器有 16 位,其中存储的信息通常被称为程序状态字(PSW),标记寄存器和其他寄存器不...

  • 汇编语言 学习笔记(一)

    汇编语言学习笔记 一、概论 8086,8088 构架 1. 寄存器 8个通用寄存器 AX [AH, AL] - 累...

网友评论

    本文标题:8086 寄存器

    本文链接:https://www.haomeiwen.com/subject/kqstnftx.html