高等教育第2章-80868088微型计算机系统结构-1_第1页
高等教育第2章-80868088微型计算机系统结构-1_第2页
高等教育第2章-80868088微型计算机系统结构-1_第3页
高等教育第2章-80868088微型计算机系统结构-1_第4页
高等教育第2章-80868088微型计算机系统结构-1_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第2章

8086/8088微型计算机系统结构微型计算机系统组成原理8086的编程结构存储器的使用堆栈2.1

微型计算机系统组成原理2.1.1计算机的硬件基本结构

冯•依曼型计算机的基本工作原理可分为程序存储和程序控制。在物理结构上,计算机由运算器、控制器、存储器以及输入设备和输出设备组成。微机处理器CPU存储器接口I/O输入设备输出设备接口I/O数据总线DB地址总线AB控制总线CB计算机基本组成运算器是对信息进行加工、运算的部件,负责执行算术运算和逻辑运算。控制器根据程序中的指令发出各种控制信号,使各部件协同工作以完成程序所要求的各种操作。通常把它们做在1块电路芯片上,称为中央处理器,简称CPU。微机处理器CPU存储器接口I/O输入设备输出设备接口I/O数据总线DB地址总线AB控制总线CB计算机基本组成寄存器是CPU内部的存储单元,作用是暂存需要反复使用的数据。

计算机的存储器系统分为内存与外存,内存可与CPU真接相连。外存为软盘、硬盘、光盘等,它不可与CPU直接交换数据,其数据必须先读入内存才可被CPU使用,外存在CPU看来是一种I/0设备。CPU一般由寄存器阵列RS、算术逻辑运算单元ALU、控制器和内部总线及缓冲器组成。存储器是用来存放程序、原始数据和中间结果的记忆装置。寄存器通用寄存器:专用寄存器:通用寄存器用来暂存数据、操作数地址等。专用寄存器中常用的是程序计数器PC,它保存着下一条要执行指令的地址,每当取出执行一条指令后,其自动指向下一条指令。8086/8088中这个寄存器称为IP,并且指向下一条要取出的指令而不是要执行的指令。微机处理器CPU存储器接口I/O输入设备输出设备接口I/O数据总线DB地址总线AB控制总线CB计算机基本组成输入设备:用于将程序和原始数据送入计算机中。如键盘、鼠标等。输出设备:用来输出运算结果或对外部设备的控制信号。如显示器、打印机等。输入设备和输出设备简称为I/O设备,I/O设备一般不与CPU直接相连,而是通过称为I/O接口的电路与CPU相连。I/O接口匹配双方的工作速度和转换不兼容的信号。

整个内存储器系统由若干个存储单元组成,每个存储单元可存放8位二进制数,即1B。为了便于识别,每个存储单元都有1个编号,称为地址。地址采用几位二进制数编号,取决于CPU地址引脚的数目。例如:

某CPU有8根地址线,则存储单元应用8位二进制数编号,8位二进制可表示28=256个数,故系统最多可有256个存储单元。如右图所示。3DH内容地址00H01H02H03H04H2FH0FFH………………

微型计算机是在微处理器的控制下自动进行工作的,而微处理器发出控制的依据则是用户的程序指令。假设要进行如下运算:3+5-1=?,这一运算过程分如下步骤进行:1、取数3。2、取数5并做3+5运算,得结果8。3、取数1并做8-1运算,得结果7。4、保存运算结果到存储器中。5、停机。CPU能完成的1个基本动作称为指令,以上运算过程由5条指令实现。

一条指令应包含两个部分:操作码(表示进行什么操作,如:加法)和操作数(参加运算的数据,如加法运算中的被加数和加数,)这两部分在计算机内都用二进制数表示,也有少数指令没有操作数,它表示的动作不需要参数或使用固定的参数。

