《第二章微机中的微处理器.ppt》由会员分享,可在线阅读,更多相关《第二章微机中的微处理器.ppt(109页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第二章微机中的微处理器引言微处理器是组成微计算机系统的核心部件。本章重点讲解8086微处理器,因为它体现了简单微处理器的一般原理,也是学习汇编语言程序设计的基础。主要讨论:微处理器的内部结构、与之配合的存储器组织、I/O组织和寻址方式。2010.2.251第二章微机中的微处理器2.18086微处理器的内部结构2.28086的寄存器结构2.38086的存储器组织2.38086的I/O组织2.58086的寻址方式2010.2.252微处理器的功能:微处理器的功能:MPUMPU是是组成计算机系统的核心部件,它具有运算和控制组成计算机系统的核心部件,它具有运算和控制的功能的功能。具体来讲,它有以下基本
2、功能。具体来讲,它有以下基本功能1.支持功能完善的指令系统,进行各种算术逻辑运算,通过程序完成复支持功能完善的指令系统,进行各种算术逻辑运算,通过程序完成复杂的科学计算。杂的科学计算。2.支持各种结构的程序的执行,如程序的分支、循环、嵌套、子程序的支持各种结构的程序的执行,如程序的分支、循环、嵌套、子程序的调用和返回、中断服务程序等。调用和返回、中断服务程序等。3.控制与存储器、外部设备等相连,组成完整的微机系统。控制与存储器、外部设备等相连,组成完整的微机系统。2.1微处理器的内部结构2.1微处理器的一般结构2010.2.253微处理器的功能:微处理器的功能:具体来讲,它有以下基本功能具体来
3、讲,它有以下基本功能 进行算术运算和逻辑进行算术运算和逻辑 运算;运算;接收存储器和接收存储器和I/O接口送来的数据和发送数据给存储器和接口送来的数据和发送数据给存储器和I/O接口;接口;暂存少量数据;暂存少量数据;对指令进行寄存、译码并执行指令所规定的操作;对指令进行寄存、译码并执行指令所规定的操作;提供整个系统所需的定时和控制信号;提供整个系统所需的定时和控制信号;响应响应I/O设备发出的中断请求。设备发出的中断请求。2.1微处理器的内部结构2.1微处理器的一般结构2010.2.254微处理器的功能:微处理器的功能:从程序设计的角度考虑,从程序设计的角度考虑,CPU必须便于处理必须便于处理
4、:赋值和算术表达式赋值和算术表达式 无条件转移无条件转移 条件转移以及关系和逻辑表达式条件转移以及关系和逻辑表达式 循环循环 数组和其它数据结构数组和其它数据结构 子程序子程序 输入输入/输出输出2.1微处理器的内部结构2010.2.255CPU的实际工作就是执行每一条指令。执行每一条指令都可分为三个阶段,即:1.取指令2.分析指令3.执行指令2.1微处理器的内部结构取指令取指令:从存储器中读出现行指令,把指令送入CPU中。分析指令分析指令:对指令进行译码,分析其指令性质。如指令要求操作数,则寻找操作数地址。执行指令执行指令:进行相应的操作。2010.2.2563.1.1微处理器的内部结构串行
5、处理串行处理指令的执行过程:指令的执行过程:取指令取指令取操作数取操作数(如需要如需要)执行指令执行指令写入存储器(如需要)。写入存储器(如需要)。取指令1 译码1 取数据1 执行1 存结果1取指令2 译码2 执行2取指令1 译码1 取数据1 执行1 存结果1取指令2 译码2 执行2取指令3 译码3 执行3 存结果3并行处理并行处理2010.2.2571 2 3 4 5 6内部寄存器内部寄存器 IP ES SS DS CS总线控制总线控制逻辑逻辑EU控制器控制器ALU标志寄存器标志寄存器 AH AL BH BLCH CL DH DL SP BP SI DI通用通用寄存器寄存器地址地址加法器加法
6、器指令队列指令队列执行单元执行单元(EU)总线接口单元总线接口单元(BIU)16位位20位位16位位8位位ALU数据总线数据总线数据数据总线总线8086总线总线2.18086微处理器的功能结构2010.2.258总线接口单元(BIU)总线接口单元由下列各部分组成:总线接口单元由下列各部分组成:(1)4个段地址寄存器;个段地址寄存器;1.CS16位的代码段寄存器;位的代码段寄存器;2.DS16位的数据段寄存器;位的数据段寄存器;3.ES16位的扩展段寄存器;位的扩展段寄存器;4.SS16位的堆栈段寄存器;位的堆栈段寄存器;(2)16位的指令指针寄存器位的指令指针寄存器IP;(3)6字节的指令队列
7、寄存器;字节的指令队列寄存器;(4)20位的地址加法器;位的地址加法器;(5)完成与完成与EU通讯的内部寄存器;通讯的内部寄存器;(6)总线控制逻辑。)总线控制逻辑。取指令时取指令时:从存储器指定地址取出指令送入指令队列排队;:从存储器指定地址取出指令送入指令队列排队;执行指令时执行指令时:根据:根据EU命令对指定存储器单元或者命令对指定存储器单元或者I/O端口存取数据。端口存取数据。2010.2.259执行单元(EU)执行单元由下列各部分组成:执行单元由下列各部分组成:(1)算术逻辑运算单元()算术逻辑运算单元(ALU););(2)标志寄存器(标志寄存器(FR):):(3)通用寄存器组)通用
8、寄存器组-AX,BX,CX,DX,SP,BP,DI,SI;(4)EU控制器;控制器;(5)暂存器。暂存器。工作:执行指令,进行全部的算术逻辑运算、完成偏移地址的计算,工作:执行指令,进行全部的算术逻辑运算、完成偏移地址的计算,向向BIU提供指令执行结果的数据和偏移地址,并对通用寄存器和标志提供指令执行结果的数据和偏移地址,并对通用寄存器和标志寄存器进行管理。寄存器进行管理。2010.2.25102.18086的内部结构指令和程序执行过程如下图:指令和程序执行过程如下图:取指令1执行1取指令2取数据2执行2取指令3执行3BIUBIUEUEU2010.2.25112.28086的寄存器结构 AX
9、AH AL BX BH BL 数据寄存器数据寄存器 CX CH CL (8/16位)位)DX DH DL 通用寄存器通用寄存器 SP 堆栈指针堆栈指针 BP 基址指针基址指针 地址指针地址指针/变址寄存器变址寄存器 SI 源变址源变址(16位)位)DI 目的变址目的变址 CS 代码段代码段 DS 数据段数据段 段寄存器段寄存器 SS 堆栈段堆栈段(16位)位)ES 附加段附加段 专用寄存器专用寄存器 IP 指令指针指令指针 控制寄存器控制寄存器 FLAG 标志寄存器标志寄存器(16位)位)2010.2.25122.2.1通用寄存器组4个个16位数据寄存器(存在于位数据寄存器(存在于 EU中):
10、中):包括包括AX,BX,CX,DX。主要功能主要功能:(见见P14表表2.1)1.存放数据存放数据2.存放地址存放地址每一个寄存器又可分为两个每一个寄存器又可分为两个8位的数据寄存器:位的数据寄存器:AX-AH ALBX-BH BLCX-CH CLDX-DH DL16位数据寄存器可存放数据和地址,而位数据寄存器可存放数据和地址,而8位寄存器只能存放数据位寄存器只能存放数据2010.2.25132.2.1数据寄存器AX累加器,累加器,使用频度最高使用频度最高使用频度最高使用频度最高,用于算术、逻辑运算,用于算术、逻辑运算,以及与外设传送信息等;以及与外设传送信息等;累加器一般用来存放参加运算的
11、数据和结果。尤其在累加器一般用来存放参加运算的数据和结果。尤其在乘、除法运算、乘、除法运算、I/O操作中有不可替代的作用。操作中有不可替代的作用。乘法运算:存放结果乘法运算:存放结果除法运算:存放商除法运算:存放商I/O操作:操作:AX(或或AL)与与I/O端口进行数据通信。端口进行数据通信。2010.2.25142.2.1数据寄存器BX基址寄存器基址寄存器基址寄存器可作数据寄存器基址寄存器可作数据寄存器还可放内存的逻辑偏移地址,而还可放内存的逻辑偏移地址,而AXAX,CXCX,DXDX则不能。则不能。如:如:MOVAX,MOVAX,BXBX但是,如果写成:但是,如果写成:MOVAX,MOVA
12、X,CXCX是错误的是错误的2010.2.25152.2.1数据寄存器CX计数寄存器计数寄存器计数寄存器做数据寄存器计数寄存器做数据寄存器还可以在循环操作中和移位操作中做计数器用还可以在循环操作中和移位操作中做计数器用。如:如:MOVCX,15MOVCX,15(循环程序中);给(循环程序中);给cxcx赋值为赋值为1515.循环操作循环操作1515次次2010.2.25162.2.1数据寄存器DXDX做通用数据寄存器做通用数据寄存器还在乘、除法运算、带符号数的扩展指令中有特殊用途。还在乘、除法运算、带符号数的扩展指令中有特殊用途。2010.2.25172.2.1通用寄存器组地址指针和变址寄存器
13、:地址指针和变址寄存器:变址寄存器,用于在某些变址寄存器,用于在某些间接寻址方式间接寻址方式中存放中存放段内段内 偏移地址偏移地址的全部或一部分:的全部或一部分:SI源变址寄存器源变址寄存器 DI目的变址寄存器目的变址寄存器串操作类指令中,串操作类指令中,SI和和DI具有特别的功能具有特别的功能指针寄存器用于寻址内存指针寄存器用于寻址内存堆栈堆栈内的数据:内的数据:SP堆栈指针,指示栈顶的偏移地址。堆栈指针,指示栈顶的偏移地址。SP不能再用于其他目的,具有专用目的。不能再用于其他目的,具有专用目的。BP基址指针,用于在某些间接寻址方式中存放段内偏移地址的一部分。基址指针,用于在某些间接寻址方式
14、中存放段内偏移地址的一部分。SP和和BP寄存器与寄存器与SS段寄存器联合使用以确定堆栈段中的存储单段寄存器联合使用以确定堆栈段中的存储单元地址。元地址。2010.2.2518BIU设有设有4个个16位段寄存器位段寄存器 (可见(可见P18的的2.2.3内容)内容)2.2.2段寄存器组段寄存器用来存放段寄存器用来存放段地址段地址,cpu可通过可通过4个段寄存器个段寄存器访问存储器中访问存储器中4个不同的段(每段个不同的段(每段64k)。)。CS代码段寄存器,存放代码段寄存器,存放代码段代码段的的段地址段地址 SS堆栈段寄存器,存放堆栈段寄存器,存放堆栈段堆栈段的的段地址段地址 DS数据段寄存器,
15、存放数据段寄存器,存放数据段数据段的的段地址段地址 ES附加段寄存器,存附加段寄存器,存放放附加段附加段的的段地址段地址2010.2.25192.2.3控制寄存器组指令指针寄存器指令指针寄存器IP:保存下一条要执行的指令的保存下一条要执行的指令的偏移地址偏移地址,它与代码段寄存器,它与代码段寄存器CS联用,确定联用,确定下一条下一条指令的物理地址。指令的物理地址。计算机通过计算机通过 CS:IP 寄存器来控制指令序列的执行流程。寄存器来控制指令序列的执行流程。IP寄存器是一个专用寄存器。寄存器是一个专用寄存器。2010.2.2520补充内容1.1.无符号数和有符号数无符号数和有符号数2.2.原
16、码、反吗、和补码原码、反吗、和补码2010.2.2521有符号数的表示方法二进制数分为:二进制数分为:无符号数无符号数有符号数有符号数2010.2.2522有符号数的表示方法二进制数分为:二进制数分为:无符号数无符号数和和有符号数有符号数无符号数无符号数:所有的二进制数位均为数值位。:所有的二进制数位均为数值位。例如:例如:1000 0111 =1000 0111 =135135有符号数有符号数:最高位为符号位,后面的所有位为数值位。:最高位为符号位,后面的所有位为数值位。例如:例如:1000 0111 =1000 0111 =-7-72010.2.2523有符号数的表示方法无符号数无符号数:
17、所有的二进制数位均为数值位。:所有的二进制数位均为数值位。例如:例如:1000 0111 =1000 0111 =135135有符号数有符号数:最高位为符号位,后面的所有位为数值位。:最高位为符号位,后面的所有位为数值位。例如:例如:1000 0111 =1000 0111 =-7-72010.2.2524有符号数的表示方法有符号数:有符号数:+:用用0 0表示(表示(正数正数)-:用用1 1表示(表示(负数负数)用用0 0表示表示“+”+”,用,用1 1表示表示“-”-”。这样的表示方法就是符号数字。这样的表示方法就是符号数字化。化。即用数字来表示正负数的符号。即用数字来表示正负数的符号。2
18、010.2.2525有符号数的表示方法8 8位无符号数范围位无符号数范围:所有的二进制数位均为数值位。:所有的二进制数位均为数值位。0 X 2550 X 255 0000 0000 00000000 到到 1111 1111 111111118 8位有符号数的范围位有符号数的范围:最高位为符号位,后面的所有位为数值位。:最高位为符号位,后面的所有位为数值位。-128 X 127-128 X 127 1000 0000 1000 0000 到到 0111 11110111 11112010.2.2526有符号数的表示方法有符号数的表示方法:有符号数的表示方法:原码原码反码反码补码补码2010.2
19、.2527有符号数的表示方法原码原码 正正数数的的符符号号用用“0”表表示示,负负数数的的符符号号用用“1”表表示示,绝对绝对值的编码规则与无符号数编码规则相同。这样的表示方法称值的编码规则与无符号数编码规则相同。这样的表示方法称为原码表示法。为原码表示法。一个数一个数X的原码记作的原码记作x原 例如:用例如:用8位二进制表示:位二进制表示:19的原码是:的原码是:19原=0001 0011 (最高位是符号位)(最高位是符号位)-19的原码是:的原码是:-19原=1001 00112010.2.2528 0 0 Xn-2Xn-3X1X0 x 0 x原=1 1 Xn-2Xn-3X1X0 x 0
20、1.1.原码原码+0+0原原 =0000=0000 00000000 -0 -0原原 =1000 0000=1000 0000+1+1原原 =0000 0001 -1=0000 0001 -1原原 =1000 0001=1000 0001+127+127原原 =0111 1111=2=0111 1111=28-18-1-1 -127-1 -127原原 =1111=1111 11111111=-(2=-(28-18-1-1)-1)-2n-1 +(2n-1 1)-128 +127字长字长 表示范围表示范围n8有符号数的表示方法2010.2.25292.2.反码反码正数的反码:与原码相同;负数的反码
21、:原码的符号位符号位不变,其它各位求反。例如:用例如:用8位二进制表示:位二进制表示:19的反码是:的反码是:19原=0001 0011,19反=0110 1100-19的的反反码码是是:-19原=1001 0011,-19反=1110 11002010.2.25302.2.反码反码+0+0反反 =0000=0000 00000000 -0 -0反反 =1111=1111 11111111+1+1反反 =0000 0001 -1=0000 0001 -1反反 =1111 1110=1111 1110+127+127反反 =0111 1111 -127=0111 1111 -127反反 =100
22、0 0000=1000 0000-2n-1 +(2n-1 1)-128 +127字长字长 表示范围表示范围n82010.2.25313.3.补码补码正数的补码:与原码相同;负数的补码:原码的符号位不变,其它各位求反加1。例如:用例如:用8位二进制表示:位二进制表示:19的的反反码码是是:19原=0001 0011,19反=0001 0011 19补=0001 0011-19的的反反码码是是:-19原=1001 0011,-19反=1110 1100-19补=1110 11012010.2.25323.3.补码补码-2n-1 +(2n-1 1)-27 +(27 1)字长字长 表示范围表示范围n8
23、+0+0补补 =0000=0000 00000000 -0 -0补补 =2=28 8|-0|=0000|-0|=0000 00000000+1+1补补 =0000 0001 -1=0000 0001 -1补补 =2=28 8|-1|=1111|-1|=1111 11111111+127+127补补 =0111 1111 -127=0111 1111 -127补补 =2=28 8|-127|=1000 0001|-127|=1000 00012010.2.2533有符号数的表示方法一个有符号数XX0 x原=x反=x补X0 x反:x原符号位不变,其它各位求反x补=x反+1练习2010.2.2534
24、3.3.补码补码例:例:73-2=73+(-2)=71 01001011(73)+11111110(-2)101000111(71)在计算机中,加减法是用补码来运算的。在计算机中,加减法是用补码来运算的。补码加法,如果符号位有进位,必须舍弃补码加法,如果符号位有进位,必须舍弃2010.2.25352.2.3控制寄存器组标志标志寄存器(寄存器(FLAG):):状态标志状态标志记录程序运行结果的状态信息,许多指令记录程序运行结果的状态信息,许多指令的执行都将相应地设置它。的执行都将相应地设置它。CF ZF SF PF OF AF 控制标志控制标志可由程序根据需要用指令设置,用于控制可由程序根据需要
25、用指令设置,用于控制处理器执行指令的方式。处理器执行指令的方式。DF IF TF2010.2.25362.2.3控制寄存器组标志标志寄存器(寄存器(FLAG)D15D0 OF DF IF TF SF ZF AF PF CF进进位位标标志志奇奇偶偶标标志志辅辅助助进进位位标标志志符符号号标标志志单单步步中中断断中中断断允允许许方方向向标标志志溢溢出出标标志志1-有进、借位有进、借位0-无进、借位无进、借位1-低低8位有偶数个位有偶数个10-低低8位有奇数个位有奇数个11-低低4位向高位向高4位有进、借位位有进、借位0-低低4位向高位向高4位无进、借位位无进、借位1-结果为结果为00-结果不为结果
26、不为0零零标标志志2010.2.2537进位标志进位标志CF:当运算结果的最高有效位有进位(加法)或借位当运算结果的最高有效位有进位(加法)或借位(减法)时,进位标志置(减法)时,进位标志置1,即,即CF=1;否则否则CF=0。(无符号数)(无符号数)标志标志寄存器(寄存器(FLAG)001110100011101001111100011111001011011010110110+101010101010101001111100011111001 1 0010011000100110+CF=0CF=0CF=1CF=13AH+7CHB6HAAH+7CH(1)26H2010.2.2538PF:奇偶
27、标志位,如果操作结果的低奇偶标志位,如果操作结果的低8位含有偶数个位含有偶数个1,则,则PF=1;否则否则CF=0。标志标志寄存器(寄存器(FLAG)010010000100100001100010011000101010101010101010+001000110100001000110100010001000101001000011001010100100001100101110101011101010101010111011101+PF=1PF=1PF=0PF=048H+62HAAH2344H+5219H755DH2010.2.2539AF:辅助进位标志,如果在加法时辅助进位标志,如果在
28、加法时D3 有进位或者减法时有进位或者减法时D3有借有借位,则位,则AF=1,否则否则AF=0。标志标志寄存器(寄存器(FLAG)010001001 1000000011001100 0010010101010101 1010010+010001001 1100100000100011 1001001011001100 0101101+AF=0AF=0AF=1AF=148H+62HAAH4CH+19H65H2010.2.2540ZF:零标志位,如果运算结果各位都是零,则零标志位,如果运算结果各位都是零,则ZF=1,否则,否则ZF=0。标志标志寄存器(寄存器(FLAG)0100100001001
29、00001100010011000101010101010101010+000110010001100100011001000110010000000000000000-ZF=0ZF=0ZF=1ZF=148H+62HAAH19H-19H00H2010.2.2541SF:符号标志位,它总是和结果的最高位相同。(字节操作时是符号标志位,它总是和结果的最高位相同。(字节操作时是D7,字操作时是,字操作时是D15)标志标志寄存器(寄存器(FLAG)010010000100100001100010011000101010101010101010+SF=1SF=148H+62HAAH00100011010
30、0001000110100010001000101001000011001010100100001100101110101011101010101010111011101+SF=0SF=02344H+5219H755DH2010.2.2542溢出标志溢出标志OF:若算术运算的结果有溢出,则若算术运算的结果有溢出,则OF=1;否则否则 OF0(有符号数)(有符号数)标志标志寄存器(寄存器(FLAG)例如:例如:0011101000111010011111000111110010110110101101103AH+7CHB6H,产生溢出:产生溢出:OF=1+OF=1OF=1101010101010
31、101001111100011111001 1 0010011000100110AAH+7CH(1)26H,没有溢出:没有溢出:OF=0+OF=0OF=02010.2.2543标志标志寄存器(寄存器(FLAG)问题:问题:什么是溢出?什么是溢出?溢出和进位有什么区别?溢出和进位有什么区别?如何判断是否溢出?如何判断是否溢出?2010.2.2544处理器内部以补码表示有符号数。处理器内部以补码表示有符号数。8个二进制位能够表达的整数范围是:个二进制位能够表达的整数范围是:-128+127 16位表达的范围是:位表达的范围是:-32768 +32767 标志标志寄存器(寄存器(FLAG)什么是溢出
32、?什么是溢出?什么是溢出?什么是溢出?如果运算结果超出了可表达的范围,就是产生了溢出。如果运算结果超出了可表达的范围,就是产生了溢出。有溢出,有溢出,说明有符号数的运算说明有符号数的运算结果不正确结果不正确。2010.2.2545例:例:73+72=145 12773+72=145 127 x x补补 (+73)(+73)+y+y补补 (+72)(+72)1 1 0 0 1 0 0 0 1 0 0 1 0 0 0 1两个正数相加结果变成了负数?溢出:运算结果,超出了溢出:运算结果,超出了8位有符号数所能表示的范围。位有符号数所能表示的范围。补码运算发生溢出情况:补码运算发生溢出情况:1.同号数
33、相加,可能溢出;同号数相加,可能溢出;2.异号数相减,可能溢出。异号数相减,可能溢出。2010.2.2546判断运算结果是否溢出有一个简单的规则:最高判断运算结果是否溢出有一个简单的规则:最高位位 溢出的判断溢出的判断标志标志寄存器(寄存器(FLAG)1+10 0+01 1-00 0-112010.2.2547溢出标志溢出标志OF和进位标志和进位标志CF是两个意义不同的标志。是两个意义不同的标志。进位标志表示进位标志表示无符号数无符号数运算结果是否超出范围,运算运算结果是否超出范围,运算结果仍然结果仍然正确正确正确正确;溢出标志表示溢出标志表示有符号数有符号数运算结果是否超出范围,运算运算结果
34、是否超出范围,运算结果已经结果已经不正确不正确不正确不正确。标志标志寄存器(寄存器(FLAG)溢出和进位有什么区别?溢出和进位有什么区别?2010.2.2548例例1:3AH+7CHB6H溢出和进位溢出和进位对比对比标志标志寄存器(寄存器(FLAG)00111010001110103AH3AH01111100011111007CH7CH1011011010110110B6HB6H+B6H=128B6H=128 CF=0CF=0无符号数运算:无符号数运算:58124182,范围内,范围内0255,无进,无进位位有符号数运算:有符号数运算:58124182,范围外,范围外-128127,有,有溢出
35、溢出0 0011101001110103AH3AH0 0111110011111007CH7CH1 101101100110110B6HB6H+B6HB6H补补=-74=-74OF=1OF=1有符号有符号数最高数最高位是符位是符号位号位2010.2.2549溢出和进位溢出和进位对比对比标志标志寄存器(寄存器(FLAG)例例2:AAH+7CH(1)26H1010101010101010AAHAAH01111100011111007CH7CH1 1001001100010011026H26H+CF=1CF=1,(1 1)26H=29426H=294无符号数运算:无符号数运算:170124294,范
36、围外,范围外0255,有,有进位进位有符号数运算:有符号数运算:8612428,范围内,范围内-128127,无溢出无溢出OF=0OF=01 101010100101010AAHAAH0 0111110011111007CH7CH1 1 0 00100110010011026H26H+训练训练2010.2.2550处理器对两个操作数进行运算时,按照无符号数求得结处理器对两个操作数进行运算时,按照无符号数求得结果,并相应设置进位标志果,并相应设置进位标志CF;同时,根据是否超出有符号数同时,根据是否超出有符号数的范围设置溢出标志的范围设置溢出标志OF。如何运用溢出和进位如何运用溢出和进位标志标志
37、寄存器(寄存器(FLAG)应该利用哪个标志,则由程序员来决定。应该利用哪个标志,则由程序员来决定。无符号数无符号数运算,影响运算,影响进位;进位;有符号数有符号数运算,则影响运算,则影响溢出位。溢出位。2010.2.2551可用指令设置。字符串操作时,受它的控制。可用指令设置。字符串操作时,受它的控制。当当DF=0时,执行串操作指令,变址寄存器自动递增;时,执行串操作指令,变址寄存器自动递增;当当DF=1时,则变址寄存器地址自动递减。时,则变址寄存器地址自动递减。即该位可控制变址寄存器的地址朝增大的方向或减小的方向改即该位可控制变址寄存器的地址朝增大的方向或减小的方向改变。变。DF:方向标志位
38、方向标志位标志标志寄存器(寄存器(FLAG)2010.2.2552可用指令设置可用指令设置当当IF=1时,时,CPU可响应可屏蔽中断请求;可响应可屏蔽中断请求;当当IF=0时,时,CPU不响应可屏蔽中断请求。不响应可屏蔽中断请求。IF:中断允许标志中断允许标志标志标志寄存器(寄存器(FLAG)2010.2.2553若若TF=1,则,则CPU处于单步执行指令工作方式。每执行一处于单步执行指令工作方式。每执行一条指令就会自动产生一次类型条指令就会自动产生一次类型1的内部中断。的内部中断。在调试程序的过程中,每执行一条指令,就利用这种中断,在调试程序的过程中,每执行一条指令,就利用这种中断,来显示所
39、有寄存器的当前值和将要执行的下一条指令。来显示所有寄存器的当前值和将要执行的下一条指令。一般情况下,一般情况下,TF=0。只有在调试程序时,可能会用到单步执行时,才设置只有在调试程序时,可能会用到单步执行时,才设置TF=1。TF:陷阱标志位陷阱标志位标志标志寄存器(寄存器(FLAG)2010.2.2554计数制:计数制:指用一组固定的数字符号和统一的规则来表示数的方法。基数:基数:各种进制中数字符号的个数。权:权:在位置记数法位置记数法中,对每一个数位赋以不同的位值。2.38086的存储器组织2010.2.2555各种数制2.38086的存储器组织十进制十进制二进制二进制十六进制十六进制数码数
40、码090,109,AF基基(或模或模)10216进位原则进位原则逢十进一逢十进一 逢二进一逢二进一逢十六进一逢十六进一位权值位权值10i2i16i数制后缀符号数制后缀符号数制后缀符号数制后缀符号D 或者省略或者省略 BH2010.2.2556微计算机的硬件结构微计算机的硬件结构(冯(冯.诺依曼结构)诺依曼结构)从功能或逻辑的角度,微型计算机的硬件由运算器、控制器、从功能或逻辑的角度,微型计算机的硬件由运算器、控制器、存储器、输入设备、输出设备五大部分组成。存储器、输入设备、输出设备五大部分组成。运算器控制器MPU存储器存储器输出设备I/O接口输入设备A.BUSD.BUSC.BUS2.38086
41、的存储器组织2010.2.25572.38086的存储器组织2.3.1存储器地址空间和数据存储格式*B*B00000H00000H00001H00001H00002H00002H00003H00003HFFFFDHFFFFDH.FFFFEHFFFFEHFFFFFHFFFFFH十六进制地址十六进制地址存储器存储器存储器的地址存储器的地址 8086的存储器是以的存储器是以字节(字节(8位)为单位)为单位组织的。位组织的。8086cpu具有具有20条条地址总线,可寻址地址总线,可寻址的存储器地址空间的存储器地址空间容量为容量为220B,地址,地址(1MB)。)。2020条地址条地址条地址条地址总线,
42、总线,总线,总线,1616条数据条数据条数据条数据总线总线总线总线2010.2.25582.38086的存储器组织2.3.1存储器地址空间和数据存储格式*B*B00000H00000H00001H00001H00002H00002H00003H00003HFFFFDHFFFFDH.FFFFEHFFFFEHFFFFFHFFFFFH十六进制地址十六进制地址存储器存储器存储器的地址存储器的地址 每个存储单元都有一个唯一每个存储单元都有一个唯一的地址编号的地址编号存储器地址其存储器地址其范围是范围是 0 220-1,(用十六进制表示为用十六进制表示为 00000H FFFFFH ),每个存储单元存放一
43、个字节每个存储单元存放一个字节的内容的内容(*B,如如1000 1110B)2010.2.25592.38086的存储器组织2.3.1存储器地址空间和数据存储格式两个连续的字节,两个连续的字节,为一个字为一个字:低地址对应低字节,高地址对应:低地址对应低字节,高地址对应高字节(小端方式)。高字节(小端方式)。字的地址指低字节的地址字的地址指低字节的地址。(00004H)=1122H(00001H)=4455H(00003H)=2233H23H00000H00000H55H55H00001H00001H44H44H00002H00002H33H33H00003H00003H22H22H00004
44、H00004H00010001B00010001B00005H00005H2010.2.25602.38086的存储器组织2.3.1存储器地址空间和数据存储格式字的地址为偶地址,称字的存储是对准的,访问时只需一个总字的地址为偶地址,称字的存储是对准的,访问时只需一个总线周期。线周期。字的地址为奇地址,称字的存储是未对准的,访问时要两个总字的地址为奇地址,称字的存储是未对准的,访问时要两个总线周期线周期(CPU自动完成自动完成)。2010.2.25612.38086的存储器组织2.3.2存储器分段管理和物理地址的形成8086CPU有有20条条地址线,地址线,物理地址范围从物理地址范围从00000
45、HFFFFFH。最大可寻址空间最大可寻址空间为为2201MB,*B*B00000H00000H00001H00001H00002H00002H00003H00003HFFFFDHFFFFDH.FFFFEHFFFFEHFFFFFHFFFFFH十六进制地址十六进制地址存储器存储器1M1M个个内存单内存单元元2010.2.25622.38086的存储器组织2.3.2存储器分段管理和物理地址的形成提供偏移地址或偏移地提供偏移地址或偏移地址的一部分址的一部分的寄存器的寄存器的寄存器的寄存器BX、IP、SP、BP、SI和和DI及及ALU都是都是 16位,位,0000HFFFFH,其寻址范围是其寻址范围是6
46、4KB。*B*B0000H0000H0001H0001H0002H0002H0003H0003HFFFDHFFFDH.FFFEHFFFEHFFFFHFFFFH十六进制地址十六进制地址 存储器存储器64K64K个个内存单内存单元元8086CPU采用采用地址分地址分段方法段方法,将寻址范围扩,将寻址范围扩大到大到1MB。2010.2.25632.38086的存储器组织2.3.2存储器分段管理和物理地址的形成8086CPU将将1MB空间分成许多逻辑段(空间分成许多逻辑段(Segment),每个段),每个段最大限制最大限制为为64KB,段地址的低段地址的低4位为位为0000B,即,即*0H。00000
47、0000H0H00001H00001H00002H00002H00003H00003H0FFFDH0FFFDH0FFFEH0FFFEH0FFFFH0FFFFH一一个个逻逻辑辑段段,共共64K64K个个单单元元000100010H0H00011H00011H00012H00012H00013H00013H1000DH1000DH1000EH1000EH1000FH1000FH下下一一个个逻逻辑辑段段,共共64K64K个个单单元元2010.2.25642.38086的存储器组织000000000 0HH000100010 0HH000200020 0HH0FFFFH0FFFFH存储器存储器1000
48、FH1000FH1001FH1001FH段段0 0段段1 1段段2 22010.2.25652.38086的存储器组织2.3.2存储器分段管理和物理地址的形成8086对逻辑段的要求是:对逻辑段的要求是:段地址低段地址低4位均为位均为0,每段最大不超过,每段最大不超过64KB。每个段不要求必须是每个段不要求必须是64KB,段与段可以重叠。段与段可以重叠。1MB空间空间最多最多最多最多能分成多少个段?能分成多少个段?每隔每隔64K个存储单元开始一个段,所以个存储单元开始一个段,所以1MB最少有:最少有:22.21616 个段个段 每隔每隔16个存储单元就可以开始一个段,所以个存储单元就可以开始一个
49、段,所以1MB最多有:最多有:22.1621664K 个段个段1MB空间空间最少最少最少最少能分成多少个段?能分成多少个段?2010.2.2566基本概念物理地址物理地址起始地址起始地址段地址段地址偏移地址偏移地址逻辑地址逻辑地址2.3.2存储器分段管理和物理地址的形成2.38086的存储器组织2010.2.25672.3.2存储器分段管理和物理地址的形成2.38086的存储器组织00000H00000H00001H00001H00002H00002H00003H00003HFFFFDHFFFFDH.FFFFEHFFFFEHFFFFFHFFFFFH十六进制地址十六进制地址存储器存储器物理地址物
50、理地址物理地址物理地址存储器有存储器有1M1M个内存单元,每个内个内存单元,每个内存单元都有自己的地址编码,这存单元都有自己的地址编码,这个编码在所有的内存单元中是个编码在所有的内存单元中是唯唯唯唯一一一一的,这些地址编码就是存储单的,这些地址编码就是存储单元的物理地址。其范围是元的物理地址。其范围是0000000000HHFFFFFFFFFFH H。物理地址:存储单元的实际地址物理地址:存储单元的实际地址物理地址:存储单元的实际地址物理地址:存储单元的实际地址编码编码编码编码。2010.2.25682.3.2存储器分段管理和物理地址的形成2.38086的存储器组织0000000000HH00