IBMPC微机组成原理与基本结构.pptx

上传人:修**** 文档编号:85122721 上传时间:2023-04-10 格式:PPTX 页数:48 大小:168.22KB
返回 下载 相关 举报
IBMPC微机组成原理与基本结构.pptx_第1页
第1页 / 共48页
IBMPC微机组成原理与基本结构.pptx_第2页
第2页 / 共48页
点击查看更多>>
资源描述

《IBMPC微机组成原理与基本结构.pptx》由会员分享,可在线阅读,更多相关《IBMPC微机组成原理与基本结构.pptx(48页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、IBM-PC微机组成原理微机组成原理IBM-PC微机基本结构微机基本结构一、一、微机的一般构成微机的一般构成 运算器、控制器、存储器、输入设备和输出运算器、控制器、存储器、输入设备和输出设备。设备。一般计算机应包括五大部件:一般计算机应包括五大部件:由于微机的主要特点是其体积很小,因此在系由于微机的主要特点是其体积很小,因此在系统设计上就有一些特殊考虑,统设计上就有一些特殊考虑,它将运算器和控制器它将运算器和控制器两大部件集成在一个集成电路芯片上,称为微处理两大部件集成在一个集成电路芯片上,称为微处理器器,也叫中央处理器,简称,也叫中央处理器,简称CPU 1微处理器微处理器CPU主存储器主存储

2、器I/O接口接口I/O设备设备I/O接口接口I/O设备设备地址总线地址总线数据总线数据总线控制总线控制总线系统总线系统总线微机硬件系统基本组成框图微机硬件系统基本组成框图21、中央处理器、中央处理器CPU 微型计算机中的中央处理器也叫微处理器。它包括微型计算机中的中央处理器也叫微处理器。它包括运算器和控制器。运算器和控制器。功能:功能:从主存储器中逐条取出构成程序的指令序从主存储器中逐条取出构成程序的指令序列,分析各指令的功能,控制计算机各部列,分析各指令的功能,控制计算机各部件完成指定功能的各项操作。件完成指定功能的各项操作。2、主存储器、主存储器 主存储器是用于存放程序和数据的部件。它由若

3、干主存储器是用于存放程序和数据的部件。它由若干个存储单元构成。存储单元的多少表示存储器的容量。个存储单元构成。存储单元的多少表示存储器的容量。每个存储单元使用一个唯一的编号来标识,称为存储单每个存储单元使用一个唯一的编号来标识,称为存储单元的地址。对每个存储单元内容的存和取是按照地址进元的地址。对每个存储单元内容的存和取是按照地址进行访问的。行访问的。3计算机存储信息的基本单位是一个二进制位,一位可存计算机存储信息的基本单位是一个二进制位,一位可存储一个二进制数储一个二进制数0或或1。每。每8位组成一个字节(位组成一个字节(BYTE)。7 6 5 4 3 2 1 0在大多数计算机中,存储器的组

4、织都是以字节为基本在大多数计算机中,存储器的组织都是以字节为基本单位。每一个基本单位称为一个存储单元。单位。每一个基本单位称为一个存储单元。一个存储器是由许多的存储一个存储器是由许多的存储单元构成的,如某存储器的单元构成的,如某存储器的容量为容量为32KB,1MB,128MB等等等。为了区分这些不同的存等。为了区分这些不同的存储单元,一般使用单元地址储单元,一般使用单元地址来指示各个存储单元。如一来指示各个存储单元。如一个个10位二进制数表示的地址,位二进制数表示的地址,可以用来区分可以用来区分21010241K个单元。个单元。存储器存储器地址地址00000000000000000001000

5、000001011111111114习惯上将习惯上将CPU与主存储器合称为主机与主存储器合称为主机 在计算机中,除了主存储器之外,一般还配置有辅在计算机中,除了主存储器之外,一般还配置有辅助存储器,简称辅存。由于它的位置是在主机之外,因助存储器,简称辅存。由于它的位置是在主机之外,因此也叫做外存。此也叫做外存。3、输入输出设备及接口、输入输出设备及接口 输入设备将外部信息(程序、数据和命令)送入输入设备将外部信息(程序、数据和命令)送入计算机。包括键盘、鼠标等。计算机。包括键盘、鼠标等。输出设备将计算机处理后的结果转换为人或其它系输出设备将计算机处理后的结果转换为人或其它系统能识别的信息形式向

6、外输出。如显示器、打印机等。统能识别的信息形式向外输出。如显示器、打印机等。有的设备既具有输入功能又具有输出功能。如磁有的设备既具有输入功能又具有输出功能。如磁盘、磁带、触摸显示屏等。盘、磁带、触摸显示屏等。5 由于由于I/O设备的工作速度、工作原理以及所处理的设备的工作速度、工作原理以及所处理的信息格式等与主机相差很大,因此信息格式等与主机相差很大,因此I/O设备要通过设备要通过I/O接接口才能与系统总线连接。口才能与系统总线连接。I/O接口是主机与接口是主机与I/O设备之间设置的逻辑控制部件。设备之间设置的逻辑控制部件。通过它实现主机与通过它实现主机与I/O设备间的信息传送。设备间的信息传

7、送。4、系统总线、系统总线 系统总线将系统总线将CPU、存储器和、存储器和I/O设备连接起来,设备连接起来,用于传送各大部件之间的信息。用于传送各大部件之间的信息。系统总线包括地址总线、数据总线和控制总线三系统总线包括地址总线、数据总线和控制总线三组。它们分别用于传送不同的信息。组。它们分别用于传送不同的信息。6二、二、Intel8086/8088 CPU的功能结构的功能结构 指令是构成汇编语言程序的最基本单位。就象高级语指令是构成汇编语言程序的最基本单位。就象高级语言中的一个语句。言中的一个语句。程序是由一系列的指令程序是由一系列的指令指令序列构成。指令序列构成。CPU执行指令序列就是重复执

8、行以下两个步骤:执行指令序列就是重复执行以下两个步骤:从存储器中取指令从存储器中取指令执行指令所规定的功能执行指令所规定的功能7这两个步骤的执行又可以分为两种情况:1.串行方式串行方式取指取指 执行执行 存数存数 取指取指 执行执行 取指取指 取数取数 执行执行 忙忙 闲闲 忙忙 忙忙 闲闲 忙忙 忙忙 闲闲 CPU外部总线外部总线特点:特点:(1)当)当CPU在执行指令时,不需要占用外部总线,但此时在执行指令时,不需要占用外部总线,但此时总线也不能作它用,因此外部总线的空闲时间比较多总线也不能作它用,因此外部总线的空闲时间比较多。(2)在从存储器取指令或数据时,总线处于忙状态,其所)在从存储

