『期末复习』16_32位微处理器(8086)基本寄存器

简介: 8086具有16位的微处理器,16根数据线和20根地址线。因为可用20位地址,所以可寻址的地址空间可达到2^20字节即(1MB)从功能上,8086分为两部分,即总线接口部件(BIU bus interface unit)和执行部件(EU execution unit )


1.8086的编程结构(留个悬念)

8086具有16位的微处理器,16根数据线和20根地址线。因为可用20位地址,所以可寻址的地址空间可达到2^20字节即(1MB)

从功能上,8086分为两部分,即总线接口部件(BIU bus interface unit)执行部件(EU execution unit )

在学习8086的编程结构的编程结构时先了解16/32位微处理器基本寄存器

2.16/32位微处理器基本寄存器

总体上分为3类:

  • 通用寄存器(8个)
  • 段寄存器 (4个)
  • 指令指针和标志寄存器(2个)

2.1通用寄存器

通用寄存器功能: 可以存放逻辑操作和算术运算用的操作数和地址。

指针与变址寄存器功能: 参与地址运算的主要是指针与变址寄存器组中的4个寄存器SP/BP/SI/DI,一般用来存放地址的偏移量。

32位寄存器在16位寄存器名称前加E,如EAX,扩展了16~31位

通用寄存器为什么分为高8位和低8位?

 

比如数据存储是从低位开始的,而我们的计算只用到低8位时,高8位也可以参与计算,而不是闲置浪费,这样精细划分提高了内存利用率;这样一个16位的寄存器可以当成2个8位寄存器使用

(速记:ABCDX  BSP  SDI  )

  1. AX称为累加器(Accumulator)  
    使用频度最高,用于算术、逻辑运算以及与外设传送信息等
  2. BX称为基址寄存器(Base address Register)      
    常用做存放地址的偏移地址,在间接寻址中用于存放基地址
  3. CX称为计数器(Counter)      
    作为循环和串操作等指令中的计数器,存放循环次数或重复次数
  4. DX称为数据寄存器(Data register)    
    常用来存放双字长数据的高16位,或在间接寻址的I/O指令中存放I/O端口地址。
  5. SP/ESP堆栈指针寄存器
    用以指出在堆栈段中当前栈顶的地址。入栈(PUSH)和出栈(POP)指令由SP给出栈顶的偏移地址。因此要与堆栈段寄存器SS配合使用,以指向栈顶的存储单元。
  6. BP/EBP基址指针寄存器
    指出要处理的数据在堆栈段中的基地址,故称为基址指针寄存器。也可以存放堆栈顶部地址的偏移量,此时的默认段为堆栈段SS。

SP和BP寄存器与SS段寄存器联合使用以确定堆栈段中的存储单元地址

  1. BX与BP在应用上的异同

作为通用寄存器,二者均可用于存放数据;

作为基址寄存器,BX通常用于寻址数据段DS;

BP则通常用于寻址堆栈段SS。 BX基址寄存器一般与DS或

  1. SI是源地址寄存器(Source Index)
    指向源数据所在单元
  2. DI是目的地址寄存器(Destination Index)
    可与SI/ESI(源变址寄存器)配合使用,指向目的数据所在单元;

堆栈指针寄存器SP/ESP不能作为变址寄存器使用外,其余七个通用寄存器在进行地址计算时都可用来存放参与运算的操作数

2.2段寄存器

别名:段选择符,也有的称其为段选择子

存放高位地址的寄存器叫段寄存器,低16位地址称为偏移量,放在通用寄存器,如基址寄存器BX

4个基本的段寄存器,用于把内存空间分成不同的段

其中ES,FS,GS,都称为附加数据段寄存器,FS,GS是32位微处理器中新增加的

为什么有了通用寄存器,还要设计段寄存器?

