8086/8088微处理器的系统结构

2023-11-04 07:32

本文主要是介绍8086/8088微处理器的系统结构,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、 8086/8088微处理器的基本结构 

     Intel 8086 微处理器有16位寄存器和16位外部数据总线,20位地址总线,寻址为1MB的地址空间。Intel 8088 微处理器的外部数据总线为8位,其他与8086是一样的。   

 

图一 8086微处理器的结构

 

图一 8086微处理器的结构

 

      从图中可以看出,8086 CPU从功能上划分成两部分:总线接口单元BIU(Bus Interface Unit)和执行单元EU(Execution Unit).   

      BIU作为总线控制单元,负责与存储器及IO接口来传输数据;EU作为执行单元,负责执行指令。具体来说,BIU根据EU的请求,将指令送到指令流队列中排队,为EU提供即将执行的指令;EU从BIU的指令队列取得的指令和数据,来对片外操作数(片外就是指CPU以外存储数据的地方,比如存储器,IO接口等)进行访问的。这样EU与BIU可独立工作,BIU在保证EU与片外传输操作数的前提下,可进行指令预取,与EU可重叠操作。取指部分与执行部分可分开进行,提高CPU的利用率。(8086指令队列出现2个空字节,且EU未占总线,BIU自动取指令填充队列。)

     EU的组成部分:16位通用寄存器组(AX,BX,CX,DX,SP,BP,SI,DI)、算术逻辑单元(ALU)、标志寄存器(FLAG)、操作控制器电路。

     BIU的组成部分:段寄存器组(CS,DS,SS,ES)、指令指针(IP)、地址加法器、指令队列缓冲器、总线接口控制逻辑。

     EU的各个组成部分介绍:

     1. 16位通用寄存器组(AX,BX,CX,DX,SP,BP,SI,DI)

     (1)4个16位通用的数据寄存器:AX、BX、CX、DX,又可以各分为两个8位的寄存器:AL、AH、BL、BH、CL、CH、DL、DH

     其中:

     AX: 具有累加功能,可作16位累加器,AL可作为8位累加器。

     BX: 在基址变址寻址时作为基址寄存器。

     CX: 在循环类与串处理类指令执行时作为默认的计数器寄存器。

     DX: 作为数据寄存器使用,在双字运算中存放高16位数据。

     (2)另外四个地址指针和变址寄存器

     SP(Stack Pointer):堆栈指针寄存器,用来指出堆栈的顶部偏移地址。

     BP(Base Pointer):基地址指针寄存器,在间接寻址时作为基地址寄存器。

     SI(Source Index):源变址寄存器,在间接寻址时作为地址寄存器或变址寄存器。在字符串处理指令中,作为目的变址寄存器。

     DI(Destination Index):目的变址寄存器,在间接寻址时作为地址寄存器或变址寄存器。在字符串处理指令中,作为源变址寄存器。 

     2.算术逻辑单元(ALU)

     它主要完成算术运算、逻辑运算。    

     3.标志寄存器(FLAG)【1】

     它是一个16位的寄存器,用来记录程序中运行结果的状态信息,它们是根据有关指令的运行结果由 CPU 自动设置的。其中9位有定义, 9位中6位表示状态,3位表示控制标志,见图二:   

图二 标志寄存器(FLAG)