9、器取指令或数据时,总线处于忙状态,其所占用的时间也较长。但占用的时间也较长。但CPU却只需要使用很短的时间去处却只需要使用很短的时间去处理。因此大部分时间都是处于闲置状态。理。因此大部分时间都是处于闲置状态。采用串行工作方式的计算机其运行速度较慢采用串行工作方式的计算机其运行速度较慢时间时间82.指令流水线结构指令流水线结构AHALBHBLCHCLDISPBPSI地址加法器地址加法器IPCSDSSSES总线总线控制控制逻辑逻辑暂存器暂存器标志寄存器标志寄存器ALUEU控制器控制器1 2 3 4 5 6控制信号控制信号16位数据总线位数据总线段寄存器段寄存器通用寄存器组通用寄存器组外部总线外部总

10、线16位位CPU内总线内总线AXBXCX20位地址总线位地址总线指令队列指令队列执行单元(执行单元(EU)总线接口单元(总线接口单元(BIU)9(1)执行单元)执行单元EUEU的主要任务是分析与执行指令,它包括:的主要任务是分析与执行指令,它包括:A、从指令队列中取出指令代码,由控制器译码后产生、从指令队列中取出指令代码,由控制器译码后产生相应的控制信号,控制各部件完成指令规定的操作。相应的控制信号,控制各部件完成指令规定的操作。B、对操作数执行各种指定的算术或逻辑运算、对操作数执行各种指定的算术或逻辑运算C、向、向BIU发送访问主存或发送访问主存或I/0的命令,并提供相应的的命令,并提供相应

11、的地址和传送的数据地址和传送的数据10(2)总线接口单元)总线接口单元BIUBIU负责负责CPU与存储器、与存储器、I/0的信息传送。具体功能包括:的信息传送。具体功能包括:A、取指令、取指令根据根据CS寄存器和指令指针寄存器和指令指针IP形成形成20位的物位的物理地址,从该地址指定的存储器单元中取出指令,并暂存理地址,从该地址指定的存储器单元中取出指令,并暂存到指令队列中,等待到指令队列中,等待EU取走并执行。取走并执行。B、存取数据、存取数据在在EU执行指令的过程中,如果需要与存执行指令的过程中,如果需要与存储器或储器或I/O端口传送数据时,根据端口传送数据时,根据EU提供的数据和地址,提

12、供的数据和地址,并结合相应的段寄存器(并结合相应的段寄存器(DS、ES或或SS)的内容,进入外)的内容,进入外部总线周期,与存储器或部总线周期,与存储器或I/0进行数据的存取。进行数据的存取。EU和和BIU是既分工又合作的两个独立部分。它们的操是既分工又合作的两个独立部分。它们的操作在一定程序上是并行工作的,分别完成不同的任务,因作在一定程序上是并行工作的,分别完成不同的任务,因而大大加快了指令执行速度。而大大加快了指令执行速度。11Intel 8086/8088 运行时执行过程大致如下图所示。运行时执行过程大致如下图所示。执行执行 执行执行 执行执行 执行执行 忙忙存数存数取数取数取指取指

