1、第2章 寄存器与存储器,【本章提要】本章将着重讲解Intel系列CPU内部寄存器的组织结构、命名、功能及其常见的用途,还要介绍存储器的分段管理模式、存储单元地址的表示法以及其物理地址的形成方式。 【学习目标】熟练掌握CPU内部寄存器的组织结构熟练掌握标志寄存器各定义位的功能掌握存储器的分段管理方案,2019年5月10日星期五,2.1 寄存器组织,寄存器是CPU内部重要的数据存储资源,是汇编程序员能直接使用的硬件资源之一。 Intel系列微处理器从早期的16位8086开始,到Pentium系列,以至于现在的CORE(酷睿)系列,虽然CPU内部结构和功能变化很大,但其寄存器的组织情况却是有规律的。
2、,2019年5月10日星期五,2019年5月10日星期五,2.1.2 标志寄存器,Intel的16位CPU中设置了16位的标志寄存器FLAGS,其中定义了9个标志位,主要用来反映CPU的状态和运算结果的特征。 后来在32位和64位环境下,FLAGS又分别被扩展到了32位和64位(即EFLAGS和RFLAGS),同时又增加一些新的标志位定义。,2019年5月10日星期五,1、进位标志CF(Carry Flag)如果运算结果的最高位产生了一个进位或借位,其值为1,否则其值为0。 2、奇偶标志PF(Parity Flag)运算结果中最低8位中“1”的个数为偶数,则PF的值为1,否则其值为0。 3、辅
3、助进位标志AF(Auxiliary Carry Flag)在字操作时,发生低字节向高字节进位或借位,或者在字节操作时,发生低4位向高4位进位或借位,则AF的值被置为1,否则其值为0。 4、零标志ZF(Zero Flag)如果运算结果为0,则其值为1,否则其值为0。 5、符号标志SF(Sign Flag)符号标志SF用来反映运算结果的符号位,它与运算结果的最高位相同。 6、溢出标志OF(Overflow Flag)如果运算结果超过当前运算位数所能表示的范围,则称为溢出,OF的值被置为1,否则,OF的值被清为0。,2019年5月10日星期五,7、追踪标志TF(Trap Flag)当追踪标志TF被置
4、为1时,CPU进入单步执行方式,即每执行一条指令,产生一个单步中断请求。 8、中断允许标志IF(Interrupt-enable Flag)中断允许标志IF是用来决定CPU是否响应CPU外部的可屏蔽中断发出的中断请求。(1)当IF=1时,CPU可以响应CPU外部的可屏蔽中断发出的中断请求;(2)当IF=0时,CPU不响应CPU外部的可屏蔽中断发出的中断请求。 9、方向标志DF(Direction Flag)方向标志DF用来决定在串操作指令执行时有关指针寄存器发生调整的方向。,2019年5月10日星期五,2.2 存储器的管理模式,Intel的80X86系列CPU基本上采用内存分段的管理模式。它把
5、内存和程序分成若干个段,每个段的起点用一个段寄存器来保存。 2.2.1 实地址方式内存管理 目前的Intel系列CPU都能工作在实地址方式或保护地址方式下。实地址方式下只能访问1MB的内存空间,只能单任务运行,8086只有这一种工作方式,80286以后的系列CPU的可以运行在保护地址方式。 如果工作在实地址模式,则任何高档处理器只相当于快速的8086,因此寻址方法与8086一样,在这种方式下处理器没有充分发挥处理器的性能。只有在保护方式下,处理器才真正发挥应有的作用。,2019年5月10日星期五,1段地址与偏移地址 在实地址方式下,段地址定义了段起始地址的高16位,并存放在段寄存器中。逻辑段的
6、起始地址(通常简称为:段地址)必须是16的倍数,即最低4位二进制必须全为0。 1M内存最多可分成64K个段,即65536个段(段之间相互重叠),至少可分成16个相互不重叠的段。 偏移地址描述目的地址在该段中的相对位置,即离段基址的偏移量,它指示在64KB段内任何一个单元。偏移地址保存在16位寄存器中,因此段的大小最大为64KB。 2. 默认段地址与偏移地址寄存器,2019年5月10日星期五,3. 逻辑地址与物理地址,逻辑地址是段地址与偏移地址的合称,用“段地址:偏移地址”表示,如1234H:1200H表示段地址为1234H,段内偏移地址为1200H。 物理地址是存储器的实际地址,在实地址方式下
7、物理地址通过段地址乘以16加上偏移地址得到。而16位的段地址乘以16等同于左移4位二进制位,这样变成20位的段基地址,最后段基地址加上段内偏移地址就是物理地址。【例2.1】有一逻辑地址为1200H:0340H,求物理地址。解:由逻辑地址知段地址=1200H,偏移地址=0340H,因此物理地址=12000H+0340H=12340H。【例2.2】已经DS=1000H,CS=2200H,指令MOV 2000H,AX在代码段中的偏移量是IP=0150H,求(1)该指令所在的物理地址。(2)目的操作数对应的物理地址。 解:(1)指令对应的物理地址=CS*16+IP=22000H+0150H=22150
8、H。(2)该指令指示的目的操作数对应段地址默认存在DS中,偏移地址已由指令给出2000H,因此该指令指示的目的操作数所在物理地址=DS*16+2000H =10000H+2000H =12000H。,2019年5月10日星期五,4. 存储单元的内容,存储单元是按照地址进行访问的,相邻两个单元的地址编号是连续的,一般以无符号数表示,Intel系列CPU都以字节为单位分配地址编号的。1)一个字节的内容占用一个存储单元并分配一个地址编号;2)一个字的内容是该字地址所指向的单元及其后继1个单元的内容拼接而成;3)一个32位的内容是该字地址所指向的单元及其后继3个单元的内容拼接而成;4)一个64位的内容是该字地址所指向的单元及其后继7个单元的内容拼接而成。 在拼接多个内存单元时,按“高对高低对低”的原则来处理,即:高存储单元(地址大的存储单元)的值是高数据位,低存储单元(地址小的存储单元)的值是低数据位。,2019年5月10日星期五,2.2.2 保护方式内存管理模式 略,