图二 标志寄存器(FLAG)     

 

      (1)进位标志(CF):运算指令执行之后,若在最高位上产生进位、借位时,该标志位被置1。 具体地说,两个数相加时,最高位(D15或D7)有进位,或当两个数相减时,最高位有借位,进位标志位被置1,即CF=1;否则CF=0。
     (2)奇偶标志(PF):8086/8088 CPU中采用奇校验,运算指令执行后,运算结果的低8位中含1的位数为偶数时,该标志位被置1,否则被置0。也称为偶标志位。
     (3)辅助进位标志(AF):运算指令执行后。当两个数相加(减)时,当D3有向D4进(借)位时,该标志位被置1,否则被置0。 
     (4) 全零标志(ZF):运算指令执行后,结果的每一位都为零时该标志位被置1。 
     (5) 符号标志(SF):在带符号数运算时,如果运算结果最高位为1,表示结果为负值,SF位被置1,否则SF位被置0。SF也称为负标志位。 
    (6)溢出标志(OF):运算指令执行后,结果的数值产生溢出,该标志位被置1,否则被置0。 
     (7)方向标志(DF):用于字符串指令操作,当DF=0时,字符串处理由低地址向高地址处理;当DF=1时,则从高位地址向低位地址处理。 
     (8)中断允许标志(IF):用来控制可屏蔽硬件中断。当IF=1时8086微处理器可以接受片外来的可屏蔽中断请求,开中断;IF=0时片外来的中断请求被阻止,关中断,也称被屏蔽。 
     (9)陷阱标志(TF):该标志用来控制单步中断。在TF=1时,以单步方式执行程序。即8086每执行完—条指令就产生处理器内部单步中断。单步执行指令可使程序员跟踪指令的执行过程,进行积序的调试。 
     4.操作控制电路

     操作控制电路是8086微处理器的控制核心,首先将指令队列中送来的一条指令进行译码,然后根据不同指令的功能产生出所需要的控制信号来控制各相关功能部件的操作。

 

     BIU的各个组成部分介绍: 

     1.段寄存器组(CS,DS,SS,ES)

     CS:代码段寄存器,存放当前将被执行的程序的段地址。

     DS: 数据段寄存器,存放当前被执行的程序所用操作数的段地址。

     SS:堆栈段寄存器,存放当前被执行的程序所用堆栈的段地址。

     ES:附加段寄存器,存放当前被执行程序所用操作数的段地址。

     其中,DS、SS和ES寄存器的内容可由程序设置,而CS寄存器的内容不能用程序设置。 

     2.指令指针寄存器(IP)

     它主要用来存放将要执行的下一条指令的偏移量,与CS联合形成下一条指令的物理地址。 

     3.地址加法器

     它用来计算物理地址的,物理地址的形成:

                          物理地址 = 段基地址×10H + 偏移量

     8086微处理器有20条地址总线,可寻址1MB的存储器空间。由于8086微处理器是一个16位结构,段寄存器均为16位,这样16位寄存器就无法存放20位地址了。为了解决这个问题,8086内部就设置了一个20位的地址加法器,它首先将16位的段地址左移4位,然后再与16位的偏移地址相加形成20位的物理地址,如图三:

 

图三 物理地址形成示意图

 

图三 物理地址形成示意图 

     举个例子,每当取指令的时,则自动选择代码段寄存器CS,再加上由指令指针寄存器(IP)提供的16位偏移量,按上述方法计算后得到所要取的指令的20位物理地址。 

     4.指令队列缓冲器

     它是一个6B的先进先出缓冲器。8086微处理器具有指令预取功能,当执行部件(EU)不使用总线接口部件与片外进行数据传送,总线接口部件就可以从存储器中读取指令填充指令队列缓冲器。     8088微处理器的指令队列缓冲器只有4B深度。

 

     5.总线接口控制逻辑 

     这部分电路是处理器与外部总线的接口,它首先把已形成的20位地址码经地址线送出片外,然后经数据总线进行操作数或指令代码的传输。操作数送相关寄存器或由相关寄存器送到片外,而指令代码从片外存储器读入到指令队列等待译码执行。

 

二、8086/8088微处理器的存储器管理

 

      8088/8086CPU有20条地址总线,可寻址1MB的存储器空间。由于8086微处理器是一个16位结构,段寄存器均为16位,16位寄存器就无法存放20位地址了,如何解决这个问题请参见上面的地址加法器的介绍。

     前面说了,8086微处理器是一个16位结构,段寄存器均为16位,那么最大的寻址范围为64K。8086/8088把1M主存空间划分为若干段,每个段由连续的字节单元组成,最大长度为64K(即65536)。每个段可作为独立寻址的逻辑单位,一个段中的代码和数据,可存放在该段内的任意单元中。每个段的起始地址必须能够被16整除,即在20位的段基址中最低4位必须是“0”。每个段首地址的高16位二进制代码就是该段的段号(称段基地址)或简称段地址,段地址存放在段寄存器CS、DS、SS、ES中,对段寄存器设置不同的值来使微处理器的段寄存器指向存储器中不同的段。 【2】

    在程序中设置的段称为逻辑段。各逻辑段的大小按实际需要确定,最大为64KB,实际应用时可小于64KB,其未用空间可再定义为其它段的空间,因而可出现段的重叠。各逻辑段可以是邻接的、间隔的、部分重叠的和完全重叠的。【3】

     在8086/8088微处理器中,描述存储器地址的三个相关术语:物理地址、偏移地址、逻辑地址。

     (1)物理地址:是由8086/8088芯片地址引线送出的20位地址码,它用来参加存储器的地址译码,最终读/写所访问的的一个特定的存储单元。

     (2)偏移地址:某个存储单元相对于该段首地址的差值,用16位二进制代码。

     (3)逻辑地址:是在程序中对存储器地址的一种表示方法:

                           逻辑地址 = 段地址:偏移地址

 

参考资料:

【1】http://www.sgrtvu.net.cn/jx_data/lg_data/czs/wjjk/chapter2_2a.htm

【2】http://www.hljrtvu.com/xbwz/lg/myweb/d2/2.2.htm

【3】http://hi.baidu.com/hyap/blog/item/4fbdeafe3f9c2d375d60086c.html

 

 

 

 

 


 

 

 

 

 

 

这篇关于8086/8088微处理器的系统结构的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/344235

相关文章

计算机组成与系统结构复习大纲