13、取指取指 取指取指取指取指忙忙忙忙忙忙忙忙忙忙EUBIU外部总线外部总线时间时间.等待等待122.2 Intel 8086/8088CPU寄存器结构及其用途寄存器结构及其用途一、通用寄存器一、通用寄存器AHALBHBLCHCLDHDLAXBXCXDXSPBPSIDIIPFLAGSDSESSSCS累加器累加器基址寄存器基址寄存器计数寄存器计数寄存器数据寄存器数据寄存器堆栈寄存器堆栈寄存器基址寄存器基址寄存器源变址寄存器源变址寄存器目的变址寄存器目的变址寄存器指令指针指令指针标志寄存器标志寄存器堆栈段寄存器堆栈段寄存器代码段寄存器代码段寄存器数据段寄存器数据段寄存器附加段寄存器附加段寄存器通用寄存

14、器通用寄存器8个个控制寄存器控制寄存器2个个段寄存器段寄存器4个个13 Intel 8086/8088有有8个个16位通用寄存器,它们一般不只位通用寄存器,它们一般不只用作某个特定的功能,而是具有良好的通用性,可以由程用作某个特定的功能,而是具有良好的通用性,可以由程序设计人员进行编程访问。序设计人员进行编程访问。1.数据寄存器数据寄存器 它包括它包括AX、BX、CX和和DX四个寄存器。它们中的每一四个寄存器。它们中的每一个既可以是个既可以是16位寄存器,也可以分成两个位寄存器,也可以分成两个8位寄存器使用。位寄存器使用。即可以当作即可以当作8个独立的个独立的8位寄存器使用。位寄存器使用。数据

15、寄存器既可以用来存放参加运算的操作数,也可以数据寄存器既可以用来存放参加运算的操作数,也可以存放运算的结果。在多数情况下,使用这些寄存器时必须在存放运算的结果。在多数情况下,使用这些寄存器时必须在指令中指明。指令中指明。例:例:MOV AX,BX;将;将BX的内容送到的内容送到AX中中 ADD CH,DH;将;将DH和和CH的内容相加,结果送到的内容相加,结果送到CH14 在有些指令中,不需要明确指出使用的寄存器名,即在有些指令中,不需要明确指出使用的寄存器名,即隐念使用了某寄存器,称为隐含使用。隐念使用了某寄存器,称为隐含使用。例如,在循环指令例如,在循环指令 LOOP中,中,CX被隐含指定

16、作循环次数计数用。被隐含指定作循环次数计数用。另外,个别指令对寄存器有特定的使用,并且又必须在另外,个别指令对寄存器有特定的使用,并且又必须在指令中指明它的名字,这类寄存器的使用称为特定使用。指令中指明它的名字,这类寄存器的使用称为特定使用。例如,在移位指令(例如,在移位指令(SHL AX,CL)中,)中,CL被固定用作移位次数。被固定用作移位次数。2.指针寄存器指针寄存器指针寄存器有堆栈指针指针寄存器有堆栈指针SP和基址指针和基址指针BP 它们一般被用作它们一般被用作16位地址指针,在形成位地址指针,在形成20位的物理地位的物理地址时常被作为偏移量使用。址时常被作为偏移量使用。15SP指针指

17、针在进行堆栈操作时,被隐含使用,指向堆栈顶在进行堆栈操作时,被隐含使用,指向堆栈顶部单元。部单元。BP指针指针被用来指向堆栈段内某一存储单元。被用来指向堆栈段内某一存储单元。BP除用作除用作地址指针外也可以象数据寄存器一地址指针外也可以象数据寄存器一 样,存放参加运算的操样,存放参加运算的操作数和运算的结果。作数和运算的结果。3.变址寄存器变址寄存器有两个有两个16位的变址寄存器位的变址寄存器SI和和DI,一般被用来作地址指针。,一般被用来作地址指针。SI源变址寄存器源变址寄存器DI目的变址寄存器目的变址寄存器 同同BP寄存器一样,寄存器一样,SI和和DI也可以用作通用数据寄存器也可以用作通用

18、数据寄存器存放操作数和运算结果。存放操作数和运算结果。16二、段寄存器二、段寄存器 8086/8088CPU在使用存储器时,将它划分成若干个段。在使用存储器时,将它划分成若干个段。每个段用来存放不同目的内容,如程序代码、数据等等。每个段用来存放不同目的内容,如程序代码、数据等等。每个存储段用一个段寄存器来指明该段的起始位置(也叫每个存储段用一个段寄存器来指明该段的起始位置(也叫段基址)。段基址)。代码段代码段数据段数据段堆栈段堆栈段附加段附加段ES CSDSSS段寄存器段寄存器段基址段基址段基址段基址段基址段基址段基址段基址17CPU在访问存储器时必须指明两个内容:在访问存储器时必须指明两个内