在程序中,若需要处理的数据较多,将数据集中放在内存的一个地方,称为数据区,而将指令代码集中放在内存的另一个地方,称为代码区。当用户程序装入内存后,只要使程序计数器PC指向其代码区的起始位置,则下次CPU取指令时即取了用户程序的代码,从而开始执行用户程序。2.1.2计算机的基本工作原理1、PC=00H,从地址00H处取一条指令。设第一条指令占2B,取出后PC自动加2。

CPU随后执行所取指令,指令操作码指出应将操作数3放入累加器A内。2、PC=02H,从地址02H处取一条指令。设第二条指令占2B,取出后PC自动加2。CPU随后执行刚才所取指令,指令操作码指出应将操作数5与累加器A的内容相加,并将结果8暂存A内。

3、PC=04H,从地址04H处取一条指令。设第三条指令占2B,取出后PC自动加2

。CPU随后执行刚才所取指令,指令操作码指出应将累加器A内容与操作数1相减,结果7暂存在A内。4、PC=06H,从地址06H处取一条指令。设第四条指令占2B,取出后PC自动加2。CPU随后执行刚才所取指令,指令操作码指出应将累加器A中内容保存到操作数所指定的内存单元中。5、PC=08H,从地址08H处取一条指令。设第五条指令占1B,取出后PC自动加

1。CPU随后执行刚才所取指令,该指令无操作数,指令操作码指出CPU应暂停,故CPU不再往下取指令。假设程序代码放在内存地址00H开始处,执行过程如下:8086的内部结构按功能分为:1、总线接口单元BIU

总线接口单元BIU是8086同存储器和I/O设备之间的接口部件,负责对全部引脚的操作,即8086所有对存储器和I/O设备的操作功能都是由BIU完成的。总线接口单元BIU由20位地址加法器、4个段寄存器、16位指令指针IP、指令队列缓冲器和总线控制逻辑电路等组成。2.2.18086CPU概述2.28086的编程结构2、执行单元EU

执行单元EU主要负责执行指令,它包含1个16位的运算器ALU,8个16位的寄存器,1个16位标志寄存器FLAGS,1个数据暂存寄存器和执行单元的控制电路。这个单元进行所有指令的解释和执行,同时管理上述有关的寄存器。

8086中,BIU负责取指令,EU负责执行指令,若指令要求访问内存或I/O设备,由EU请求BIU完成。BIU将指令机器码取到指令队列缓冲器中(6B),而与此同时EU可以从指令队列缓冲器中取出已有指令进行执行,这样使得取指令和执行指令可以同时进行。这种并行处理技术极大提高了8086的程序执行速度。

当遇到转移、循环、子程序调用或返回等非顺序执行类指令时,需要清空指令队列缓冲器,这时EU要等待BIU重新取指令。8086CPU内部结构示意图20位地址加法器4个段寄存器16位指令指针IP指令队列缓冲器总线控制逻辑电路执行单元的控制电路8个16位的寄存器1个16位标志寄存器FLAGS1个16位的运算器ALU1个数据暂存寄存器8086微处理器内部有14个16位寄存器,这14个寄存器分为三大类。8086寄存器通用寄存器数据寄存器变址寄存器指针寄存器AX

累加器BX

基数寄存器CX

计数寄存器DX

数据寄存器SP

堆栈指针寄存器BP

基址指针寄存器SI

源变址寄存器DI

目的变址寄存器段寄存器CS

代码段寄存器DS

数据段寄存器SS

堆栈段寄存器ES

附加段寄存器控制寄存器IP

指令指针寄存器FLAG标志寄存器2.2.28086寄存器结构1、通用寄存器

通用寄存器用途比较广泛,一般用在算术和逻辑运算指令中,用来存放算术运算的源/目的操作数,某些通用寄存器还常用来存放存储器操作数的地址。通用寄存器共8个,包括数据寄存器4个,指针寄存器2个和变址寄存器2个。(1)数据寄存器

