微机原理2-1指系统编程结构课件

上传人:壹****1 文档编号:577170931 上传时间:2024-08-21 格式:PPT 页数:70 大小:1.08MB
返回 下载 相关 举报
微机原理2-1指系统编程结构课件_第1页
第1页 / 共70页
微机原理2-1指系统编程结构课件_第2页
第2页 / 共70页
微机原理2-1指系统编程结构课件_第3页
第3页 / 共70页
微机原理2-1指系统编程结构课件_第4页
第4页 / 共70页
微机原理2-1指系统编程结构课件_第5页
第5页 / 共70页
点击查看更多>>
资源描述

《微机原理2-1指系统编程结构课件》由会员分享,可在线阅读,更多相关《微机原理2-1指系统编程结构课件(70页珍藏版)》请在金锄头文库上搜索。

1、第第2 2章章第第2章:章:2.1 微处理器的内部结构微处理器的内部结构从应用角度(不是从内部工作原理)展开从应用角度(不是从内部工作原理)展开典型典型8位微处理器的基本结构位微处理器的基本结构8088/8086的功能结构的功能结构8088/8086的寄存器结构的寄存器结构8088/8086的存储器结构的存储器结构为学习指令系统打好基础为学习指令系统打好基础例如:例如:关心用户关心用户“可编程可编程”寄存器,寄存器,不关心无法操纵的不关心无法操纵的“透明透明”寄存器寄存器内部数据总线内部数据总线控制总线控制总线数据总线数据总线地址总线地址总线暂存器暂存器累加器累加器ALU标志寄存器标志寄存器指

2、指令令寄寄存存指指令令译译码码时序时序和和控制控制逻辑逻辑通通 用用寄存器组寄存器组地地 址址寄存器组寄存器组地址地址总线总线控制控制数据数据总线总线控制控制第第2章章: 2.1.1 一般微处理器的基本结构一般微处理器的基本结构1.算术逻辑单元(运算器)算术逻辑单元(运算器)2.寄存器组寄存器组3.指令处理单元(控制器)指令处理单元(控制器)微处理器的一般结构微处理器的一般结构运算器运算器 算术逻辑运算,由加法器和算术逻辑运算,由加法器和(ALU) 一一些辅助逻辑电路组成些辅助逻辑电路组成 指令流控制指令流控制控制器控制器 时序控制,产生节拍定时信号时序控制,产生节拍定时信号 指令译码和操作控

3、制指令译码和操作控制寄存器组寄存器组 存放临时数据、运算的中存放临时数据、运算的中 间结果、运算特征、操作数地址间结果、运算特征、操作数地址性能:性能:8位位16位位 32位位(主流主流) 64位位(趋势趋势)主主要要部部件件指令流水线指令流水线取指令取指令指令指令译码译码取操取操作数作数执行执行指令指令存放存放结果结果 CPU执行一条指令的过程类似于工厂生产流水线,被分 解为多个小的步骤,称为指令流水线。数据和程序指令控制器的调度分配ALU等 功能部件处理后的数据存储器输出指令流水线有两种运作方式:指令流水线有两种运作方式:串行方式串行方式: 取指令取指令和和执行指令执行指令在不同的时刻按顺

4、序执行。在不同的时刻按顺序执行。并行方式并行方式: 取取指指令令和和执执行行指指令令可可同同时时执执行行,需需要要有有能能并并行工作的硬件的支持。行工作的硬件的支持。串行串行工作工作方式方式80868086以前的以前的CPUCPU采用串行工作方式采用串行工作方式取指令取指令1执行执行1取指令取指令2执行执行2CPUBUS忙忙 碌碌忙忙 碌碌取指令取指令3执行执行3忙忙 碌碌空闲空闲空闲空闲空闲空闲t1t0t2t3t4t56个周期执行了3条指令并行工作方式并行工作方式8086CPU采用并行工作方式采用并行工作方式取指令取指令1取指令取指令2取指令取指令3取指令取指令4执行执行1执行执行2执行执行

5、3BUS忙碌忙碌执行执行4CPUt1t0t2t3t4t5取指令取指令5执行执行5忙碌忙碌忙碌忙碌忙碌忙碌忙碌忙碌忙碌忙碌6个周期执行了5条指令第第2章章: 2.1.2 8088/8086的功能结构的功能结构8088的的内部结构内部结构从功能上分成两个单元从功能上分成两个单元1. 总线接口单元总线接口单元BIU管理管理8088与系统总线的接口与系统总线的接口负责负责CPU对存储器和外设进行访问对存储器和外设进行访问2. 执行单元执行单元EU负责指令的译码、执行和数据的运算负责指令的译码、执行和数据的运算两两个个单单元元相相互互独独立立,分分别别完完成成各各自自操操作作,还还可可以以并并行行执执行