19、容:(1)所访问的存储单元属于哪个段,即指明使用的段)所访问的存储单元属于哪个段,即指明使用的段寄存器。寄存器。(2)该存储单元与段起始地址(段基址)的偏移大小,)该存储单元与段起始地址(段基址)的偏移大小,即偏移量。即偏移量。在程序设计中,一个程序将存储器划分成多少个存在程序设计中,一个程序将存储器划分成多少个存储段是任意的。但在程序运行的任何时刻最多只能有用储段是任意的。但在程序运行的任何时刻最多只能有用CS、DS、ES和和SS分别指定的分别指定的4个当前段。个当前段。18三、指令指针三、指令指针IP CPU在运行程序时,以在运行程序时,以IP的内容作为将要执行指令的内容作为将要执行指令在

20、内存中的存放地址的偏移量,以段寄存器在内存中的存放地址的偏移量,以段寄存器CS作为代码作为代码段的基址指针,即以段的基址指针,即以CS和和IP的内容共同构成了一条指令的内容共同构成了一条指令的存放地址。的存放地址。CPU根据根据CS和和IP寄存器的内容到内存中去取指令,寄存器的内容到内存中去取指令,当取出一条指令后,当取出一条指令后,IP内容自动修改为指向下一条指令。内容自动修改为指向下一条指令。.CSIP偏移量偏移量代码段基址代码段基址CPU下一条指令下一条指令正在执行的指令正在执行的指令19子程序调用指令子程序调用指令CALL,将,将IP原有内容自动压入堆栈,而将原有内容自动压入堆栈,而将

21、子程序的入口地址偏移量自动送入子程序的入口地址偏移量自动送入IP,而返回指令,而返回指令RET,又自动从堆栈中弹回原有又自动从堆栈中弹回原有IP的内容。的内容。转移指令将指令中的目的地址的偏移量送入转移指令将指令中的目的地址的偏移量送入IP例如,下面两种指令就可以自动改变例如,下面两种指令就可以自动改变IP寄存器的内容。寄存器的内容。注意注意:IP的内容不能被直接进行访问,即不能用指令去的内容不能被直接进行访问,即不能用指令去读读IP的值的值,也不能用指令给它赋值。但是可以通过某些指,也不能用指令给它赋值。但是可以通过某些指令的执行而自动修改令的执行而自动修改IP的内容。的内容。20四、标志寄

22、存器四、标志寄存器 标志寄存器是用来反映标志寄存器是用来反映CPU在程序运行时的某些状态,在程序运行时的某些状态,如是否有进位、奇偶性、结果的符号、结果是否为零等等。如是否有进位、奇偶性、结果的符号、结果是否为零等等。8086/8088CPU中标志寄存器的长度为中标志寄存器的长度为16位,但其中只有位,但其中只有9位才有意义。位才有意义。1514131211109876543210OF DFIFTFSFZFAFPFCF进进位位位位奇奇偶偶位位零值位零值位辅助进位位辅助进位位单步标志位单步标志位符号位符号位中断允许位中断允许位方向位方向位溢出位溢出位211.进位位进位位CF 在进行算术运算时,若

23、最高位(对字操作是第在进行算术运算时,若最高位(对字操作是第15位,字节位,字节操作是第操作是第7位)产生进位或借位时位)产生进位或借位时CF被自动置被自动置“1”,否则置,否则置“0”。在移位类指令中,在移位类指令中,CF也被用来存放从最高位(左移时)也被用来存放从最高位(左移时)或最低位(右移时)移出的数值(或最低位(右移时)移出的数值(0或或1)。)。2.奇偶位奇偶位PF 当指令操作结果的低当指令操作结果的低8位中含有位中含有1的个数为偶数时,则的个数为偶数时,则PF被置被置1,否则,否则PF被置被置0。注意注意:PF只反映操作结果的低只反映操作结果的低8位的奇偶性,与指令操位的奇偶性,

24、与指令操作数的长度无关。作数的长度无关。223.辅助进位位辅助进位位AF 在进行算术运算时,若低字节的低四位向高在进行算术运算时,若低字节的低四位向高4位产生位产生进位或借位,即第进位或借位,即第3位产生进位或借位时,位产生进位或借位时,AF位被置位被置1,否则置否则置0。AF标志位用于十进制运算的调整。标志位用于十进制运算的调整。注意:注意:AF只反映运算结果低八位,与操作数长度无关。只反映运算结果低八位,与操作数长度无关。4.零值位零值位ZF若运算结果各位全为若运算结果各位全为0,则,则ZF被置被置1,否则置,否则置0。5.符号位符号位SF 将运算结果视为带符号数,当运算结果为负数时将运算

25、结果视为带符号数,当运算结果为负数时SF被被置置1,为正数时,则置,为正数时,则置0。23 由于第由于第7位是字节操作数的符号位,而第位是字节操作数的符号位,而第15位是字位是字操作数的符号位,因此,操作数的符号位,因此,SF位与运算结果的最高位位与运算结果的最高位(第(第7位或第位或第15位)相一致。位)相一致。6.溢出位溢出位OF 当运算结果超过机器用补码所能表示数的范围时,当运算结果超过机器用补码所能表示数的范围时,则则OF置置1,否则置,否则置0.字节数据,机器用补码所能表示的数范围为字节数据,机器用补码所能表示的数范围为-128+127。字数据的表示范围为:字数据的表示范围为:-32