数据寄存器有4个,这4个寄存器比较特殊,每个均既可作为1个16位寄存器使用,又可作为两个8位寄存器使用。当用作16位时,称为AX、BX、CX、DX。当用作8位时,高8位分别称为AH、BH、CH、DH,低8位分别称为AL、BL、CL、DL。(2)指针寄存器

指针寄存器有两个,均是16位寄存器。堆栈指针SP用以指出在堆栈操作中栈顶的位置,入栈(PUSH)和出栈(POP)指令要用到这一位置。基址指针BP指出要处理的数据在堆栈段中的基地址,故称为基址指针寄存器。(3)变址寄存器

在字符串处理中,被处理的数据称为源操作数,它们的偏移地址存放在源变址寄存器SI中,而处理后的字符串的偏移地址则放在目的变址寄存器DI中。注意

8个通用寄存器一般均可用来存放指令的操作数或保存运算结果,但在某些操作中又必须专用某个寄存器,如I/O操作时必须使用

AX,循环指令中必须使用CX。指针和变址实际上是相同的概念,都是存储单元地址,一般指令中用来存放存储单元的地址可作用BX、BP、SI、DI之一,但字符串操作指令中必须使用SI和DI,而堆栈操作中必须使用SP来存放栈顶单元地址。2、段寄存器

段寄存器是专用寄存器,用在存储器访问时存放段的基址。3、控制寄存器(1)指令指针寄存器

指令指针寄存器IP中存放着下一条要取出指令的偏移地址,它具有自动加1功能,每取出1B的指令机器码,它就自动加1,使它指向下一个要取的内存单元。这个寄存器由CPU内部使用,CPU正是利用此寄存器才确保程序中的指令能依次执行。程序中不可访问此寄存器,但某些指令具有隐含改变IP的功能,如转移、循环、调用子程序等指令。(2)标志寄存器OF溢出标志位:当补码运算有溢出时,OF为1;否则为0。

标志寄存器FLAG是8086的1个重要寄存器,它是按位使用的。标志寄存器共16位,8086中只使用了9位。标志寄存器格式如下:OFDFIFTFSFZFAFPFCFD15D4D3D2D1D0D9D8D7D6D5D14D13D12D11D10

状态标志位有6位,CPU在执行完1条影响标志寄存器的指令中,依据运算结果的状态对这些进行填写,程序员可用相关指令查看状态标志位从而得知运算结果的某些特点。2.2.3标志寄存器

控制标志位有3位,其作用是控制CPU执行程序的方式。程序员可用指令改变这些位的值,从而改变CPU运行程序的方式。

DF方向标志位;用以指定字符串处理时的方向,当该位置1时,字符串以递减顺序处理,即地址以从高到低顺序递减。反之,则以递增顺序处理。

IF中断允许标志位:用来控制8086是否允许接收外部可屏蔽中断请求。若IF=1,8086能响应外部可屏蔽中断请求,反之则不响应。

TF跟踪标志位:是为调试程序而设定的陷井控制位。当该位置1时,8086处于单步状态,此时每执行完1条指令就自动产生1次内部中断。当该位复位后,8086恢复正常工作。

SF符号标志位:它和运算结果的最高位相同。

标志寄存器FLAG是8086的1个重要寄存器,它是按位使用的。标志寄存器共16位,8086中只使用了9位。标志寄存器格式如下:OFDFIFTFSFZFAFPFCFD15D4D3D2D1D0D9D8D7D6D5D14D13D12D11D10

状态标志位有6位,CPU在执行完1条影响标志寄存器的指令中,依据运算结果的状态对这些进行填写,程序员可用相关指令查看状态标志位从而得知运算结果的某些特点。2.2.3标志寄存器

AF辅助进位标志位:当执行1次加法(或减法)运算使结果的低4位向高4位(若为16位运算,则是低8位向高8位)有进位(或借位)时,AF为1;否则为0。该位是为BCD码运算的调整指令而设的。