仅为纲要,知识点待后续文章补充~ 1 概念题 冯·诺伊曼机特点计算机功能部件CPU组成计算机系统层级结构多级层次的存储系统ALU 组成溢出判断DRAM 刷新DRAM 读写周期ROM 及类型主存扩展方法片选及地址分配存储器读写周期Cache 基本原理Cache 替换策略Cache 一致性 / 写策略外围设备分类寻址方式流水线的冒险与处理高级流水线技术中断和异常区别及类别系统总线结构总线分类总

【GD32】从零开始学兆易创新32位微处理器——RTC实时时钟+日历例程

1 简介 RTC实时时钟顾名思义作用和墙上挂的时钟差不多,都是用于记录时间和日历,同时也有闹钟的功能。从硬件实现上来说,其实它就是一个特殊的计时器,它内部有一个32位的寄存器用于计时。RTC在低功耗应用中可以说相当重要,因为在使用外部低速晶振的条件下,它在所有的低功耗模式下都可以工作,这使得RTC很适合实现芯片的低功耗唤醒。下面是RTC的框图。 咋一看RTC的内部还挺复杂的。 2 硬件时

8088汇编指令速查手册

jmpi是段间跳转指令,用于x86实模式下,       如:BOOTSEG = 0x0c70             jmpi    4, #BOOTSEG       假如当前段CS==00h,那么执行此指令后将跳转到段CS==0x0c70,当然段cs的值也变为0x0c70,接下来将执行指令0x0c70:0004处的指令。 8088 汇编速查手册

8086汇编语言入门之数据和前奏

汇编言语之初体验 时间匆匆,学习汇编言语言,断断续续,也差不多一个星期了。 差不多每个晚上,自己都看着那书,从不知所措,逐渐开始入门, 而现在,还是没有输出一段显存中的 “hello world,welcome to masm!", 在MS-DOS环境: 并在debug进行操作: -r -d -u -a -e ms-dos: edit edit masm.asm mas

8086汇编言语错误的集合

源程序文件行:WARNING/ERROR错误信息码:错误描述信息 错误描述信息码由五字符组第字母A,表示汇编语言程序错;接着数字指明错类别:'2'严重错误,'4'严肃警告,'5'建议性警告,三位错误编号.错误编号错误描述0Block nesting error嵌套错.嵌套程,段,结构,宏指令或重复块等非结束.例嵌套语句外层结束语句,内层结束语局1Extra character

8086汇编语言之初认识

汇编语言就是对硬件直接操作的语言,变相的机器语言。 机器语言就是二进制的数据。 而汇编语言就用人所认知的思维知识代替机器语言的二进制码。 汇编指令是一种助记符,有明确的机器码。如:1000100111011000,汇编:mov ax bx; CPU对存储器信息的读取有三大信息: 1).地址信息。 2).数据信息。 3).控制信息。 也逻辑可以说:地址总线,数据总线,控制总线。 存

android系统结构

Db:存放数据库模型相关代码 GSON:存放gson相关模型 Service:存放服务相关代码 Util:存放工具相关代码   Litepal:数据库操作 Okhttp:进行网络请求 GSON:解析gson数据 GLide:加载或者显示图片   表province,city,country:省、市、县信息存储 实体类Province,City, Country   服务器

8086 汇编笔记(七):数据处理的两个基本问题

一、bx、si、di 和 bp 在使用过程中有几处需要注意的地方: (1)在 8086CPU 中,只有这4个寄存器可以用在“[....]”中来进行内存单元的寻址。其他寄存器是不可以的,例如“mov bx, [ax]”就是错误的用法。 (2)在[...]中,这四个寄存器可以单个出现,或只能以4种组合出现:bx和si、bx和di、bp和si、bp和di。为了方便记忆可以将si和di看做一组,将b

32位微处理器的发展动向

2003 年我国嵌入式系统应用产品经济总量达1000亿元,其中嵌入式处理器芯片约为100亿。2004年我国嵌入式微处理器销售总量约为10.2亿片,4位 MCU占2.6亿片、8位约占6.6亿片,32位MPU占0.75亿片。另外,据有关机构预测分析,今年中国大陆市场8位MCU的需求量会增长15%- 20%左右;32位MPU的需求量继续以100%的速度增长。 由此可以看出,8位MCU市场已逐步趋

基于8086汇编语言实现的俄罗斯方块游戏

一 需求描述 在调度方面采用调用系统中断例程的方式,同时通过读写文件,进行最高分的保存。 游戏中提供了一个绚丽的场景和悦耳的音乐,带来无限享受。 俄罗斯方块游戏的所有功能包括: 控制方块的移动,加速,变形等 行满则消除行,计算分数 记录分数到文件,保存存档 游戏结束 二 程序设计 2.1 设计内容 Magicalblock是个老幼皆宜的小游戏,它的实现由四块正方形的色块组成,,计算机随机产生不同