26、768+32767注意:注意:溢出与进位是两个完全不同的概念,不能相互混淆。溢出与进位是两个完全不同的概念,不能相互混淆。24例如:计算例如:计算 -85D+(-1D)=-86D10101011 B+)11111111 B10101010 B1-86D 计算计算 100 D+100 D=200 D01100100 B+)01100100 B11001000 B -56 DCF=0,OF=1,结果发生溢出,即结果出错。结果发生溢出,即结果出错。进位被进位被丢弃丢弃CF=1,OF=0,结果正确。结果正确。25计算计算 -85 D+-117 D=-202 D10101011 B+)10001011

27、B00110110 B 54 D1CF=1,OF=1,结果发生溢出,即结果出错。结果发生溢出,即结果出错。7.单步标志位单步标志位TF(Trace Flag)单步标志也叫跟踪位,该标志为控制标志位,当单步标志也叫跟踪位,该标志为控制标志位,当TF位被设置为位被设置为1时,每执行一条指令后,时,每执行一条指令后,CPU暂停运行,暂停运行,即产生单步中断。单步标志位供调试程序使用。即产生单步中断。单步标志位供调试程序使用。268.中断允许位中断允许位IF 该标志位为控制标志位。当该标志位为控制标志位。当IF被设置为被设置为1时,时,CPU可以可以响应可屏蔽中断,否则不允许响应可屏蔽中断。响应可屏蔽

28、中断,否则不允许响应可屏蔽中断。9.方向位方向位DF DF也是控制标志位。它被用来规定串操作指令的增减也是控制标志位。它被用来规定串操作指令的增减方向。当方向。当DF=0时,串操作指令自动使变址寄存器(时,串操作指令自动使变址寄存器(SI和和DI)的内容递增。当)的内容递增。当DF=1时,串操作指令自动使变址寄存时,串操作指令自动使变址寄存器的内容递减。器的内容递减。272.3 存储器存储器一、存储器的组成一、存储器的组成1.存储器是由若干个存储单元构成存储器是由若干个存储单元构成存储单元的多少就表示了存储器的容量。存储单元的多少就表示了存储器的容量。2.每个存储单元存放相同长度的二进制数每个

29、存储单元存放相同长度的二进制数一个存储单元的长度一般为一个存储单元的长度一般为8位二进制数,称为一个字节位二进制数,称为一个字节(BYTE)。3.每个存储单元有一个唯一的地址编码每个存储单元有一个唯一的地址编码地址地址 8086/8088CPU具有具有20根地址线,即它可以产生根地址线,即它可以产生20位的位的地址码,它的存储器寻址能力为地址码,它的存储器寻址能力为220,即,即1兆字节空间。兆字节空间。28这一兆字节存储单元的地址范围为:这一兆字节存储单元的地址范围为:00.011.1。如图所示。如图所示。20位位20位位.07存储单元(字节)存储单元(字节)二进制数地址二进制数地址0000

30、00000000000000000000000000000000000100000000000000000010.1111111111111111111011111111111111111111十六进制数地址十六进制数地址00000H00001H00002HFFFFEHFFFFFH.为了方便书写,在源程序中常用为了方便书写,在源程序中常用5位十六进制数或一个符位十六进制数或一个符号来表示一个存储单元的地址。号来表示一个存储单元的地址。294.任何两个相邻字节单元就构成一个字单元任何两个相邻字节单元就构成一个字单元 一个字存储单元(一个字存储单元(WORD)的长度为)的长度为16位二进位二进制数

31、,即两个字节。字单元的地址为两个字节单元中制数,即两个字节。字单元的地址为两个字节单元中较小地址字节单元的地址。较小地址字节单元的地址。16位长数据的存放规则是低位长数据的存放规则是低8位放在较低地址字位放在较低地址字节单元中,高节单元中,高8位放在较高地址字节单元中。位放在较高地址字节单元中。例如,将数据例如,将数据3456H放在地址为放在地址为09235H的存储单元中的存储分配如图所示。的存储单元中的存储分配如图所示。.地址地址 存储单元存储单元09235H09236H5634305、在定义一个地址时必须指出是字节或字类型属性、在定义一个地址时必须指出是字节或字类型属性 由于存储单元可分为

32、字单元和字节单元,因此由于存储单元可分为字单元和字节单元,因此8086/8088CPU访问内存的指令中,分为字节访问和字访访问内存的指令中,分为字节访问和字访问两种指令。问两种指令。二、存储器的段结构二、存储器的段结构8086/8088系统的存储器段结构具有以下几个特点:系统的存储器段结构具有以下几个特点:1.8086/8088CPU将将1MB的存储空间划分成若干个段,每的存储空间划分成若干个段,每个段最大长度为个段最大长度为64K(65536)个字节单元组成。)个字节单元组成。在在8086/8088的汇编程序中,用户可以根据自己需要来的汇编程序中,用户可以根据自己需要来设定段的个数、各个段长