ZF零标志位:若当前的运算结果为零,ZF为1;否则为0。

PF奇偶标志位:该标志位反映运算结果中1的个数是偶数还是奇数。当指令执行结果的低8位中含有偶数个1时,PF为1;否则为0。

CF进/借位标志位:当执行1次加法(或减法)运算使最高位向前产生进位(或借位)时,CF为1;否则为0。6个状态标志位的功能是:

CF进/借位标志位:当执行1次加法(或减法)运算使最高位向前产生进位(或借位)时,CF为1;否则为0。

PF奇偶标志位:该标志位反映运算结果中1的个数是偶数还是奇数。当指令执行结果的低8位中含有偶数个1时,PF为1;否则为0。

AF辅助进位标志位:当执行1次加法(或减法)运算使结果的低4位向高4位(若为16位运算,则是低8位向高8位)有进位(或借位)时,AF为1;否则为0。该位是为BCD码运算的调整指令而设的。

ZF零标志位:若当前的运算结果为零,ZF为1;否则为0。

SF符号标志位:它和运算结果的最高位相同。OF溢出标志位:当补码运算有溢出时,OF为1;否则为0。01100100(+100)01100100(+100)+1100100010101011(-85)11111111(-1)+110101010

D7向前无进位,故运算后CF=0;结果超过了+127,有溢出,故OF=1

D7向前有进位,故运算后CF=1;结果不小于-128,无溢出,故OF=0进位标志用于无符号数的运算,而溢出标志用于带符号数的运算。注意不要混淆。如何判断A,B两个数值型数据的大小?计算A-B,有符号数,利用SF和OF判断:SF⊕OF=0,即:SF与OF相同,A≧B;SF⊕OF=1,即:SF与OF相异,A﹤B。无符号数,利用CF判断:CF=0,即:无借位,A≧B;CF=1,即:有借位,A﹤B。

DF方向标志位;用以指定字符串处理时的方向,当该位置1时,字符串以递减顺序处理,即地址以从高到低顺序递减。反之,则以递增顺序处理。

IF中断允许标志位:用来控制8086是否允许接收外部可屏蔽中断请求。若IF=1,8086能响应外部可屏蔽中断请求,反之则不响应。

TF跟踪标志位:是为调试程序而设定的陷井控制位。当该位置1时,8086处于单步状态,此时每执行完1条指令就自动产生1次内部中断。当该位复位后,8086恢复正常工作。3个控制标志位的功能是:2.3存储器的使用2.3.1存储器的逻辑结构3AH6DH00000H………………………00001H00002H00003H00004HFFFFEHFFFFFHA0A1A2A18A19地址译码器

每个存储器单元可存放1B的数据,即8位二进制数。每个存储单元要有1个惟一地址,以作为CPU访问时的标识。当CPU要访问某个存储单元时,CPU在地址总线上放上目标存储单元的地址,经过地址译码器译码,即可找到相应的单元。存储器结构示意图

在8086/8088系统中,1个多字节数据在内存中的存放规则为:高字节占高地址,低字节占低地址,并且用最低字节的地址代表这个数的地址。

8086/8088CPU有20条地址线,因而其发出的地址信号是20位二进制数,由于每个地址对应1个存储单元,故存储单元的地址也是20位二进制数(由于20位二进制数写起来太长,所以人们一般改用等价的十六进制表示,即5位十六进制数)。20位二进制数可表示220=1MB,因而8086/8088系统中存储单元的个数最多为1MB,即8086/8088的寻址空间为1MB。

内存分段使用方案:

分段,即将1MB的内存从逻辑上分为若干个小块,每个小块称为1个段。分段是逻辑上的概念,不是将内存硬件进行了物理分隔,所以不同的程序可以使用不同的的分段方法,而不会对物理内存造成影响。

