1、第二章第二章 CPU资源和存储器资源和存储器2.1 寄存器组寄存器组2.2 存储器的管理模式存储器的管理模式微机系统组成结构图微机系统组成结构图I/O接接口口主存储器主存储器系统总线系统总线辅助存储器辅助存储器输入设备输入设备输出设备输出设备CPU寄存器寄存器控制器控制器运算器运算器时钟时钟8086 CPU的内部结构的内部结构8086内部结构有两个功能模块:内部结构有两个功能模块:1.执行单元(执行单元(Execution Unit,EU):):负责指令的译码和执行负责指令的译码和执行2.总线接口单元(总线接口单元(Bus Inference Unit,BIU)主要负责读取指令和操作数主要负责
2、读取指令和操作数2022年8月17日星期三3内部暂存器内部暂存器 IP ES SS DS CS输入输入/输出输出控制电路控制电路外部总线外部总线执行部分执行部分控制电路控制电路1 2 3 4 5 6ALU标志寄存器标志寄存器 AH AL BH BLCH CL DH DL SP BP SI DI通用寄存器通用寄存器地址加法器地址加法器指令队列缓冲器指令队列缓冲器执行部件执行部件(EU)总线接口部件总线接口部件(BIU)16位位20位位16位位8位位2.1 寄存器组寄存器组 CPU中中为什么要使用寄存器为什么要使用寄存器寄存器比存储器存取速度快寄存器比存储器存取速度快使用灵活使用灵活(如暂存运算的
3、中间数据如暂存运算的中间数据)、控制方便(如、控制方便(如IP)寄存器的分类寄存器的分类通用寄存器通用寄存器:传送和暂存数据;参与算术逻辑运算并保存运:传送和暂存数据;参与算术逻辑运算并保存运算结果;算结果;段寄存器段寄存器:保存段地址,用于寻址时构成物理地址;:保存段地址,用于寻址时构成物理地址;专用寄存器专用寄存器:CPU运行的辅助工具。运行的辅助工具。2022年8月17日星期三5通通 用用 寄寄 存存 器器2022年8月17日星期三6类别类别32位位16位位8位位名称名称作用作用数据寄数据寄存器存器EAXAXAH、AL累加器累加器常作隐含操作数,可通用常作隐含操作数,可通用EBXBXBH
4、、BL基地址寄存器基地址寄存器常作地址指针,可通用常作地址指针,可通用ECXCXCH、CL计数器计数器常存放计数值,可通用常存放计数值,可通用EDXDXDH、DL数据寄存器数据寄存器常与累加器配合,可通用常与累加器配合,可通用变址寄变址寄存器存器ESISI无无源变址寄存器源变址寄存器保存源操作数地址保存源操作数地址EDIDI无无目的变址寄存器目的变址寄存器保存目的操作数地址保存目的操作数地址ESPSP无无栈顶指针栈顶指针只能保存堆栈栈顶地址只能保存堆栈栈顶地址EBPBP无无堆栈指针堆栈指针可保存堆栈任意位置地址可保存堆栈任意位置地址堆栈指堆栈指针寄存针寄存器器数据寄存器数据寄存器AX、BX、C
5、X和和DX16位寄存器位寄存器高低高低8位位可分为两个独立寄存器使用;可分为两个独立寄存器使用;主要用于暂存指令执行过程中的数据;主要用于暂存指令执行过程中的数据;特殊用途特殊用途AX:累加器累加器,ALU运算核心部件、某些指令的默认寄存器;运算核心部件、某些指令的默认寄存器;BX:基址寄存器基址寄存器,存放存储单元的有效地址;,存放存储单元的有效地址;CX:计数器计数器,串操作指令和循环指令中的默认计数器;,串操作指令和循环指令中的默认计数器;DX:与:与AX合用保存合用保存32位数据;位数据;I/O指令中存放端口地址。指令中存放端口地址。2022年8月17日星期三7累加器累加器AX 16位
6、寄存器可以存储位寄存器可以存储2个字节的数据;个字节的数据;例如,数值例如,数值2008H存放于存放于AX累加器中。累加器中。AX可分做两个可分做两个8位的寄存器使用,分别为位的寄存器使用,分别为AH和和AL。(AX)=2008H,则(,则(AH)=20H,(,(AL)=08H;BX、CX、DX类似。类似。2022年8月17日星期三8AX0123456789101112131415无符号数范围为无符号数范围为065535有符号数范围为有符号数范围为-32768+327670 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0AHAL变址寄存器变址寄存器SI、DI16位寄存器;位寄存器;
7、常作为指针常作为指针,存放存储单元有效地址,也可暂存数据;,存放存储单元有效地址,也可暂存数据;特殊用法:特殊用法:SI、DI中保存的地址信息可以随着指令的执行而自动改变;中保存的地址信息可以随着指令的执行而自动改变;SI:源变址寄存器源变址寄存器,串操作中存放源串地址,默认,串操作中存放源串地址,默认DS段;段;DI:目的变址寄存器目的变址寄存器,串操作中存放目的串地址,默认,串操作中存放目的串地址,默认ES段;段;该特殊用法只在字符串操作中有效该特殊用法只在字符串操作中有效,其它场合下作一般的指,其它场合下作一般的指针寄存器使用;针寄存器使用;2022年8月17日星期三9堆栈指针寄存器堆栈
8、指针寄存器SP、BP堆栈是一个先进后出的数据结构,栈底位堆栈是一个先进后出的数据结构,栈底位置不变;置不变;栈顶指针栈顶指针SP其中始终存放栈顶单元的有效地址;其中始终存放栈顶单元的有效地址;其值是其值是由出入栈指令自动更改由出入栈指令自动更改的,一的,一般不允许随意对该寄存器赋值;般不允许随意对该寄存器赋值;堆栈指针堆栈指针BP其中数据一般作为地址进行访存;其中数据一般作为地址进行访存;默认对应于默认对应于SS段段,可寻址堆栈中的任,可寻址堆栈中的任何单元。何单元。2022年8月17日星期三10堆栈堆栈栈底栈底 1 2 31 2 3 3 2 1 栈顶栈顶段段 寄寄 存存 器器类别类别16位位
9、8位位名称名称作用作用段寄存器段寄存器无无代码段段寄存器代码段段寄存器存放代码段段地址存放代码段段地址无无数据段段寄存器数据段段寄存器存放数据段段地址存放数据段段地址无无附加段段寄存器附加段段寄存器存放附加段段地址存放附加段段地址无无堆栈段段寄存器堆栈段段寄存器存放堆栈段段地址存放堆栈段段地址 一段汇编语言程序一段汇编语言程序至少有一个逻辑段至少有一个逻辑段代码段,用于存放代码段,用于存放代码;代码;一段汇编语言程序一段汇编语言程序最多有最多有4个逻辑段个逻辑段1个代码段,个代码段,3个数据个数据段,分别用于存放代码和数据;段,分别用于存放代码和数据;2022年8月17日星期三11CSDSES
10、SSCS (Code Segment)代码段代码段用来存放要执行的用来存放要执行的指令序列指令序列;段首地址段首地址用代码段寄存器用代码段寄存器CS来保存;来保存;指令指针寄存器指令指针寄存器IP指示本段中的地址;指示本段中的地址;n将要执行的下条指令的有效地址;将要执行的下条指令的有效地址;CPU利用利用CS:IP形成存储单元的物理地址,以获取下条形成存储单元的物理地址,以获取下条要执行指令的代码。要执行指令的代码。2022年8月17日星期三12DS (Data Segment)数据段数据段用来存放程序运行所需要的数据;用来存放程序运行所需要的数据;段首地址段首地址用数据段寄存器用数据段寄存
11、器DS来保存;来保存;CPU利用利用DS:EA形成存储单元的物理地址,以获取数形成存储单元的物理地址,以获取数据段中的数据;据段中的数据;nEA的形成方式详见第的形成方式详见第3章寻址方式的介绍。章寻址方式的介绍。2022年8月17日星期三13ES(Extra Segment)附加段附加段 即即附加的数据段附加的数据段,保存程序运行所需要的数据;,保存程序运行所需要的数据;段首地址段首地址用附加段寄存器用附加段寄存器ES来保存;来保存;CPU利用利用ES:EA形成存储单元的物理地址,以获取附加形成存储单元的物理地址,以获取附加段中的数据;段中的数据;串操作指令串操作指令常将附加段常将附加段ES
12、作为目的操作数的存放区域。作为目的操作数的存放区域。2022年8月17日星期三14SS (Stack Segment)堆栈堆栈用于存储程序运行中用于存储程序运行中需要临时保护的数据需要临时保护的数据;段首地址段首地址用堆栈段寄存器用堆栈段寄存器SS来保存;来保存;堆栈指针寄存器堆栈指针寄存器SP保存堆栈栈顶的有效地址;保存堆栈栈顶的有效地址;CPU利用利用SS:SP对堆栈栈顶单元进行操作;对堆栈栈顶单元进行操作;利用利用SS:BP对堆栈中的任一单元进行操作。对堆栈中的任一单元进行操作。2022年8月17日星期三15专专 用用 寄寄 存存 器器 指令指针指令指针IP保存将要执行指令的有效地址;保
13、存将要执行指令的有效地址;该寄存器的内容是该寄存器的内容是不允许人为更改不允许人为更改的,通过指令的执行而的,通过指令的执行而自动改变。自动改变。标志寄存器标志寄存器FLAG该寄存器是利用其中的该寄存器是利用其中的每一位每一位来反映当前来反映当前CPU执行指令的执行指令的结果或控制指令执行形式。结果或控制指令执行形式。2022年8月17日星期三16类别类别16位位8位位名称名称作用作用专用专用寄存器寄存器IP无无指令指针寄存指令指针寄存器器保存将要取出的指令有效地址保存将要取出的指令有效地址FLAG 无无标志寄存器标志寄存器保存保存CPU当前的状态标志信息当前的状态标志信息16位标志寄存器位标
14、志寄存器 仅用到其中仅用到其中9位,且按位使用;位,且按位使用;6位状态标志位:反映位状态标志位:反映ALU的执行状态;的执行状态;n按照按照ALU指令执行的结果设置各状态标志位;指令执行的结果设置各状态标志位;3位控制标志位:控制位控制标志位:控制CPU的某些功能;的某些功能;2022年8月17日星期三171514131211109876543210OFDFIFTFSFZFAFPFCF进位标志进位标志零标志零标志符号标志符号标志溢出标志溢出标志方向标志方向标志中断允许标志中断允许标志陷阱标志陷阱标志奇偶标志奇偶标志辅助进位标志辅助进位标志常用的状态标志位常用的状态标志位 进位标志位进位标志位
15、CF运算结果有进位或借位时,运算结果有进位或借位时,CF=1,否则,否则CF=0;溢出标志位溢出标志位OF运算结果超出了数据表示范围时,运算结果超出了数据表示范围时,OF=1,否则,否则OF=0;符号标志位符号标志位SF运算结果为负数时,运算结果为负数时,SF=1,否则,否则SF=0;零标志位零标志位ZF运算结果为运算结果为0时,时,ZF=1,否则,否则ZF=0;2022年8月17日星期三18标志位设置标志位设置例例1:3AH+7CH例例2:0AAH+7CH2022年8月17日星期三193A H=0011 1010 B+)7C H=0111 1100 B1011 0110 B=0B6HCF=S
16、F=ZF=OF=1010AA H=1010 1010 B+)7C H=0111 1100 B1 0010 0110 B=(1)26HCF=SF=ZF=OF=0100问题:问题:什么是溢出?什么是溢出?溢出和进位有何区别?溢出和进位有何区别?如何判断溢出?如何判断溢出?2022年8月17日星期三20什么是溢出?什么是溢出?微机中常用补码来表示有符号数;微机中常用补码来表示有符号数;8位表达的范围是:位表达的范围是:-128 +12716位表达的有符号数范围是位表达的有符号数范围是:-32768 +32767 如果运算结果超出这个范围,就产生了溢出,则表示该运如果运算结果超出这个范围,就产生了溢出
17、,则表示该运算结果不正确!算结果不正确!注意:只有加减法运算中才会出现溢出现象,在其他运算注意:只有加减法运算中才会出现溢出现象,在其他运算中无溢出!中无溢出!2022年8月17日星期三21溢出和进位的区别溢出和进位的区别 溢出标志溢出标志OF和进位标志和进位标志CF是两个意义不同的标志位;是两个意义不同的标志位;进位标志进位标志CF其设置完全根据二进制数据的计算情况设置;其设置完全根据二进制数据的计算情况设置;表示表示无符号数无符号数的运算结果是否溢出;的运算结果是否溢出;无论无论CF为何值,无符号数的运算结果均正确。为何值,无符号数的运算结果均正确。溢出标志溢出标志OF其设置是把数据看作其
18、设置是把数据看作有符号数有符号数来判断的;来判断的;表示有符号数运算结果是否溢出;表示有符号数运算结果是否溢出;当当OF=1时,有符号数的运算结果不正确。时,有符号数的运算结果不正确。2022年8月17日星期三22前面例子的结果前面例子的结果 例例1:3AH+7CHB6H作为无符号数:作为无符号数:58124182,范围内,无进位,范围内,无进位作为有符号数:作为有符号数:58124182,范围外,有溢出,范围外,有溢出 例例2:AAH+7CH(1)26H作为无符号数:作为无符号数:170124294,范围外,有进位范围外,有进位作为有符号数:作为有符号数:8612438,范围内,无溢出,范围
19、内,无溢出2022年8月17日星期三23如何判断溢出?如何判断溢出?判断运算结果是否溢出的规则:运算前后数据的符号判断运算结果是否溢出的规则:运算前后数据的符号将减法运算转换成加法运算;将减法运算转换成加法运算;x y补补 x补补+y补补(mod 2n+1)当当正数正数+正数正数=负数负数,或者,或者负数负数+负数负数=正数正数时,产生溢出。时,产生溢出。其他判断方法:其他判断方法:直接判别法:不容易判断;直接判别法:不容易判断;进位判别法:最高位和次高位的进位位相异或。进位判别法:最高位和次高位的进位位相异或。2022年8月17日星期三24判断标志位状态判断标志位状态例:计算(例:计算(-5
20、6)+(-67)=?,并给出,并给出6个状态标志位的状态。个状态标志位的状态。2022年8月17日星期三25 1100 1000 1011 1101 (1)1000 0101CF=,ZF=,SF=,OF=-123D1010(-56)补补1100 1000(-67)补补1011 11012.2 存储器的管理模式存储器的管理模式主存储器用于存放系统运行所需要的所有的程序和数据;主存储器用于存放系统运行所需要的所有的程序和数据;开机后自动从开机后自动从BIOS和辅存中调入数据,掉电后丢失;和辅存中调入数据,掉电后丢失;存储器的基本单位是存储器的基本单位是存储单元存储单元;每个存储单元的大小可以是一个
21、字节,或一个字;每个存储单元的大小可以是一个字节,或一个字;n8086 CPU的主存是以字节进行组织的;的主存是以字节进行组织的;每个存储单元都有一个唯一的编号,称为每个存储单元都有一个唯一的编号,称为物理地址物理地址,用于,用于CPU访问;访问;存储器容量单位存储器容量单位bit、Byte、KB、MB、GB2022年8月17日星期三26物理地址(物理地址(Physical Address,PA)将将整个存储器整个存储器从第一单元到最后一个单元从第一单元到最后一个单元按顺序编号按顺序编号所得到的地址称为物理地址;所得到的地址称为物理地址;物理地址可以物理地址可以唯一唯一地标识每一个存储单元;地
22、标识每一个存储单元;CPU访问主存时,必须通过地址总线输出访问主存时,必须通过地址总线输出所要访问存储单元的的物理地址。所要访问存储单元的的物理地址。系统的最大主存容量系统的最大主存容量取决于地址总线的位取决于地址总线的位数;数;2022年8月17日星期三27主存储器主存储器000B001B010B111BCPU对主存储器的访问过程对主存储器的访问过程1.CPU通过通过控制总线控制总线,发出访存信号,通知主存准备数据读写;,发出访存信号,通知主存准备数据读写;2.CPU通过通过地址总线地址总线,发出存储单元的地址;,发出存储单元的地址;主存储器接收到地址后,译码,寻址正确的存储单元;主存储器接
23、收到地址后,译码,寻址正确的存储单元;3.CPU通过通过控制总线控制总线,发出读写的命令;,发出读写的命令;主存储器将准备执行读写操作;主存储器将准备执行读写操作;4.CPU通过通过数据总线数据总线,读出或写入的数据;,读出或写入的数据;2022年8月17日星期三28CPU主存主存数据总线数据总线地址总线地址总线读写控制线读写控制线访存控制线访存控制线8086需要需要4个时钟周期,个时钟周期,80486只需要只需要1个时钟周期。个时钟周期。1PA1100 011011100 0110存储单元中数据的存取方法存储单元中数据的存取方法 基本原则:基本原则:高高低低原则高高低低原则即低地址单元存放低
24、位数据,即低地址单元存放低位数据,高地址单元存放高位数据。高地址单元存放高位数据。例如,存储器如右图所示例如,存储器如右图所示12341H单元的单元的字节字节数据为数据为34H;12341H单元的单元的字字数据为数据为5634H。2022年8月17日星期三29123456789012340H12341H12342H12343H12344H存储器分段管理的原因存储器分段管理的原因 16位系统中位系统中地址总线地址总线20根根可寻址主存空间为可寻址主存空间为220=1MB 地址区间地址区间00FFFFFH机器字长机器字长16位位运算的最大位数、指针等只有运算的最大位数、指针等只有16位位可直接寻址
25、的空间为可直接寻址的空间为216=64KB 地址区间地址区间00FFFFH 因此,采用分段方式管理和访问内存。因此,采用分段方式管理和访问内存。2022年8月17日星期三30物理地址物理地址存储器的分段管理存储器的分段管理 分段的思想:分段的思想:用用两个两个16位地址合成的方法形成一个位地址合成的方法形成一个20位的物理地址位的物理地址 关于分段的规定关于分段的规定段的起始段的起始:每个逻辑段的起始地址必须是每个逻辑段的起始地址必须是16的倍数。的倍数。即:即:xxxx xxxx xxxx xxxx 0000B 或:或:xxxx0H段的容量段的容量:每个逻辑段的最大容量可以达到每个逻辑段的最
26、大容量可以达到64KB。注意:注意:各逻辑段之间是可以重叠的各逻辑段之间是可以重叠的。2022年8月17日星期三31主存实际上并没有从物主存实际上并没有从物理上分段,段的划分只理上分段,段的划分只是来自于是来自于CPU的管理!的管理!存储器的分段管理模式存储器的分段管理模式2022年8月17日星期三32物理地址物理地址00000H12340H12341H 22000H2233FH0FFFFFH主存储器主存储器段起始单元段起始单元逻辑段逻辑段1 1段地址为:段地址为:1234H1234H保存于段寄存器中保存于段寄存器中偏移地址偏移地址0000H0001H0002H 0FFFFH段起始单元段起始单
27、元逻辑段逻辑段2 2段地址为:段地址为:2200H2200H保存于段寄存器中保存于段寄存器中偏移地址偏移地址0000H0001H0002H 0FFFFH关于分段关于分段 1MB空间最多能分成多少个段?空间最多能分成多少个段?逻辑段最密集的划分方式逻辑段最密集的划分方式每隔每隔16个存储单元开始一个新段,各段都是重叠的;个存储单元开始一个新段,各段都是重叠的;所以,所以,1MB最多可以有最多可以有2201621664K 个段个段 1MB空间最少能分成多少个段?空间最少能分成多少个段?逻辑段最松散的划分方式逻辑段最松散的划分方式每隔每隔 64K 个存储单元开始一个新段,各段不重叠;个存储单元开始一
28、个新段,各段不重叠;所以,所以,1MB最少可以有最少可以有 22021616 个段个段2022年8月17日星期三33物理地址的形成物理地址的形成 任意一个物理地址均可以用任意一个物理地址均可以用段地址段地址和和偏移地址偏移地址两部分形成;两部分形成;逻辑地址逻辑地址:段地址:段地址+偏移地址偏移地址分段的不同,可导致分段的不同,可导致同一个物理地址对应多个不同的逻辑地同一个物理地址对应多个不同的逻辑地址址。物理地址物理地址(PA)=段地址段地址16+偏移地址偏移地址段地址段地址:段起始单元物理地址的高:段起始单元物理地址的高16位,其值由段寄存器位,其值由段寄存器(CS、DS、ES、SS)保存
29、;)保存;偏移地址偏移地址:也叫有效地址:也叫有效地址(EA),指实际单元和段起始单元,指实际单元和段起始单元之间的距离。之间的距离。2022年8月17日星期三34即将段地址左移即将段地址左移4个二进制位个二进制位分段模式下主存储器的地址类型分段模式下主存储器的地址类型 物理地址物理地址每个存储单元在整个存储器中的唯一标识;每个存储单元在整个存储器中的唯一标识;段地址段地址逻辑段首单元的物理地址的高逻辑段首单元的物理地址的高16位;位;有效地址有效地址EA(段内偏移地址)(段内偏移地址)该存储单元相对于段首单元的偏移量;该存储单元相对于段首单元的偏移量;该单元物理地址该单元物理地址=有效地址有
30、效地址+段首单元的物理地址;段首单元的物理地址;逻辑地址逻辑地址由段地址和有效地址表示的存储单元地址形式;由段地址和有效地址表示的存储单元地址形式;2022年8月17日星期三35某单元某单元A的物理地址为的物理地址为23000H若段起始地址为若段起始地址为20000H,即段地址为,即段地址为2000H则则A的有效地址为的有效地址为3000H该段中,该段中,A的逻辑地址可表示为的逻辑地址可表示为2000H:3000H段寄存器的引用段寄存器的引用 段寄存器要与指针寄存器一起使用来访问主存段寄存器要与指针寄存器一起使用来访问主存;代码段段寄存器代码段段寄存器CS指针寄存器为指针寄存器为IP。数据段段
31、寄存器数据段段寄存器DS指针寄存器指针寄存器一般一般用用BX、SI、DI。附加段段寄存器附加段段寄存器ES指针寄存器指针寄存器一般一般用用DI(字符串操作字符串操作)。堆栈段段寄存器堆栈段段寄存器SS指针寄存器指针寄存器SP指向栈顶,指针寄存指向栈顶,指针寄存器器BP指向栈内任意位置。指向栈内任意位置。2022年8月17日星期三36物理地址的形成物理地址的形成2022年8月17日星期三37内部暂存器内部暂存器 IP ES SS DS CS输入输入/输出输出控制电路控制电路外部总线外部总线执行部分执行部分控制电路控制电路1 2 3 4 5 6ALU标志寄存器标志寄存器 AH AL BH BLCH
32、 CL DH DL SP BP SI DI通用寄存器通用寄存器地址加法器地址加法器指令队列缓冲器指令队列缓冲器执行部件执行部件(EU)总线接口部件总线接口部件(BIU)16位位20位位16位位8位位习题习题2.8 填空填空1.16位位CPU在取指令时,需要用到的寄存器有在取指令时,需要用到的寄存器有和和;2.访问访问堆栈段栈顶单元堆栈段栈顶单元要由要由段寄存器和段寄存器和寄存器组合寄存器组合来寻址,访问来寻址,访问堆栈段中的单元堆栈段中的单元要由要由段寄存器和段寄存器和寄寄存器组合来寻址;存器组合来寻址;3.访问访问数据段中的单元数据段中的单元要由要由 段寄存器和段寄存器和 寄寄存器组合来寻址
33、;存器组合来寻址;4.在在16位微机系统中,一个程序位微机系统中,一个程序最多最多能同时使用能同时使用个数据段。个数据段。2022年8月17日星期三39CSIPSSSPSSBPDSBX、SI、DI3DS、ES、SS本章小结本章小结 熟悉熟悉CPU内部寄存器的功能和用法,能够在以后的汇编语言内部寄存器的功能和用法,能够在以后的汇编语言程序设计中熟练应用;程序设计中熟练应用;理解理解8086系统中的存储器分段管理模式;系统中的存储器分段管理模式;理解分段管理模式下的物理地址形成;理解分段管理模式下的物理地址形成;熟悉分段管理模式下的逻辑地址表示;熟悉分段管理模式下的逻辑地址表示;了解分段管理模式下地址与寄存器之间的关系;了解分段管理模式下地址与寄存器之间的关系;2022年8月17日星期三40第第2章章 作业作业P21 1、3、9、12补充作业:补充作业:1、为什么实模式下的每个段不能超过、为什么实模式下的每个段不能超过64KB?2、设有一个包含、设有一个包含8个字的数据区,起始地址为个字的数据区,起始地址为2100:2A10H,请给出该数据区首末字单元的物理地址。,请给出该数据区首末字单元的物理地址。2022年8月17日星期三41