33、度和每个段的用途。并且代码或设定段的个数、各个段长度和每个段的用途。并且代码或数据可以存放在段内任意单元中。数据可以存放在段内任意单元中。312.每个段的基址必须是一个小节的首址。每个段的基址必须是一个小节的首址。段基址段基址一个段的起始地址。一个段的起始地址。在存储器中规定从在存储器中规定从0地址开始,每地址开始,每16个字节单元称为一个小个字节单元称为一个小节(节(Paragraph)。因此,)。因此,1MB内存就可划分为内存就可划分为64K个小节。个小节。第第 1 小节:小节:00000H,00001H,00002H0000FH第第 2 小节:小节:00010H,00011H,00012

34、H0011FH第第65535小节:小节:FFFE0H FFFE1H FFFE2HFFFEFH第第65536小节:小节:FFFF0H FFFF1H FFFF2HFFFFFH.可以看出,可以看出,每个小节的首地址最低位必为每个小节的首地址最低位必为0(16进制数表进制数表示)示)。因此段基址只能是上述。因此段基址只能是上述64K个小节首址之一。个小节首址之一。323.逻辑段在物理存储器中可以是邻接的、间隔的、逻辑段在物理存储器中可以是邻接的、间隔的、部分重叠的和完全重叠的等部分重叠的和完全重叠的等4种情况。种情况。逻辑段是指在汇编语言源程序中设置的段。逻辑段是指在汇编语言源程序中设置的段。内存中的

35、一个物理存储单元可以映象到一个或多个逻辑段中。内存中的一个物理存储单元可以映象到一个或多个逻辑段中。物理存储器物理存储器00000H10000HDA_BYTE段段1段段2段段3段段4段段5邻接邻接部分重叠部分重叠完全重叠完全重叠间隔间隔逻辑段逻辑段0FFFFFHDA_BYTE物理单元物理单元可以映象到逻辑段可以映象到逻辑段2、段段3和段和段4中。中。334、在任一时刻,一个程序只能访问、在任一时刻,一个程序只能访问4个段中的内容。个段中的内容。4个段分别是代码段、数据段、堆栈段和附加段,个段分别是代码段、数据段、堆栈段和附加段,称为当前段称为当前段。4个段寄存器个段寄存器CS、DS、SS和和E

36、S分别保分别保存了它们段基址的高存了它们段基址的高16位地址,称为段基值。段基址位地址,称为段基值。段基址的最低的最低4位为位为0。(小节首址的低。(小节首址的低4位为全位为全0)。)。三、三、逻辑地址与物理地址及相互关系逻辑地址与物理地址及相互关系1.物理地址物理地址 在在1MB的存储空间中,每个存储单元的物理地址是唯的存储空间中,每个存储单元的物理地址是唯一的,它就是该存储单元的一的,它就是该存储单元的20位地址。位地址。8086/8088的物理地址范围:的物理地址范围:00000H0FFFFFH34CPU与存储器之间的任何信息交换都使用物理地址。与存储器之间的任何信息交换都使用物理地址。

37、2.逻辑地址逻辑地址 在程序设计中,为了便于程序的开发和对存储器进行动在程序设计中,为了便于程序的开发和对存储器进行动态管理,使用了逻辑地址。态管理,使用了逻辑地址。一个逻辑地址包括两个部分:段基值和偏移量(一个逻辑地址包括两个部分:段基值和偏移量(OFFSET)段基值段基值:存放在某一个段寄存器中,是一个逻辑段的起始:存放在某一个段寄存器中,是一个逻辑段的起始单元地址(段基址)的高单元地址(段基址)的高16位。位。偏移量偏移量:表示某个存储单元与它所在段的段基址之间的字:表示某个存储单元与它所在段的段基址之间的字节距离。节距离。当偏移量为当偏移量为0时,就是这个段的起始单元,而偏移量时,就是

38、这个段的起始单元,而偏移量为为0FFFFFH时,就是这个段的最后一个字节单元。时,就是这个段的最后一个字节单元。35逻辑地址的表示方法是逻辑地址的表示方法是 段基值:偏移量段基值:偏移量例:例:3267H:00A0H 它表示该逻辑单元位于段起始地址为它表示该逻辑单元位于段起始地址为32670H,段内,段内偏移量为偏移量为00A0H个字节。个字节。3.逻辑地址转换为物理地址逻辑地址转换为物理地址 当当CPU要访问存储器时,需要由总线接口单元要访问存储器时,需要由总线接口单元BIU将逻辑将逻辑地址转换成物理地址。地址转换成物理地址。转换方法:将逻辑地址的段基值左移转换方法:将逻辑地址的段基值左移4

39、位,形成位,形成20位的段基位的段基址(低位为址(低位为0)然后与)然后与16位的偏移量相加,结果即为位的偏移量相加,结果即为20位的位的物理地址。其转换示例如图所示。物理地址。其转换示例如图所示。36段段1:2B0H段段2:2C0H002D3H偏移量偏移量23H偏移量偏移量13H0915H003AH0915 0 H003 AH+)0918 AH偏移量偏移量段基值段基值逻辑地址逻辑地址物理地址物理地址 右图表示同一个物理地址右图表示同一个物理地址002D3H被被两个逻辑段中被被两个逻辑段中的逻辑地址映射。的逻辑地址映射。002B0H+00023H=002D3H002C0H+00013H=002