段寄存器的设计是为了方便CPU二次寻址,因为内存的空间很大,如果只有通用寄存器,当数据量很多时,CPU在存取数据时效率会下降,用段寄存器对空间分段,CPU在寻址时可以先找到段寄存器,再去找存放在通用寄存器中的数据

  1. 代码段CS(code segment)
    用于存放当前正在运行的程序。存放当前执行程序所在段的段地址,将其内容左移4位再加上IP指针的内容即为下一条执行指令的地址。
  2. 数据段DS(data segment)
    用于存放程序中用到的数据(如数值、字符、地址)。存放当前数据段的段地址,将其内容左移4为再加上计算所得的偏移地址即为对数据段指定单元进行读/写的地址。
  3. 堆栈段SS(stack segment)
    是内存中开辟的专用存储区,用来暂时保存寄存器中的数据。存放当前堆栈段的段地址,将其内容左移4位再加上SP的内容即为栈顶地址
  4. 附加段ES(extra segment)
    是附加的数据,在串操作指令中用于存放目的操作数

堆栈堆栈,堆和栈有什么区别???堆是运行时确定内存大小,而栈在编译时即可确定内存大小

堆和栈的区别 - 胖毛 - 博客园 (cnblogs.com)

段寄存器的使用规则:

2.3标志和指令指针寄存器

  1. EIP/IP指令指针寄存器
    用于存放指令所在单元地址的偏移量,与代码段寄存器CS配合使用,以便得到指令所在单元地址。IP地址是不断变化的,直到程序运行结束。(cs和ip是好兄弟)
  2. EFR/FR(EFLAGS/FLAGS)标志寄存器
    16位只用了其中9位, 用于存放系统的状态标志控制标志
    状态标志:是CPU在执行指令的过程中产生的。

1)符号标志SF(sign flag)值与运算结果的最高位相等

2)零标志ZF      (zero flag)   运算结果为0,值为1;否则值为0

3)奇偶标志PF  (parity flag)   运算结果低8位有偶数个1则值为1

4)进位标志CF  (carry flag)   加法运算使最高位有进位或减法运算使最高位有借位,则值为1

5)辅助进位标志AF   (auxiliary flag)    8位二进制加法运算使第3位向第4位有进位或减法运算使第3位向第4位有借位,则值为1;也叫半进位标志

6)溢出标志OF   (overflow flag)  运算过程中有溢出,则值为1:使用双符号位异或求值

  1. 控制标志:用于控制微处理器的操作和系统所处的工作方式

1)方向标志DF   (direction flag)  :如果IF置“1”,则CPU可以接受可屏蔽中断请求;反之,则CPU不能接受可屏蔽中断请求。

2)中断允许标志IF   (interrupt enable flag)  

3)跟踪标志TF   (trap flag)  也称陷阱标志

例题:这里可能会出考题,所以要识记各个符号位及含义

3.问答环节

段寄存器的使用规则?

8086CPU有20根地址线,最大可寻址内存空间为1MB。而8086的寄存器只有16位。用16位的地址寻址1MB空间是不可能的。所以就要把内存分段,也就是把1MB空间分为24 ,即16个段,每段不超过64KB(2^16,16位数据线就可以寻址)。

不过段寄存器仍然是16位的,它的内容代表了段基址的高16位,这个16位的地址后面再加上4个0就构成20位的段基址。而原来的16位地址只是段内的偏移量。这样,一个完整的物理内存地址就由两部分组成,高16位的段基址和低16位的段内偏移量,当然它们有12位是重叠的,它们两部分相加在一起,才构成完整的物理地址。

4.温故知新

1.请说出计算机中三种总线及各自功能?

  • 数据总线:数据总线是CPU与存储器CPU与I/O接口设备之间传送 各种指令数据信息的总线,这些信号通过数据总线往返,因此,数据总线上的信息是双向传输的。
  • 地址总线:地址总线上传送的是CPU向存储器I/O接口设备发出的地址信息,寻址能力是CPU特有的功能,地址信息仅由CPU发出,因此,地址总线上的信息是单向传输的。
  • 控制总线:控制总线传送的是各种控制信号,有CPU至存储器、I/O接口设备的控制信号,有I/O接口送向CPU的应答信号、请求信号,因此,控制总线是上的信息是双向传输的。

