版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第2 2章章第第2章:微处理器指令系统章:微处理器指令系统-教学重点教学重点8088/8086的内部结构的内部结构BIUEU8088/8086的寄存器结构的寄存器结构通用寄存器通用寄存器段寄存器段寄存器标志寄存器标志寄存器指令指针寄存器指令指针寄存器CUP引脚、工作模式、时序引脚、工作模式、时序第第2章:章:2.18086微处理器微处理器从应用角度(不是从内部工作原理)展开从应用角度(不是从内部工作原理)展开典型典型8位微处理器的基本结构位微处理器的基本结构8088/8086的功能结构的功能结构8088/8086的寄存器结构的寄存器结构为学习指令系统打好基础为学习指令系统打好基础例如:例如:
2、关心用户关心用户“可编程可编程”寄存器,寄存器,不关心无法操纵的不关心无法操纵的“透明透明”寄存器寄存器2.1.18086微处理器内部结构微处理器内部结构内部暂存器内部暂存器IPESSSDSCS输入输入/输出输出控制电路控制电路外部总线外部总线执行部分执行部分控制电路控制电路123456ALU标志寄存器标志寄存器AHALBHBLCHCLDHDLSPBPSIDI通用寄存器通用寄存器地址加法器地址加法器指令队列缓冲器指令队列缓冲器执行部件(执行部件(EU)总线接口部件(总线接口部件(BIU)16位位20位位16位位8位位2.1.18086微处理器内部结构微处理器内部结构1.执行部件(执行部件(EU
3、)负责指令的执行负责指令的执行2.总线接口部件(总线接口部件(BIU)负责完成负责完成CPU与存储器或与存储器或I/O端口之间的数据传端口之间的数据传送送3.BIU和和EU的协调原则的协调原则流水线技术流水线技术第第2章章:2.1.28088/8086的功能结构的功能结构8086的的内部结构内部结构从功能上分成两个单元从功能上分成两个单元1.总线接口单元总线接口单元BIU管理管理8086与系统总线的接口与系统总线的接口负责负责CPU对存储器和外设进行访问对存储器和外设进行访问2.执行单元执行单元EU负责指令的译码、执行和数据的运算负责指令的译码、执行和数据的运算两个单元相互独立,分别完成各自操
4、作,两个单元相互独立,分别完成各自操作,还可以还可以并行执行并行执行,实现指令预取(,实现指令预取(指令读取指令读取和执行的流水线操作和执行的流水线操作)2.1.18086微处理器内部结构微处理器内部结构指令的执行指令的执行内部数据总线内部数据总线控制总线控制总线数据总线数据总线地址总线地址总线暂存器暂存器累加器累加器ALU标志寄存器标志寄存器指指令令寄寄存存指指令令译译码码时序时序和和控制控制逻辑逻辑通用通用寄存器组寄存器组地址地址寄存器组寄存器组地址地址总线总线控制控制数据数据总线总线控制控制第第2章章:2.1.18086微处理器内部结构微处理器内部结构1.算术逻辑单元(运算器)算术逻辑单
5、元(运算器)2.寄存器组寄存器组3.指令处理单元(控制器)指令处理单元(控制器)第第2章:章:2.1.28086的寄存器结构的寄存器结构8086的寄存器组有的寄存器组有8个通用寄存器个通用寄存器4个段寄存器个段寄存器1个标志寄存器个标志寄存器1个指令指针寄存器个指令指针寄存器它们均为它们均为1616位位! !图示图示汇编语言程序员看到的处理器,就是寄存器汇编语言程序员看到的处理器,就是寄存器所以,一定要熟悉这些寄存器的名称和作用所以,一定要熟悉这些寄存器的名称和作用第第2章:章:2.1.21.通用寄存器通用寄存器8088有有8个通用的个通用的16位寄存器位寄存器(1)数据寄存器)数据寄存器:A
6、XBXCXDX(2)变址寄存器)变址寄存器:SIDI(3)指针寄存器)指针寄存器:BPSP4个数据寄存器还可以分成高个数据寄存器还可以分成高8位和低位和低8位两位两个独立的寄存器,这样又形成个独立的寄存器,这样又形成8个通用的个通用的8位寄存器位寄存器AX:AHALBX:BHBLCX:CHCLDX:DHDL第第2章:章:2.1.21.(1)数据寄存器)数据寄存器AX称为累加器(称为累加器(Accumulator)使用频度最高。用于算术、逻辑运算以及与外设传送信使用频度最高。用于算术、逻辑运算以及与外设传送信息等息等BX称为基址寄存器(称为基址寄存器(BaseaddressRegister)常用
7、做存放存储器地址常用做存放存储器地址CX称为计数器(称为计数器(Counter)作为循环和串操作等指令中的隐含计数器作为循环和串操作等指令中的隐含计数器DX称为数据寄存器(称为数据寄存器(Dataregister)常用来存放双字长数据的高常用来存放双字长数据的高16位,或存放外设端口地址位,或存放外设端口地址第第2章:章:2.1.21.(1)数据寄存器)数据寄存器AX称为称为累加器累加器(Accumulator)使用频度最高。用于算术、逻辑运算以及与外设传送信使用频度最高。用于算术、逻辑运算以及与外设传送信息等息等BX称为称为基址寄存器基址寄存器(BaseaddressRegister)常用做
8、存放存储器地址常用做存放存储器地址CX称为称为计数器计数器(Counter)作为循环和串操作等指令中的隐含计数器作为循环和串操作等指令中的隐含计数器DX称为称为数据寄存器数据寄存器(Dataregister)常用来存放双字长数据的高常用来存放双字长数据的高16位,或存放外设端口地址位,或存放外设端口地址16位寄存器分为二个位寄存器分为二个8位寄存器位寄存器7654321076543210151413121110987654321016位寄存器分为二个位寄存器分为二个8位寄存器位寄存器765432107654321015141312111098765432100 10 0111000100000
9、寄存器寄存器寄存器中数据寄存器中数据所表示的值所表示的值AX010011100010000020000(4E20H)AH0100111078(4EH)AL0010000032(20H)字在寄存器中的存储字在寄存器中的存储765432107654321015141312111098765432100 10 0111000100000(4E20H)(4EH)(20H)出于对兼容性的考虑,出于对兼容性的考虑,8086可以对两种尺寸的数据进行处理可以对两种尺寸的数据进行处理字节(字节(Byte):):8位(位(bit););字(字(Word):):16位(位(bit);由两个字节组成,亦可称为这个字的
10、);由两个字节组成,亦可称为这个字的高位字节和低位字节。高位字节和低位字节。第第2章:章:2.1.21.(2)变址寄存器)变址寄存器16位变址寄存器位变址寄存器SI和和DI常用于存储器变址寻址方式时提供地址常用于存储器变址寻址方式时提供地址SI是源地址寄存器(是源地址寄存器(SourceIndex)DI是目的地址寄存器(是目的地址寄存器(DestinationIndex)在串操作类指令中,在串操作类指令中,SI、DI还有较特殊的还有较特殊的用法用法现在不必完全理解,以后会详细展开现在不必完全理解,以后会详细展开字在寄存器中的存储字在寄存器中的存储765432107654321015141312
11、111098765432100 10 0111000100000(4E20H)(4EH)(20H)字节(字节(Byte):):8位(位(bit););字(字(Word):):16位(位(bit);由两个字节组成,亦可称为这个字的);由两个字节组成,亦可称为这个字的高位字节和低位字节。高位字节和低位字节。几条汇编指令几条汇编指令通过汇编指令控制通过汇编指令控制CPU工作工作几条汇编指令几条汇编指令通过汇编指令控制通过汇编指令控制CPU工作工作几条汇编指令几条汇编指令通过汇编指令控制通过汇编指令控制CPU工作工作几条汇编指令几条汇编指令通过汇编指令控制通过汇编指令控制CPU工作工作第第2章:章:2
12、.1.21.(3)指针寄存器)指针寄存器指针寄存器用于寻址内存指针寄存器用于寻址内存堆栈堆栈内的数据内的数据SPSP为堆栈指针寄存器(为堆栈指针寄存器(StackPointer), ,指示指示堆栈段栈顶的位置(偏移地址)堆栈段栈顶的位置(偏移地址)BPBP为基址指针寄存器(为基址指针寄存器(BasePointer),表示),表示数据在堆栈段中的基地址数据在堆栈段中的基地址SPSP和和BPBP寄存器与寄存器与SSSS段寄存器联合使用以确段寄存器联合使用以确定堆栈段中的存储单元地址定堆栈段中的存储单元地址堆栈堆栈(Stack)是主存中一个特殊的)是主存中一个特殊的区域,采用区域,采用“先进后出先进
13、后出”或或“后进先出后进先出”存取操作方式、而不是随机存取方式。存取操作方式、而不是随机存取方式。用用8088/8086形成的微机系统中,堆形成的微机系统中,堆栈区域被称为堆栈段栈区域被称为堆栈段第第2章:章:2.1.21.(3)指令指针寄存器)指令指针寄存器IP(InstructionPointer)为指令指针寄存)为指令指针寄存器,指示主存储器指令的位置器,指示主存储器指令的位置随着指令的执行,随着指令的执行,IP将自动修改以指示下将自动修改以指示下一条指令所在的存储器位置一条指令所在的存储器位置IP寄存器是一个寄存器是一个专用专用寄存器寄存器IPIP寄存器与寄存器与CSCS段寄存器联合使
14、用以确定下段寄存器联合使用以确定下一条指令的存储单元地址一条指令的存储单元地址第第2章:章:3.标志寄存器标志寄存器标志标志(Flag)用于反映指令执行结果)用于反映指令执行结果或控制指令执行形式或控制指令执行形式8088处理器的各种标志形成了一个处理器的各种标志形成了一个16位的标志寄存器位的标志寄存器FLAGS(程序状态字(程序状态字PSW寄存器寄存器)程序设计需要利用标志的状态程序设计需要利用标志的状态第第2章:标志寄存器章:标志寄存器-分类分类状态标志状态标志用来记录程序运行结果的状态用来记录程序运行结果的状态信息,许多指令的执行都将相应地设置它信息,许多指令的执行都将相应地设置它CF
15、ZFSFPFOFAF控制标志控制标志可由程序根据需要用指令设置,可由程序根据需要用指令设置,用于控制处理器执行指令的方式用于控制处理器执行指令的方式DFIFTFOF111512DF10IF9TF8SF7ZF65AF43PF21CF0第第2章:标志寄存器符号表示章:标志寄存器符号表示标志名标志名标志为标志为1标志为标志为0OF溢出溢出OV(是是)NV(否否)DF方向方向DN(减量减量)UP(增量增量)IF中断中断EI(允许允许)DI(关闭关闭)SF符号符号NG(为负为负)PL(为正为正)ZF零零ZR(是是)NZ(否否)AF辅助进位辅助进位AC(是是)NA(否否)PF奇偶奇偶PE(偶偶)PO(奇奇
16、)CF进位进位CY(是是)NC(否否)第第2章:进位标志章:进位标志CF(CarryFlag)当运算结果的最高有效位有进位(加法)或借当运算结果的最高有效位有进位(加法)或借位(减法)时,进位标志置位(减法)时,进位标志置1,即,即CF1;否则否则CF03AH+7CHB6H,没有进位:,没有进位:CF=0AAH+7CH(1)26H,有进位:,有进位:CF=1第第2章:进位标志章:进位标志CF(CarryFlag)第第2章:进位标志章:进位标志CF(CarryFlag)第第2章:零标志章:零标志ZF(ZeroFlag)若运算结果为若运算结果为0,则,则ZF1;否则否则ZF03AH7CHB6H,结
17、果不是零:,结果不是零:ZF084H7CH(1)00H,结果是零:,结果是零:ZF1注意:注意:ZF为为1表示的结果是表示的结果是0第第2章:零标志章:零标志ZF(ZeroFlag)第第2章:零标志章:零标志ZF(ZeroFlag)第第2章:零标志章:零标志ZF(ZeroFlag)第第2章:符号标志章:符号标志SF(SignFlag)运算结果最高位为运算结果最高位为1,则,则SF1;否则否则SF03AH7CHB6H,最高位,最高位D71:SF184H7CH(1)00H,最高位,最高位D70:SF0有符号数据用最高有效位表示数据的符号有符号数据用最高有效位表示数据的符号所以,最高有效位就是符号标
18、志的状态所以,最高有效位就是符号标志的状态第第2章:符号标志章:符号标志SF(SignFlag)第第2章:符号标志章:符号标志SF(SignFlag)第第2章:奇偶标志章:奇偶标志PF(ParityFlag)当运算结果最低字节中当运算结果最低字节中“1”的个数为的个数为零或偶数时,零或偶数时,PF1;否则;否则PF03AH7CHB6H10110110B结果中有结果中有5个个“1”,是奇数:是奇数:PF0PF标志仅反映最低标志仅反映最低8位中位中“1”的个数是的个数是偶或奇,即使是进行偶或奇,即使是进行16位字操作位字操作第第2章:奇偶标志章:奇偶标志PF(ParityFlag)第第2章:溢出标
19、志章:溢出标志OF(OverflowFlag)若算术运算的结果有溢出,则若算术运算的结果有溢出,则OF1;否则否则OF03AH+7CHB6H,产生溢出:,产生溢出:OF1AAH+7CH(1)26H,没有溢出:,没有溢出:OF0第第2章:什么是溢出章:什么是溢出处理器内部以补码表示有符号数处理器内部以补码表示有符号数8位表达的整数范围是:位表达的整数范围是:12712816位表达的范围是:位表达的范围是:3276732768如果运算结果超出这个范围,就产生了溢出如果运算结果超出这个范围,就产生了溢出有溢出,说明有符号数的运算结果不正确有溢出,说明有符号数的运算结果不正确3AH7CHB6H,就是,
20、就是58124182,已经超出已经超出128127范围,产生溢出,故范围,产生溢出,故OF1;补码补码B6H表达真值是表达真值是74,显然运算结果也不正确,显然运算结果也不正确B6H10110110B,最高位为,最高位为1,作为有符号数是负数作为有符号数是负数对对B6H求反加求反加1等于:等于:01001001B101001010B4AH74所以,所以,B6H表达有符号数的真值为表达有符号数的真值为74第第2章:溢出和进位的区别章:溢出和进位的区别溢出标志溢出标志OF和进位标志和进位标志CF是两个意义是两个意义不同的标志不同的标志进位标志表示无符号数运算结果是否进位标志表示无符号数运算结果是否
21、超出范围,运算结果仍然正确超出范围,运算结果仍然正确溢出标志表示有符号数运算结果是否溢出标志表示有符号数运算结果是否超出范围,运算结果已经不正确超出范围,运算结果已经不正确第第2章:溢出和进位的对比章:溢出和进位的对比例例1:3AH7CHB6H无符号数运算:无符号数运算: 58124182范围内,无进位范围内,无进位有符号数运算:有符号数运算: 58124182范围外,有溢出范围外,有溢出例例2:AAH7CH(1)26H无符号数运算:无符号数运算: 170124294范围外,有进位范围外,有进位有符号数运算:有符号数运算: 8612428范围内,无溢出范围内,无溢出第第2章:溢出和进位的应用场
22、合章:溢出和进位的应用场合处理器对两个操作数进行运算时,按照无处理器对两个操作数进行运算时,按照无符号数求得结果,并相应设置进位标志符号数求得结果,并相应设置进位标志CF;同时,根据是否超出有符号数的范围设置同时,根据是否超出有符号数的范围设置溢出标志溢出标志OF应该利用哪个标志,则由程序员来决定。应该利用哪个标志,则由程序员来决定。也就是说,如果将参加运算的操作数认为也就是说,如果将参加运算的操作数认为是无符号数,就应该关心进位;认为是有是无符号数,就应该关心进位;认为是有符号数,则要注意是否溢出符号数,则要注意是否溢出第第2章:溢出的判断章:溢出的判断判断运算结果是否溢出有一个简单的规则:
23、判断运算结果是否溢出有一个简单的规则:只有当两个相同符号数相加(包括不同符号数相只有当两个相同符号数相加(包括不同符号数相减),而运算结果的符号与原数据符号相反时,减),而运算结果的符号与原数据符号相反时,产生溢出;因为,此时的运算结果显然不正确产生溢出;因为,此时的运算结果显然不正确其他情况下,则不会产生溢出其他情况下,则不会产生溢出例例1:3AH7CHB6H溢出溢出例例2:AAH7CH无溢出无溢出例例3:3AH7CH无溢出无溢出例例4:AAH7CH2DH溢出溢出第第2章:溢出的判断章:溢出的判断第第2章:溢出的判断章:溢出的判断第第2章:溢出的判断章:溢出的判断第第2章:溢出的判断章:溢出
24、的判断第第2章:辅助进位标志章:辅助进位标志AF(AuxiliaryCarryFlag)3AH7CHB6H,D3有进位:有进位:AF1运算时运算时D D3 3位(低半字节)有进位或位(低半字节)有进位或借位时,借位时,AFAF1 1;否则;否则AFAF0 0这个标志主要由处理器内部使用,这个标志主要由处理器内部使用,用于十进制算术运算调整指令中,用于十进制算术运算调整指令中,用户一般不必关心用户一般不必关心第第2章:方向标志章:方向标志DF(DirectionFlag)用于串操作指令中,控制地址的变化方向:用于串操作指令中,控制地址的变化方向:设置设置DF0,存储器地址自动增加;,存储器地址自
25、动增加;设置设置DF1,存储器地址自动减少,存储器地址自动减少CLDCLD指令复位方向标志:指令复位方向标志:DFDF0 0STDSTD指令置位方向标志:指令置位方向标志:DFDF1 1第第2章:中断允许标志章:中断允许标志IF(Interrupt-enableFlag)控制可屏蔽中断是否可以被处理器响应:控制可屏蔽中断是否可以被处理器响应:设置设置IF1,则允许中断;,则允许中断;设置设置IF0,则禁止中断,则禁止中断CLICLI指令复位中断标志:指令复位中断标志:IFIF0 0STISTI指令置位中断标志:指令置位中断标志:IFIF1 1第第2章:陷阱标志章:陷阱标志TF(TrapFlag
26、)用于控制处理器进入单步操作方式:用于控制处理器进入单步操作方式:设置设置TF0,处理器正常工作;,处理器正常工作;设置设置TF1,处理器,处理器单步执行指令单步执行指令单步执行指令单步执行指令处理器在处理器在每条指令执行结每条指令执行结束束时,便产生一个编号为时,便产生一个编号为1 1的内部中断的内部中断这种内部中断称为这种内部中断称为单步中断单步中断所以所以TFTF也称为也称为单步标志单步标志n利用单步中断可对程序进行逐条指令的调试利用单步中断可对程序进行逐条指令的调试n这种逐条指令调试程序的方法就是这种逐条指令调试程序的方法就是单步调试单步调试第第2章:章:3.段寄存器段寄存器8088有
27、有4个个16位段寄存器位段寄存器CS(代码段)指明(代码段)指明代码段代码段的起始地址的起始地址SS(堆栈段)指明(堆栈段)指明堆栈段堆栈段的起始地址的起始地址DS(数据段)指明(数据段)指明数据段数据段的起始地址的起始地址ES(附加段)指明(附加段)指明附加段附加段的起始地址的起始地址每个段寄存器用来确定一个逻辑段的起每个段寄存器用来确定一个逻辑段的起始地址,每种逻辑段均有各自的用途始地址,每种逻辑段均有各自的用途第第2章:代码段寄存器章:代码段寄存器CS(CodeSegment)代码段用来存放程序的指令序列代码段用来存放程序的指令序列代码段寄存器代码段寄存器CS存放代码段的段地址存放代码段
28、的段地址指令指针寄存器指令指针寄存器IP指示下条指令的偏移地址指示下条指令的偏移地址处理器利用处理器利用CS:IP取得下一条要执行的指令取得下一条要执行的指令第第2章:堆栈段寄存器章:堆栈段寄存器SS(StackSegment)堆栈段确定堆栈所在的主存区域堆栈段确定堆栈所在的主存区域堆栈段寄存器堆栈段寄存器SS存放堆栈段的段地址存放堆栈段的段地址堆栈指针寄存器堆栈指针寄存器SP指示堆栈栈顶的偏移地址指示堆栈栈顶的偏移地址处理器利用处理器利用SS:SP操作堆栈顶的数据操作堆栈顶的数据第第2章:数据段寄存器章:数据段寄存器DS(DataSegment)数据段存放运行程序所用的数据数据段存放运行程序所用的数据数据段寄存器数据段寄存器DS存放数据段的段地址存放数据段的段地址各种主存寻址方式(有效地址各种主存寻址方式(有效地址EA)得到存储器)得到存储器中操作数的偏移地址中操作数的偏移地址处理器利用处理器利用DS:EA存取数据段中的数据存取数据段中的数据第第2章:附加段寄存器章:附加段寄存器ES(ExtraSegment)附加段是附加的数据段,也保存数据:附加段是附加的数据段,也保存数据:附加段寄存器附加段寄存器ES存放附加段的段地址存放附加段的段地址各种主存寻址方式(有效地址各种主存寻址方式(有效地址EA)得到存储器)得到存储器中操作数的偏移地址中操作数的偏移地址处
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2016年福建漳州中考满分作文《青春的颜色》2
- 购房合同信誉承诺函
- 学校后勤清洁服务协议
- 广场物业管理责任分配合同
- 石材采购协议样本
- 彩泥玩具销售合同
- 车辆借用合同协议样本
- 转让协议是否属于合同类型的辩论
- 石材购销合同条款示例
- 摄影作品代理销售合同
- 头痛的中医护理查房课件
- 校园防冲撞应急处突预案
- 学生体质健康管理制度
- 系统性红斑狼疮诊疗规范2023版
- JGJT341-2014 泡沫混凝土应用技术规程
- Unit+7+Grammar 牛津译林版英语九年级上册
- 华为财务管理(6版)-华为经营管理丛书
- 儿童危重症的早期识别
- 市政道路下穿隧道工程施工组织设计
- 医院管理学考试复习题及答案
- 2023年四川省绵阳市中考英语试卷真题(含答案)
评论
0/150
提交评论