分段以后,对每个段的存储单元用16位数从0开始重新进行编址,这个地址称为段内偏移量,简称为偏移量。16位二进制数最多能寻址的空间为216=64KB,故1个段不能多于64K个存储单元。当段长度达到64KB时,偏移量的范围从0000H~FFFFH。

段内偏移量是16位的,解决了运算和存储的问题,但它仅描述了1个存储单元距离段内首单元的位置偏移,并不能用来绝对定位1个存储单元。但若知道了段内首单元的20位物理地址,配合偏移量则可实现对段内任一存储单元的绝对定位。2.3.2存储器的分段第1条规则第2条规则:

1个段只有1个段基址,但每个单元各有自己的偏移量。

1个段必须从物理地址的最末4位二进制数全为0(即十六进制数最末1位数为0)的单元开始。这样,段首单元只有前16位需要描述,这16位数称为段基址。

段基址后再补上4个0(即乘以十六进制的10H),就是这个段首单元的物理地址。00000H00001H12340HFFFFEHFFFFFH0000H0001H0002HFFFFH………………存储器分段物理地址这4位为段基址偏移量

程序中用来描述存储单元位置的地址称为逻辑地址。

逻辑地址的表示:段基址:偏移量如1234:0000H,

1234:0001H等。由于逻辑地址是两个16位数,可分别被CPU所存储或运算。CPU最终必须使用物理地址来访问存储器。逻辑地址向物理地址的转换公式:

物理地址=段基址

10H+偏移量例如:逻辑地址1234:0001H表示的存储单元的物理地址为:1234

╳10H+0001H=12341H(1)段的长度<=64K(2)段只能从物理地址低4位二进制数全为0的单元开始。分段的规则:

8080/8088有4个段寄存器,其作用就是专门用来存放段基址。2.3.3段寄存器的使用得出:(1)内存可分为多个段。(2)段长度可在16~64K个单元之间。(3)段之间可以重叠,重叠部分的存储单元将有两个或更多个逻辑地址,但由这些逻辑地址运算出的物理地址是唯一的。存储单元的逻辑地址可用“段寄存器名:偏移量”来表示,如CS:0011H。只有段基址装入到段寄存器中,这个段内的存储单元才可被CPU所访问。

SS:堆栈段寄存器,专门用来存放堆栈段的段基址。

ES:附加段寄存器,用来存放附加数据段的段基址。当程序中的数据多于64KB时,仅用1个数据段放不下,此时可再设一附加数据段予以存放。当只有1个数据段时,也可将其段基址放入ES而不用DS,这样访问速度会慢一些。

DS:数据段寄存器,用来存放数据段的段基址。程序中一般将所有要用到的数据集中在1个段内存放,这个段称为数据段。

CS:代码段寄存器,指令机器码所在段的段基址必须装入到该寄存器中,它指出了下一条要取出的指令所在段的段基址,而指令指针寄存器IP内装的是下一条要取出的指令的段内偏移量,这两个寄存器配合给出了下一条要取指令的逻辑地址。CPU在取指令时,总是取自CS:IP所指单元。

8086/8088内部有专门的逻辑部件来完成将程序中提交的逻辑地址转换为真正访问存储器时所需的物理地址,这一部件称为20位地址加法器。

地址加法器是将逻辑地址中的段寄存器左移4位(即后面添加4个0,相当于乘以10H),然后再加上逻辑地址中的偏移量,从而计算出物理地址。段寄存器加法器逻辑地址150偏移地址19020位物理地址190段地址000020位地址加法器段寄存器和偏移地址的寄存器的组合关系存放存储器操作涉及的类型正常使用的段地址可被使用的段地址偏移地址取指令CS无IP堆栈操作SS无SP一般变量(以下情况除外)DSCS、ES、SS有效地址源数据串DSCS、ES、SSSI目标数据串ES无DI作为基址寄存器使用的BPSSCS、DS、ES有效地址

堆栈是内存的一个逻辑段,当这个段被指定为

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论