2.说出微处理器中寄存器的使用规则?

CS和IP搭配使用:CS用于存放当前正在运行的程序。存放当前执行程序所在段的段地址,IP用于存放指令所在单元地址的偏移量将CS其内容左移4位再加上IP指针的内容即为下一条执行指令的地址。IP地址是不断变化的,直到程序运行结束。(cs和ip是好兄弟)

SS和SP搭配使用:SS是内存中开辟的专用存储区,用来暂时保存寄存器中的数据存放当前堆栈段的段地址SP给出栈顶的偏移地址,将SS内容左移4位再加上SP的内容即为栈顶地址

3.已知逻辑地址为1F02H:38A0H如何计算出其对应的物理地址?

  1F020H

+   38A0H

---------------

  228C0H

4.请画出Pentium处理器的寄存器及名称(通用寄存器、段寄存器、指令指针和标志寄存器)

相关文章
|
6月前
|
算法 数据库 C语言
简单谈谈我参加计算机二级C语言的考试感受
计算机二级c语言主要内容是熟练掌握C语言基础语法,了解常用数据结构和算法,能够使用C语言进行程序设计,编写简单的应用程序。 计算机二级C语言试卷类型: + 选择题 + 程序填空题 + 程序改错题 + 程序设计题 这四个部分组成,其中大题目的分数占60分。
70 0
|
存储
计算机组成原理-复习大纲(期末版)一
本复习大纲基于白中英主编第六版计算机组成原理教材。
89 0
学习计算机组成原理(王道考研)------第八天
这篇文章是关于王道考研计算机组成原理的习题讲解,主要讨论了暂存寄存器、通用寄存器组和带有移位功能的寄存器在单总线结构计算机中的作用和重要性。
学习计算机组成原理(王道考研)------第八天
学习计算机组成原理(王道考研)------第十一天https://zhengyz.blog.csdn.net/article/details/121706379?spm=1001.2014.3001.5502
这篇文章是关于计算机组成原理的王道考研学习笔记,主要介绍了半导体存储器RAM和ROM的相关知识。
学习计算机组成原理(王道考研)------第十一天https://zhengyz.blog.csdn.net/article/details/121706379?spm=1001.2014.3001.5502
|
3月前
|
C语言 C++
学习计算机组成原理------第五天
文章分享了作者短期和长期的学习目标,包括在三个月内学完C语言、入门C++并尝试编写小游戏,六个月内掌握计算机网络、计算机组成原理和操作系统知识,并根据实际情况决定是考研还是找工作。
学习计算机组成原理------第五天
学习计算机组成原理------第四天
这篇文章是关于计算机组成原理的学习笔记,但提供的内容摘要主要是关于CSDN平台的余额抵扣说明,并没有具体涉及计算机组成原理的学习内容。
学习计算机组成原理------第四天
|
4月前
|
传感器 存储 程序员
《单片机原理与应用及C51编程技术》期末复习笔记
《单片机原理与应用及C51编程技术》期末复习笔记
|
5月前
|
存储 缓存 人工智能
组成原理知识梳理
组成原理知识梳理
85 1
|
6月前
|
存储 测试技术
山东大学计算机组成原理课设 实验四
第四次实验:2022年4月19日星期四,第7周 第二次部件级实验,算分
|
存储 程序员 调度
[计算机组成原理(唐朔飞 第2版)]第一章 计算机系统概论 & 第二章 计算机的发展及应用(学习复习笔记)
[计算机组成原理(唐朔飞 第2版)]第一章 计算机系统概论 & 第二章 计算机的发展及应用(学习复习笔记)