40、D3H374.逻辑地址的来源逻辑地址的来源 在程序的执行过程中,在程序的执行过程中,CPU根据不同操作类型访问存根据不同操作类型访问存储器,其逻辑地址中段基值和偏移量的来源是不一样的。储器,其逻辑地址中段基值和偏移量的来源是不一样的。下表是各种操作类型所对应的逻辑地址的来源。下表是各种操作类型所对应的逻辑地址的来源。逻辑地址逻辑地址隐含来源隐含来源允许替代来源允许替代来源偏移量偏移量(OFFSET)操作类型操作类型序号序号123456取指令取指令堆栈操作堆栈操作取源串取源串存目的串存目的串以以BP作基址作基址存取一般变量存取一般变量DI CSSSDSESSSDSIPSPSI有效地址有效地址EA

41、有效地址有效地址EA无无无无CS,SS,ES无无CS,DS,ESCS,SS,ES段基值段基值38说明:说明:(1)允许替代来源也叫做段超越,它表示了段基值除使)允许替代来源也叫做段超越,它表示了段基值除使用隐含的段寄存器外是否可以指定其它段寄存器来提供。用隐含的段寄存器外是否可以指定其它段寄存器来提供。(2)有效地址)有效地址EA,它表示根据指令所采用的寻址方式,它表示根据指令所采用的寻址方式(下一章介绍)计算出来的段内偏移量。(下一章介绍)计算出来的段内偏移量。392.4 堆栈及其操作方法堆栈及其操作方法 堆栈是一个特定的存储区,访问该存储区必须按照指堆栈是一个特定的存储区,访问该存储区必须

42、按照指定的规则进行操作。定的规则进行操作。堆栈一般分为:堆栈一般分为:和和专用堆栈存储器专用堆栈存储器软件堆栈软件堆栈按堆栈的工作方式专门设计的存储器按堆栈的工作方式专门设计的存储器专用堆栈存储器专用堆栈存储器软件堆栈软件堆栈由程序设计人员用软件在内存储器中划出的一块由程序设计人员用软件在内存储器中划出的一块存储区作为堆栈来使用。存储区作为堆栈来使用。8086/8088就是这种方式。就是这种方式。堆栈的用途:堆栈的用途:主要用于暂存数据以及在过程调用或处理主要用于暂存数据以及在过程调用或处理中断时保存断点信息。中断时保存断点信息。一、堆栈的构造一、堆栈的构造40堆栈堆栈已存放数据已存放数据TO

43、PBottom.主存主存00000H 堆栈的一端是固定的,堆栈的一端是固定的,称为称为栈底栈底。栈底是堆栈存储。栈底是堆栈存储区的最大地址单元。区的最大地址单元。另一端是浮动的,称为另一端是浮动的,称为栈顶栈顶。在任何时刻,栈顶是。在任何时刻,栈顶是最后存入信息的存储单元。最后存入信息的存储单元。栈顶是随着堆栈中存放信息栈顶是随着堆栈中存放信息的多少而改变。的多少而改变。为了指示现在堆栈中存放数据位置,通常设置一个寄存为了指示现在堆栈中存放数据位置,通常设置一个寄存器来指示栈顶位置。其内容就象一个指针一样,因此被称为器来指示栈顶位置。其内容就象一个指针一样,因此被称为堆栈指针堆栈指针SP(St

44、ack Pointer)。)。SP的内容始终指向栈顶单元的内容始终指向栈顶单元堆栈中数据进出都由堆栈中数据进出都由SP来控制来控制41 在堆栈中存取数据的规则是:在堆栈中存取数据的规则是:“先进后出先进后出FILO”(First-In Lost-Out)。即最先送入堆栈的数据要)。即最先送入堆栈的数据要到最后才能取出,而最后送入堆栈的数据,最先取出。到最后才能取出,而最后送入堆栈的数据,最先取出。二、二、8086/8088堆栈的组织堆栈的组织在在8086/8088微机中堆栈是由堆栈段寄存器微机中堆栈是由堆栈段寄存器SS指定的一段存储区。指定的一段存储区。SSSP堆栈堆栈BottomTopXXX