6、行,实实现现指指令令预预取取(指指令令读读取取和执行的流水线操作和执行的流水线操作)执行单元执行单元功能:执行指令,具体操作如下功能:执行指令,具体操作如下 从指令中取指令代码从指令中取指令代码 译码译码 完成指定的操作完成指定的操作 结果保存到目的操作数结果保存到目的操作数 运算特征保存在标志寄存器运算特征保存在标志寄存器FLAGS(仅对影响标志的指令)(仅对影响标志的指令)总线接口单元总线接口单元功能:功能:从内存中取指令到指令队列;从内存中取指令到指令队列;负责与内存或负责与内存或I/O接口之间的数据传送;接口之间的数据传送;在在执执行行转转移移指指令令时时,BIU将将清清除除指指令令队

7、队列列,然然后后从从转转移移的的目目的的地地址址处处开开始始取取指指令并重新填充指令队列。令并重新填充指令队列。8086结构特点小结结构特点小结有有EU和和BIU两两个个独独立立的的、同同时时运运行行的的部部件件二者通过二者通过IPQ构成一个两工位流水线构成一个两工位流水线指令被指令被EU和和BIU按流水线方式处理:按流水线方式处理:提高了提高了CPU的运行速度;的运行速度;提高了提高了CPU的执行效率;的执行效率;降低了对存储器存取速度的要求。降低了对存储器存取速度的要求。第第2章:章:2.1.3 8088/8086的寄存器结构的寄存器结构8088/8086的寄存器组有的寄存器组有8个通用寄

8、存器个通用寄存器4个段寄存器个段寄存器1个标志寄存器个标志寄存器1个指令指针寄存器个指令指针寄存器他们均为他们均为1616位位! !图示图示 汇编语言程序员看到的处理器,就是寄存器汇编语言程序员看到的处理器,就是寄存器 所以,一定要熟悉这些寄存器的名称和作用所以,一定要熟悉这些寄存器的名称和作用第第2章:章:1. 通用寄存器通用寄存器8088有有8个通用的个通用的16位寄存器位寄存器(1)数据寄存器)数据寄存器: AX BX CX DX(2)变址寄存器)变址寄存器: SI DI(3)指针寄存器)指针寄存器: BP SP4个个数数据据寄寄存存器器还还可可以以分分成成高高8位位和和低低8位位两两个