45、XXXXXXXXX堆栈初始化时的堆栈初始化时的SP42 堆栈顶部由椎栈指针堆栈顶部由椎栈指针SP指示。指示。SP中内容始终表示堆中内容始终表示堆栈段基址与栈顶之间的距离(字节数)。当栈段基址与栈顶之间的距离(字节数)。当SP内容为最内容为最大值时,表示堆栈为空。而当(大值时,表示堆栈为空。而当(SP)=0时,表示堆栈全时,表示堆栈全满。满。当当SP被初始化时,指向栈底被初始化时,指向栈底+2单元,其值就是个堆单元,其值就是个堆栈的长度。由于栈的长度。由于SP是是16位寄存器,因此堆栈最大位寄存器,因此堆栈最大64K字节字节 数据在堆栈中的存放格式是:以字为单位存放,数据数据在堆栈中的存放格式是

46、:以字为单位存放,数据的低的低8位放在较低地址单元,高位放在较低地址单元,高8位放在较高地址单元。位放在较高地址单元。当用户程序中要求的堆栈长度超过一个堆栈段的最当用户程序中要求的堆栈长度超过一个堆栈段的最大长度大长度64KB时,可以设置几个堆栈段。通过改变堆栈段时,可以设置几个堆栈段。通过改变堆栈段寄存器寄存器SS的内容,即可改变到另一个堆栈段,当改变了的内容,即可改变到另一个堆栈段,当改变了堆栈段寄存器堆栈段寄存器SS的内容后,必须紧接着赋与的内容后,必须紧接着赋与SP新值。新值。43三、三、堆栈操作堆栈操作1.设置堆栈设置堆栈设置堆栈主要是对堆栈段寄存器设置堆栈主要是对堆栈段寄存器SS和

47、堆栈指针和堆栈指针SP赋值。赋值。例如:例如:STACK1 SEGMEMT PARA STACK DB 100 DUP(0)STACK1 ENDS 第一行中的第一行中的PARA STACK就是用来说明本段为堆栈段。就是用来说明本段为堆栈段。当程序经过汇编、连接并装入内存时,系统将自动为当程序经过汇编、连接并装入内存时,系统将自动为其分配一个存储区作为堆栈段,将这个段的段基址的高其分配一个存储区作为堆栈段,将这个段的段基址的高16位送入位送入SS中,而将程序指定的字节单元数中,而将程序指定的字节单元数100(64H)赋值)赋值给给SP,这样堆栈就被设置好了。,这样堆栈就被设置好了。442.进栈进

48、栈PUSH 进栈就是把数据存入堆栈。由指令进栈就是把数据存入堆栈。由指令PUSH或者由机器自动或者由机器自动实现,可以将通用寄存器、段寄存器或字存储单元的内容压实现,可以将通用寄存器、段寄存器或字存储单元的内容压入堆栈顶部。入堆栈顶部。例:例:PUSH AX;将寄存器将寄存器AX的内容压入堆栈的内容压入堆栈 PUSH DS;将段寄存器将段寄存器DS的内容压入堆栈的内容压入堆栈 PUSH DATA-WORD;将字存储单元将字存储单元DADA-WORD压入压入 ;堆栈堆栈 PUSHF;将标志寄存器内容压入堆栈。将标志寄存器内容压入堆栈。进栈的执行过程:进栈的执行过程:(1)首先将堆栈指针)首先将堆

49、栈指针SP减减2,即指向一个空的堆栈字单元,即指向一个空的堆栈字单元 SP=(SP)245(2)将要储存的内容(寄存器或存储单元的内容)送)将要储存的内容(寄存器或存储单元的内容)送入入SP指向的字单元中。(指向的字单元中。(SP)=数据数据例如,指令例如,指令PUSH AX的执行过程如下图所示:的执行过程如下图所示:SSALAH(AH)(AL)现(现(SP)原(原(SP).SP(SP)-2(1)(2)00000H463.出栈出栈POP 出栈操作由出栈操作由POP指令实现,它从堆栈顶部弹出一个指令实现,它从堆栈顶部弹出一个字到通用寄存器、段寄存器或字存储单元。字到通用寄存器、段寄存器或字存储单

50、元。例如:例如:POP AX;将栈顶字单元内容弹出到;将栈顶字单元内容弹出到AX POP DS;将栈顶字单元内容弹出到;将栈顶字单元内容弹出到DS POP DATA-WORD;将栈顶字单元内容弹出到;将栈顶字单元内容弹出到 ;DATA-WORD存储。存储。POPF;将栈顶字单元内容送回标志寄存器;将栈顶字单元内容送回标志寄存器F。出栈的操作过程:出栈的操作过程:(1)将)将SP指向的字单元(即栈顶字单元)内容送往指定指向的字单元(即栈顶字单元)内容送往指定的寄存器或存储器。即寄存器的寄存器或存储器。即寄存器/存储器存储器=(CSP)47(2)堆栈指针)堆栈指针SP内容加内容加2,即,即SP=(

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 管理文献 > 企业管理

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