9、个独独立立的的寄寄存存器器,这这样样又又形形成成8个个通通用用的的8位寄存器位寄存器AX: AH AL BX: BH BLCX: CH CL DX: DH DL第第2章:(章:(1)数据寄存器)数据寄存器AX称为累加器(称为累加器(Accumulator)使使用用频频度度最最高高。用用于于算算术术、逻逻辑辑运运算算以以及及与与外外设设传传送送信信息等息等BX称为基址寄存器(称为基址寄存器(Base address Register)常用做存放存储器地址常用做存放存储器地址CX称为计数器(称为计数器(Counter)作为循环和串操作等指令中的隐含计数器作为循环和串操作等指令中的隐含计数器DX称为

10、数据寄存器(称为数据寄存器(Data register)常用来存放双字长数据的高常用来存放双字长数据的高16位,或存放外设端口地址位,或存放外设端口地址第第2章:(章:(1)数据寄存器)数据寄存器AX称为称为累加器累加器(Accumulator)使使用用频频度度最最高高。用用于于算算术术、逻逻辑辑运运算算以以及及与与外外设设传传送送信信息等息等BX称为称为基址寄存器基址寄存器(Base address Register)常用做存放存储器地址常用做存放存储器地址CX称为称为计数器计数器(Counter)作为循环和串操作等指令中的隐含计数器作为循环和串操作等指令中的隐含计数器DX称为称为数据寄存器

11、数据寄存器(Data register)常用来存放双字长数据的高常用来存放双字长数据的高16位,或存放外设端口地址位,或存放外设端口地址第第2章:(章:(2)变址寄存器)变址寄存器16位变址寄存器位变址寄存器SI和和DI常用于存储器变址寻址方式时提供地址常用于存储器变址寻址方式时提供地址SI是源地址寄存器(是源地址寄存器(Source Index)DI是目的地址寄存器(是目的地址寄存器(Destination Index)在在串串操操作作类类指指令令中中,SI、DI还还有有较较特特殊殊的的用用法法 现在不必完全理解,以后会详细展开现在不必完全理解,以后会详细展开第第2章:(章:(3)指针寄存器

12、)指针寄存器指针寄存器用于寻址内存指针寄存器用于寻址内存堆栈堆栈内的数据内的数据SPSP为为堆堆栈栈指指针针寄寄存存器器(Stack Pointer), ,指指示示堆栈段栈顶的位置(偏移地址)堆栈段栈顶的位置(偏移地址)BPBP为为基基址址指指针针寄寄存存器器(Base Pointer),表表示示数据在堆栈段中的基地址数据在堆栈段中的基地址SPSP和和BPBP寄寄存存器器与与SSSS段段寄寄存存器器联联合合使使用用以以确确定堆栈段中的存储单元地址定堆栈段中的存储单元地址堆堆栈栈(Stack)是是主主存存中中一一个个特特殊殊的的区区域域,采采用用“先先进进后后出出”或或“后后进进先先出出”存取操

13、作方式、而不是随机存取方式。存取操作方式、而不是随机存取方式。用用8088/8086形形成成的的微微机机系系统统中中,堆堆栈区域被称为堆栈段栈区域被称为堆栈段第第2章:章:2. 指令指针寄存器指令指针寄存器IP(Instruction Pointer)为为指指令令指指针针寄寄存存器,指示主存储器指令的位置器,指示主存储器指令的位置随随着着指指令令的的执执行行,IP将将自自动动修修改改以以指指示示下下一一条指令所在的存储器位置条指令所在的存储器位置IP寄存器是一个寄存器是一个专用专用寄存器寄存器IPIP寄寄存存器器与与CSCS段段寄寄存存器器联联合合使使用用以以确确定定下下一条指令的存储单元地址

14、一条指令的存储单元地址第第2章:章:3. 标志寄存器标志寄存器标标志志(Flag)用用于于反反映映指指令令执执行行结结果果或控制指令执行形式或控制指令执行形式8088处处理理器器的的各各种种标标志志形形成成了了一一个个16位位的的标标志志寄寄存存器器FLAGS(程程序序状状态态字字PSW寄存器寄存器) 程序设计需要利用标志的状态程序设计需要利用标志的状态第第2章:标志寄存器章:标志寄存器-分类分类状状态态标标志志用用来来记记录录程程序序运运行行结结果果的的状状态态信息,许多指令的执行都将相应地设置它信息,许多指令的执行都将相应地设置它CF ZF SF PF OF AF控控制制标标志志可可由由程

15、程序序根根据据需需要要用用指指令令设设置置,用于控制处理器执行指令的方式用于控制处理器执行指令的方式DF IF TFOF1115 12DF10IF9TF8SF7ZF65AF43PF21CF0标志寄存器标志寄存器FLAGSFLAGS第第2章:进位标志章:进位标志CF(Carry Flag)当当运运算算结结果果的的最最高高有有效效位位有有进进位位(加加法法)或或借借位(减法)时,进位标志置位(减法)时,进位标志置1,即,即CF1; 否则否则CF03AH + 7CHB6H,没有进位:,没有进位:CF = 0AAH + 7CH(1)26H,有进位:,有进位:CF = 1第第2章:零标志章:零标志ZF(

16、Zero Flag)若运算结果为若运算结果为0,则,则ZF1;否则否则ZF03AH7CHB6H,结果不是零:,结果不是零:ZF084H7CH(1)00H,结果是零:,结果是零:ZF1 注意:注意:ZF为为1表示的结果是表示的结果是0第第2章:符号标志章:符号标志SF(Sign Flag)运算结果最高位为运算结果最高位为1,则,则SF1; 否则否则SF03AH7CHB6H,最高位,最高位D71:SF184H7CH(1)00H,最高位,最高位D70:SF0 有符号数据用最高有效位表示数据的符号有符号数据用最高有效位表示数据的符号所以,最高有效位就是符号标志的状态所以,最高有效位就是符号标志的状态第

17、第2章:奇偶标志章:奇偶标志PF(Parity Flag)当当运运算算结结果果最最低低字字节节中中“1”的的个个数数为为零或偶数时,零或偶数时,PF1;否则;否则PF03AH7CHB6H10110110B结果中有结果中有5个个“1”,是奇数:,是奇数:PF0 PF标标志志仅仅反反映映最最低低8位位中中“1”的的个个数数是是偶或奇,即使是进行偶或奇,即使是进行16位字操作位字操作第第2章:溢出标志章:溢出标志OF(Overflow Flag)若算术运算的结果有溢出,则若算术运算的结果有溢出,则OF1; 否则否则 OF03AH + 7CHB6H,产生溢出:,产生溢出:OF1AAH + 7CH(1)

18、26H,没有溢出:,没有溢出:OF0第第2章:什么是溢出章:什么是溢出处理器内部以补码表示有符号数处理器内部以补码表示有符号数8位表达的整数范围是:位表达的整数范围是:127 12816位表达的范围是:位表达的范围是:32767 32768如果运算结果超出这个范围,就产生了溢出如果运算结果超出这个范围,就产生了溢出有溢出,说明有符号数的运算结果不正确有溢出,说明有符号数的运算结果不正确3AH7CHB6H,就是,就是58124182,已经超出已经超出128127范围,产生溢出,故范围,产生溢出,故OF1;补码补码B6H表达真值是表达真值是74,显然运算结果也不正确,显然运算结果也不正确 B6H1

19、0110110B,最高位为,最高位为1,作为有符号数是负数作为有符号数是负数 对对B6H求反加求反加1等于:等于:01001001B101001010B4AH74 所以,所以,B6H表达有符号数的真值为表达有符号数的真值为74第第2章:溢出和进位的区别章:溢出和进位的区别溢溢出出标标志志OF和和进进位位标标志志CF是是两两个个意意义义不同的标志不同的标志进进位位标标志志表表示示无无符符号号数数运运算算结结果果是是否否超超出范围,运算结果仍然正确出范围,运算结果仍然正确溢溢出出标标志志表表示示有有符符号号数数运运算算结结果果是是否否超超出范围,运算结果已经不正确出范围,运算结果已经不正确第第2章

20、:章: 溢出和进位的对比溢出和进位的对比例例1:3AH7CHB6H无符号数运算:无符号数运算: 58124182范围内,无进位范围内,无进位有符号数运算:有符号数运算: 58124182范围外,有溢出范围外,有溢出例例2:AAH7CH(1)26H无符号数运算:无符号数运算: 170124294范围外,有进位范围外,有进位有符号数运算:有符号数运算: 8612428范围内,无溢出范围内,无溢出无符号数溢出无符号数溢出 0 0 0 0 0 1 1 1 + 1 1 1 1 1 0 1 1 1 0 0 0 0 0 0 1 0带:带:(+7)+(-5)=+2 OF=0无:无:7+251=2 CF=1 带

21、符号数和无符号数都不溢出带符号数和无符号数都不溢出 0 0 0 0 0 1 0 0 + 0 0 0 0 1 0 1 1 0 0 0 0 1 1 1 1带:带:(+4)+(+11)=+15 OF=0无:无:4+11=15 CF=0带符号数溢出带符号数溢出 0 0 0 0 1 0 0 1 + 0 1 1 1 1 1 0 0 1 0 0 0 0 1 0 1带带:(+9)+(+124)=-123 OF=1无无:9+124=133 CF=0 带符号数和无符号数都溢出带符号数和无符号数都溢出 1 0 0 0 0 1 1 1 + 1 1 1 1 0 1 0 1 1 0 1 1 1 1 1 0 0带:带:(-

22、121)+(-11)=+124 OF=1无:无:135+245=124 CF=1n=8bit 带符号数带符号数(-128127) 无符号数无符号数(0255)溢出的判断溢出的判断判断运算结果是否溢出有一个简单的规则:判断运算结果是否溢出有一个简单的规则:只只有有当当两两个个相相同同符符号号数数相相加加(包包括括不不同同符符号号数数相相减减),而而运运算算结结果果的的符符号号与与原原数数据据符符号号相相反反时时,产生溢出;因为,此时的运算结果显然不正确产生溢出;因为,此时的运算结果显然不正确例例1:3AH7CHB6H溢出溢出例例2:AAH7CH无溢出无溢出例例3:3AH7CH无溢出无溢出例例4:

23、AAH7CH2DH溢出溢出 溢出判别溢出判别 (overflow) 若若若若XY XY XY XY 2 2 2 2n n n n1 1 1 11, 1, 1, 1,为正溢出;为正溢出;为正溢出;为正溢出; 若若若若XY XY XY XY 2 2 2 2n n n n1 1 1 1 , , , ,为负溢出。为负溢出。为负溢出。为负溢出。 计算机判断溢出的方法:计算机判断溢出的方法:计算机判断溢出的方法:计算机判断溢出的方法: 双进位位法双进位位法双进位位法双进位位法 OF=C8 C7 C8 OF=C8 C7 C8 OF=C8 C7 C8 OF=C8 C7 C8、C7C7C7C7相同不溢出,不同溢

24、出。相同不溢出,不同溢出。相同不溢出,不同溢出。相同不溢出,不同溢出。 例例例例 在八位微机中,已知在八位微机中,已知在八位微机中,已知在八位微机中,已知X X7676,Y Y6969,求,求,求,求X XY Y 解:解:解:解: XX补补补补0 01001100B1001100B YY补补补补0 01000101B1000101B 1 10010001B 0010001B X X补补补补YY补补补补10010001B10010001B 111111补补补补XXYY补补补补 双进位位双进位位双进位位双进位位法判溢出:法判溢出:法判溢出:法判溢出: OF=1 OF=1 C7=1,C8=0 C7=

25、1,C8=0 正溢出正溢出正溢出正溢出 例例例例 已知已知已知已知X X7676,Y Y6969,求,求,求,求X XY Y 解:解:解:解: XX补补补补1 10110100B0110100B YY补补补补1 10111011B0111011B 1 1 0 01101111B1101111B X X补补补补YY补补补补01101111B01101111B 111111补补补补XXYY补补补补 双进位位双进位位双进位位双进位位法判溢出:法判溢出:法判溢出:法判溢出: OF=1 OF=1 C7=0,C8=1 C7=0,C8=1 负溢出负溢出负溢出负溢出两个正数的两个正数的两个正数的两个正数的和为

26、负数和为负数和为负数和为负数两个负数的两个负数的两个负数的两个负数的和为正数和为正数和为正数和为正数 例例例例 在八位微机中,已知在八位微机中,已知在八位微机中,已知在八位微机中,已知X X7676,Y Y2323,求,求,求,求X XY Y 解:解:解:解: XX补补补补 0 01001100B1001100B Y Y补补补补 0 00010111B0010111B 0 01100011B1100011B X X补补补补YY补补补补01100011B01100011B 9999补补补补 ( (76)76)( (23)23)补补补补XXYY补补补补 双进位位法双进位位法双进位位法双进位位法判溢

27、出:判溢出:判溢出:判溢出: OF=0 OF=0 C7=0,C8=0 C7=0,C8=0 例例例例 在八位微机中在八位微机中在八位微机中在八位微机中, ,已知已知已知已知X X7676,Y Y2323,求,求,求,求X XY Y 解:解:解:解: XX补补补补 01001100B 01001100B YY补补补补 11101001B 11101001B 1 00110101B 1 00110101B X X补补补补YY补补补补00110101B00110101B 5353补补补补 ( (76)76)( (23)23)补补补补XXYY补补补补 双进位位法判溢出:双进位位法判溢出:双进位位法判溢出

28、:双进位位法判溢出: OF=0 OF=0 C7=1,C8=1 C7=1,C8=1 第第2章:溢出和进位的应用场合章:溢出和进位的应用场合处处理理器器对对两两个个操操作作数数进进行行运运算算时时,按按照照无无符符号号数数求求得得结结果果,并并相相应应设设置置进进位位标标志志CF;同同时时,根根据据是是否否超超出出有有符符号号数数的的范范围围设设置溢出标志置溢出标志OF应应该该利利用用哪哪个个标标志志,则则由由程程序序员员来来决决定定。也也就就是是说说,如如果果将将参参加加运运算算的的操操作作数数认认为为是是无无符符号号数数,就就应应该该关关心心进进位位;认认为为是是有有符号数,则要注意是否溢出符

29、号数,则要注意是否溢出第第2章:辅助进位标志章:辅助进位标志AF(Auxiliary Carry Flag)3AH7CHB6H,D3有进位:有进位:AF1运运算算时时D D3 3位位(低低半半字字节节)有有进进位位或或借位时,借位时,AFAF1 1;否则;否则AFAF0 0这个标志主要由处理器内部使用,这个标志主要由处理器内部使用,用于十进制算术运算调整指令中,用于十进制算术运算调整指令中,用户一般不必关心用户一般不必关心第第2章:方向标志章:方向标志DF(Direction Flag)用于串操作指令中,控制地址的变化方向:用于串操作指令中,控制地址的变化方向:设置设置DF0,存储器地址自动增

30、加;,存储器地址自动增加;设置设置DF1,存储器地址自动减少,存储器地址自动减少CLDCLD指令复位方向标志:指令复位方向标志:DFDF0 0STDSTD指令置位方向标志:指令置位方向标志:DFDF1 1第第2章:中断允许标志章:中断允许标志IF(Interrupt-enable Flag)控制可屏蔽中断是否可以被处理器响应:控制可屏蔽中断是否可以被处理器响应:设置设置IF1,则允许中断;,则允许中断;设置设置IF0,则禁止中断,则禁止中断CLICLI指令复位中断标志:指令复位中断标志:IFIF0 0STISTI指令置位中断标志:指令置位中断标志:IFIF1 1第第2章:陷阱标志章:陷阱标志T

31、F(Trap Flag)用于控制处理器进入单步操作方式:用于控制处理器进入单步操作方式:设置设置TF0,处理器正常工作;,处理器正常工作;设置设置TF1,处理器,处理器单步执行指令单步执行指令单单步步执执行行指指令令处处理理器器在在每每条条指指令令执执行行结结束束时,便产生一个编号为时,便产生一个编号为1 1的内部中断的内部中断这种内部中断称为这种内部中断称为单步中断单步中断所以所以TFTF也称为也称为单步标志单步标志n利用单步中断可对程序进行逐条指令的调试利用单步中断可对程序进行逐条指令的调试n这种逐条指令调试程序的方法就是这种逐条指令调试程序的方法就是单步调试单步调试第第2章:章:2.3

32、8088/8086的存储器结构的存储器结构存存储储器器是是计计算算机机存存储储信信息息的的地地方方。掌掌握握数数据据存存储储格格式式,以以及及存存储储器器的的分分段段管管理理对对以以后的汇编程序设计非常重要后的汇编程序设计非常重要你你能能区区别别寄寄存存器器、存存储储器器(主主存存)、外外存存(包包括硬盘、光盘、磁带等存储介质括硬盘、光盘、磁带等存储介质)吗?吗?答案答案第第2章:补充概念章:补充概念1:寄存器、存储器和外存的区别:寄存器、存储器和外存的区别寄寄存存器器是是微微处处理理器器(CPU)内内部部暂暂存存数数据据的的存存储储单元,以名称表示,例如:单元,以名称表示,例如:AX,BX.

33、等等存存储储器器也也就就是是平平时时所所说说的的主主存存,也也叫叫内内存存,可可直直接与接与CPU进行数据交换。主存利用地址区别进行数据交换。主存利用地址区别外外存存主主要要指指用用来来长长久久保保存存数数据据的的外外部部存存储储介介质质,常常见见的的有有硬硬盘盘、光光盘盘、磁磁带带、U盘盘等等。外外存存的的数数据据只能通过主存间接地与只能通过主存间接地与CPU交换数据交换数据程程序序及及其其数数据据可可以以长长久久存存放放在在外外存存,在在运运行行需需要要时才进入主存时才进入主存第第2章:补充概念章:补充概念2:数据的存储格式:数据的存储格式计算机中信息的单位计算机中信息的单位二进制位二进制

34、位BitBit:存储一位二进制数:存储一位二进制数:0 0或或1 1字节字节ByteByte:8 8个二进制位,个二进制位,D D7 7D D0 0字字WordWord:1616位,位,2 2个字节,个字节,D D1515D D0 0双字双字DWordDWord:3232位,位,4 4个字节个字节,D D3131D D0 0最低有效位最低有效位LSBLSB:数据的最低位,:数据的最低位,D D0 0位位最最高高有有效效位位MSBMSB:数数据据的的最最高高位位,对对应应字字节节、字、双字分别指字、双字分别指D D7 7、D D1515、D D3131位位图示图示图示图示第第2章:补充概念章:补

35、充概念3:存储单元及其存储内容:存储单元及其存储内容每每个个存存储储单单元元都都有有一一个个编编号号;被被称称为为存储器地址存储器地址每个存储单元存放一个字节的内容每个存储单元存放一个字节的内容图示图示图示图示0002H0002H单元存放有一个数据单元存放有一个数据34H34H表达为表达为0002H0002H34H34H 7 6 5 4 3 2 1 01 0 0 1 1 1 1 1 0000H (0000H)=9FH0 0 1 0 0 1 1 0 0001H (0001H)=26H0 0 0 1 1 1 1 0 0002H (0002H)=1EH1 1 0 1 0 1 1 1 0003H (0

36、003H)=0D7H存储器存储器 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0字 高位字节 低位字节1 0 0 1 1 1 1 10 0 1 0 0 1 1 0(0000H)=269FH第第2章:补充概念章:补充概念4:多字节数据存放方式:多字节数据存放方式多多字字节节数数据据在在存存储储器器中中占占连连续续的的多多个个存储单元:存储单元:存存放放时时,低低字字节节存存入入低低地地址址,高高字字节节存存入高地址;入高地址;表表达达时时,用用它它的的低低地地址址表表示示多多字字节节数数据据占据的地址空间。占据的地址空间。图图2-52-5中中0002H“0002H“字

37、字”单元的内容为:单元的内容为:0002H = 1234H0002H = 1234H0002H0002H号号“双字双字”单元的内容为:单元的内容为:0002H = 78561234H0002H = 78561234H 80x86处处理理器器采采用用“低低对对低低、高高对对高高”的存储形式的存储形式图示图示图示图示第第2章:补充概念章:补充概念5:数据的地址对齐:数据的地址对齐同同一一个个存存储储器器地地址址可可以以是是字字节节单单元元地地址址、字单元地址等等(字单元地址等等(视具体情况来确定)视具体情况来确定)字字单单元元安安排排在在偶偶地地址址(xxx0B)被被称称为为“地址对齐(地址对齐(

38、Align)”对对于于不不对对齐齐地地址址的的数数据据,处处理理器器访访问问时时,需要额外的访问存储器时间需要额外的访问存储器时间应应该该将将数数据据的的地地址址对对齐齐,以以取取得得较较高高的的存存取速度取速度第第2章:章:2. 3.1 存储器的分段管理存储器的分段管理8088CPU8088CPU有有2020条地址线条地址线最大可寻址空间为最大可寻址空间为2 220201MB1MB物理地址范围从物理地址范围从00000H00000HFFFFFHFFFFFH一个存储单元除具有一个唯一的物理地址一个存储单元除具有一个唯一的物理地址问题?问题?哪个寄存器能够放得下哪个寄存器能够放得下20位的地址?

39、位的地址?用用分段的方法解决。的方法解决。8088CPU8088CPU将将 1MB1MB空空 间间 分分 成成 许许 多多 逻逻 辑辑 段段(SegmentSegment)每个段最大长度限制为每个段最大长度限制为64KB64KB段段首首地地址址的的最最低低4 4位位一一定定为为0000B=0H0000B=0H,段段起起始始于于存存储器内储器内16字节字节整倍数整倍数的边界处。的边界处。段是存储器中的一块区域段是存储器中的一块区域用用段段和和偏移偏移的组合访问存储单元的组合访问存储单元每个段最大为每个段最大为64KB,最小为,最小为16B(为什么?为什么?)所有存储单元的地址都由段地址加偏移地址

40、组成所有存储单元的地址都由段地址加偏移地址组成段地址被装入段寄存器中以供寻址使用段地址被装入段寄存器中以供寻址使用偏移地址用于在偏移地址用于在64KB存储器段内选择任一单元存储器段内选择任一单元1MB空间的分段空间的分段每每个个段段最最大大为为64KB,最最小小为为16B, 1MB1MB空空间间最最多能分成多少个段?多能分成多少个段?每隔每隔1616个存储单元就可以开始一个段个存储单元就可以开始一个段所以所以1MB1MB最多可以有:最多可以有:2 2202016162 2161664K 64K 个段个段1MB1MB空间最少能分成多少个段?空间最少能分成多少个段?每隔每隔64K64K个存储单元开

41、始一个段个存储单元开始一个段所以所以1MB1MB最少可以有:最少可以有:2 220202216161616 个段个段第第2章:物理地址和逻辑地址章:物理地址和逻辑地址8088CPU存存储储系系统统中中,对对应应每每个个物物理理存存储储单单元元都都有有一一个个唯唯一一的的20位位编编号号,就就是是物物理理地地址址,从从00000H FFFFFH,存存储储单单元元的硬件地址的硬件地址分分段段后后在在用用户户编编程程时时,采采用用逻逻辑辑地地址址,就是段和偏移形式的地址:就是段和偏移形式的地址:段基地址段基地址 : : 段内偏移地址段内偏移地址分隔符分隔符物理地址物理地址 14700H逻辑地址逻辑地

42、址 1460H:100H段和偏移段和偏移设设 段段 起起 始始 地地 址址=60000H段地址段地址偏移地址偏移地址0FFFFH6A000H12H60000H6 0 0 0段寄存器偏移地址A000H 0 0 0 0段地址段地址(16位位)段起始地址段起始地址 逻辑地址用于汇编语言程序设计逻辑地址用于汇编语言程序设计以下地址是逻辑地址的例子:以下地址是逻辑地址的例子:2500H:0100H其中:段地址2500H偏移地址0100H段地址说明逻辑段在主存中的起始位置,偏移地址说明主存单元距离段起始位置的偏移量第第2章:物理地址和逻辑地址的转换章:物理地址和逻辑地址的转换将将逻逻辑辑地地址址中中的的段

43、段地地址址左左移移4位位,加加上上偏偏移移地地址址就得到就得到20位物理地址位物理地址物理地址物理地址=段地址段地址16 (或段地址左移或段地址左移4位位)+偏移地址偏移地址一个物理地址可以有多个逻辑地址一个物理地址可以有多个逻辑地址逻辑地址逻辑地址 1460H:100H1460H:100H、1380H:0F00H1380H:0F00H物理地址物理地址 14700H 14700H14700H 14700H146014600 0H H 100H 100H14700H14700H138013800 0H H F00H F00H14700H14700H段地址左移段地址左移4 4位位加上偏移地址加上偏

44、移地址得到物理地址得到物理地址第第2章:章: 段寄存器段寄存器8088有有4个个16位段寄存器位段寄存器CS(代码段)指明(代码段)指明代码段代码段的起始地址的起始地址SS(堆栈段)指明(堆栈段)指明堆栈段堆栈段的起始地址的起始地址DS(数据段)指明(数据段)指明数据段数据段的起始地址的起始地址ES(附加段)指明(附加段)指明附加段附加段的起始地址的起始地址每每个个段段寄寄存存器器用用来来确确定定一一个个逻逻辑辑段段的的起起始地址,每种逻辑段均有各自的用途始地址,每种逻辑段均有各自的用途默认段和偏移寄存器默认段和偏移寄存器8086规定了访问存储器段的规则:规定了访问存储器段的规则:u此此规规则

45、则定定义义了了段段地地址址寄寄存存器器和和偏偏移移地地址址寄寄存存器器的的组合方式,其默认规则如下表:组合方式,其默认规则如下表:段地址段地址 默认偏移地址默认偏移地址用于访问用于访问CSIP指令指令SSSP、BP堆栈中的数据堆栈中的数据DSBX、DI、SI、8位或位或16位数位数 数据段中的数据数据段中的数据ES串指令的串指令的DI目标串操作数目标串操作数第第2章:代码段寄存器章:代码段寄存器CS(Code Segment)代码段用来存放程序的指令序列代码段用来存放程序的指令序列代码段寄存器代码段寄存器CS存放代码段的段地址存放代码段的段地址指令指针寄存器指令指针寄存器IP指示下条指令的偏移

46、地址指示下条指令的偏移地址处理器利用处理器利用CS:IP取得下一条要执行的指令取得下一条要执行的指令第第2章:数据段寄存器章:数据段寄存器DS(Data Segment)数据段存放运行程序所用的数据数据段存放运行程序所用的数据数据段寄存器数据段寄存器DS存放数据段的段地址存放数据段的段地址各各种种主主存存寻寻址址方方式式(有有效效地地址址EA)得得到到存存储储器器中操作数的偏移地址中操作数的偏移地址处理器利用处理器利用DS:EA存取数据段中的数据存取数据段中的数据第第2章:附加段寄存器章:附加段寄存器ES(Extra Segment)附加段是附加的数据段,也保存数据:附加段是附加的数据段,也保

47、存数据:附加段寄存器附加段寄存器ES存放附加段的段地址存放附加段的段地址各各种种主主存存寻寻址址方方式式(有有效效地地址址EA)得得到到存存储储器器中操作数的偏移地址中操作数的偏移地址处理器利用处理器利用ES:EA存取附加段中的数据存取附加段中的数据串串操操作作指指令令将将附附加加段段作作为为其其目目的的操操作作数数的的存放区域存放区域第第2章:堆栈段寄存器章:堆栈段寄存器SS(Stack Segment)堆栈段确定堆栈所在的主存区域堆栈段确定堆栈所在的主存区域堆栈段寄存器堆栈段寄存器SS存放堆栈段的段地址存放堆栈段的段地址堆栈指针寄存器堆栈指针寄存器SP指示堆栈栈顶的偏移地址指示堆栈栈顶的偏

48、移地址处理器利用处理器利用SS:SP操作堆栈顶的数据操作堆栈顶的数据第第2章:如何分配各个逻辑段章:如何分配各个逻辑段程序的程序的指令指令序列必须安排在代码段序列必须安排在代码段程序使用的程序使用的堆栈堆栈一定在堆栈段一定在堆栈段程程序序中中的的数数据据默默认认是是安安排排在在数数据据段段,也也经经常常安安排排在在附附加加段段,尤尤其其是是串串操操作作的目的区必须是附加段的目的区必须是附加段数数据据的的存存放放比比较较灵灵活活,实实际际上上可可以以存存放在任何一种逻辑段中放在任何一种逻辑段中演示演示演示演示例例 1已已 知知 CS=1055H,DS=250AH ES=2EF0H,SS=8FF0

49、H 数数据据段段中中某某操操作作数数的的偏偏移移地地址址=0204H各段首地址各段首地址=?画出各段在内存中的分布画出各段在内存中的分布该操作数的物理地址该操作数的物理地址=?这个例子说明:这个例子说明:段与段可以不连续段与段可以不连续段之间可以重叠段之间可以重叠10550H250A0H2EF00H8FF00HDS段段ES段段SS段段 CS段段例例2:设设当当前前执执行行的的程程序序中中某某条条指指令令的的物物理理地地址址为为5A1F6H,则则程程序序所所在在的的段段的的段段地地址址=?当前当前CS的内容为多少?的内容为多少?解:(有多个解,求出任意一个即可)解:(有多个解,求出任意一个即可)

50、 5A1F6H=5A10H10H+00F6H 所以,段地址所以,段地址=5A10H,CS的内容为的内容为5A10H 想一想,还有哪些解?想一想,还有哪些解?思考题:设当前数据段位于存储器的思考题:设当前数据段位于存储器的A8000H到到B7FFFH的的地址空间,问地址空间,问DS的内容应是什么才能访问该数据段的所有的内容应是什么才能访问该数据段的所有存储单元?存储单元?堆栈及堆栈段的使用堆栈及堆栈段的使用堆栈:内存中一个特殊区域,用于存放需要保护的数据。堆栈:内存中一个特殊区域,用于存放需要保护的数据。特点:(1)一端固定,另一端活动一端固定,另一端活动(2)存取数据的原则:存取数据的原则:“

51、先进后出先进后出” (3)进或出栈只能是字数据,不能是字节数据进或出栈只能是字数据,不能是字节数据 (4)栈的最大容量栈的最大容量64KB (5)堆栈通过堆栈通过SS(段地址)和(段地址)和SP(偏移地址)来访问(偏移地址)来访问 (6)堆栈指针堆栈指针 SP总是指向栈顶,它的内容是相对总是指向栈顶,它的内容是相对SS的地址偏移量的地址偏移量 (7)数据入栈时,栈顶均由高地址向低地址变化数据入栈时,栈顶均由高地址向低地址变化 数据出栈时,栈顶均由低地址向高地址变化数据出栈时,栈顶均由低地址向高地址变化常用于常用于响应中断响应中断子程序调用子程序调用参数传递参数传递例例3:若已知(若已知(SS)

52、=1000H (SP)=2000H则堆栈段的段起始地址则堆栈段的段起始地址= ?栈顶地址栈顶地址=?若若该该段段最最后后一一个个单单元元地地址址为为10100H则栈底单元的偏移地址则栈底单元的偏移地址=?段起始栈底栈顶堆栈段 第第2章:寄存器的总结章:寄存器的总结8088有有8个个8位位通通用用寄寄存存器器、8个个16位位通通用用寄存器寄存器8088有有6个状态标志和个状态标志和3个控制标志个控制标志8088将将1MB存存储储空空间间分分段段管管理理,有有4个个段段寄寄存器,对应存器,对应4种逻辑段种逻辑段8088有有4个个段段超超越越前前缀缀指指令令,用用于于明明确确指指定定数据所在的逻辑段数据所在的逻辑段 熟悉上述内容后,就可以进入下节熟悉上述内容后,就可以进入下节

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号