《位微处理器8086及其系统结构.ppt》由会员分享,可在线阅读,更多相关《位微处理器8086及其系统结构.ppt(89页珍藏版)》请在金锄头文库上搜索。
1、 第第2 2章章 1616位微处理器位微处理器80868086第第2 2章章 1616位微处理器位微处理器80868086教学重点n8086的内部结构的内部结构n8086对存储器分段管理的基本概念对存储器分段管理的基本概念n寄存器的结构以及存储器组织寄存器的结构以及存储器组织n逻辑地址到物理地址的变换逻辑地址到物理地址的变换n 8086的两种工作模式及其配置的两种工作模式及其配置第 2 章2.1 8086微处理器微微处处理理器器是是微微机机的的硬硬件件核核心心,主主要要包包含含指指令令执行的运算和控制部件,还有多种寄存器执行的运算和控制部件,还有多种寄存器对对程程序序员员来来说说,微微处处理理
2、器器抽抽象象为为以以名名称称存存取取的寄存器的寄存器8086内内部部结结构构有有两两个个功功能能模模块块,完完成成一一条条指指令的取指和执行功能令的取指和执行功能v 总线接口单元总线接口单元BIU:负责读取指令和操作数:负责读取指令和操作数v 执行单元执行单元EU :负责指令译码和执行:负责指令译码和执行8086的内部结构内部暂存器内部暂存器IPESSSDSCS输入输入/输出输出控制电路控制电路外外部部总总线线执行部分执行部分控制电路控制电路123456ALU标志寄存器标志寄存器AHALBHBLCHCLDHDLSPBPSIDI通用寄存器通用寄存器地址加法器地址加法器指令队列缓冲器指令队列缓冲器
3、执行部件执行部件(EU)总线接口部件总线接口部件(BIU)16位位20位位16位位8位位执行执行第 2 章v总线接口单元总线接口单元BIU:主主要要负负责责物物理理地地址址的的形形成成、预预取取指指令令、指指令令队队列列排排队队、读读/写写操作数和总线控制。操作数和总线控制。v执行单元执行单元EU:主要负责指令译码和执行主要负责指令译码和执行8086的寄存器组第 2 章8086的通用寄存器8086的的16位通用寄存器是:位通用寄存器是:AXBXCXDXSIDIBPSP其其中中前前4个个数数据据寄寄存存器器都都还还可可以以分分成成高高8位位和和低低8位两个独立的寄存器位两个独立的寄存器8086的
4、的8位通用寄存器是:位通用寄存器是:AHBHCHDHALBLCLDL对对其其中中某某8位位的的操操作作,并并不不影影响响另另外外对对应应8位位的数据的数据第 2 章数据寄存器数数据据寄寄存存器器用用来来存存放放计计算算的的结结果果和和操操作作数数,也可以存放地址也可以存放地址每个寄存器又有它们各自的专用目的每个寄存器又有它们各自的专用目的nAX累累加加器器,使使用用频频度度最最高高,用用于于算算术、逻辑运算以及与外设传送信息等;术、逻辑运算以及与外设传送信息等;nBX基基址址寄寄存存器器,常常用用做做存存放放存存储储器器地址;地址;nCX计计数数器器,作作为为循循环环和和串串操操作作等等指指令
5、中的隐含计数器;令中的隐含计数器;nDX数数据据寄寄存存器器,常常用用来来存存放放双双字字长长数据的高数据的高16位,或存放外设端口地址。位,或存放外设端口地址。第 2 章变址及指针寄存器变址寄存器常用于存储器寻址时提供地址变址寄存器常用于存储器寻址时提供地址nSI是源变址寄存器是源变址寄存器nDI是目的变址寄存器是目的变址寄存器指针寄存器用于寻址内存指针寄存器用于寻址内存堆栈堆栈内的数据内的数据nSPSP为为堆堆栈栈指指针针寄寄存存器器,指指示示栈栈顶顶的的偏偏移移地地址,不能再用于其他目的,具有专用目的址,不能再用于其他目的,具有专用目的nBPBP为为基基址址指指针针寄寄存存器器,表表示示
6、数数据据在在堆堆栈栈段段中的基地址中的基地址SISI和和DIDI在串操作指令有特殊用法在串操作指令有特殊用法SPSP和和BPBP寄寄存存器器与与SSSS段段寄寄存存器器联联合合使使用用确确定定堆堆栈栈段段中中的的存存储储单元地址单元地址第 2 章堆栈(Stack)堆栈是主存中一个特殊的区域堆栈是主存中一个特殊的区域它它采采用用先先进进后后出出FILOFILO(First First In In Last Last OutOut)或或后后进进先先出出LIFOLIFO(Last Last In In First First OutOut)的的原原则则进进行行存存取取操操作作,而而不不是是随随机机存
7、存取操作方式取操作方式堆栈通常由处理器自动维持堆栈通常由处理器自动维持在在80868086中中,由由堆堆栈栈段段寄寄存存器器SSSS和和堆堆栈栈指指针针寄寄存器存器SPSP共同指示共同指示第 2 章 段寄存器DS 数据段寄存器数据段寄存器 (Data Segment) CS 代码段寄存器代码段寄存器 (Code Segment) ES 附加段寄存器附加段寄存器 (Extra Segment) SS 堆栈段寄存器堆栈段寄存器 (Stack Segment) 这些段寄存器的内容与有效的地址一起,这些段寄存器的内容与有效的地址一起,用于确定内存的物理地址。通常用用于确定内存的物理地址。通常用CS、D
8、S、ES以及以及SS用于确定代码段、数据段、附加用于确定代码段、数据段、附加段以及堆栈段的基地址。段以及堆栈段的基地址。 第 2 章指令指针IP指指令令指指针针寄寄存存器器IP,指指示示代代码码段段中中指指令令的的偏偏移地址移地址它它与与代代码码段段寄寄存存器器CS联联用用,确确定定下下一一条条指指令的物理地址令的物理地址计计算算机机通通过过CS : IP寄寄存存器器来来控控制制指指令令序序列列的的执行流程执行流程IP寄存器是一个专用寄存器寄存器是一个专用寄存器第 2 章标志寄存器标标志志(Flag)用用于于反反映映指指令令执执行行结结果果或或控控制制指指令令执执行行形形式式,形成形成16位标
9、志寄存器位标志寄存器FLAGS(程序状态字(程序状态字PSW寄存器寄存器)状状态态标标志志用用来来记记录录程程序序运运行行结结果果的的状状态态信信息息,许许多多指指令的执行都将相应地设置它令的执行都将相应地设置它CF ZF SF PF OF AF控控制制标标志志可可由由程程序序根根据据需需要要用用指指令令设设置置,用用于于控控制制处处理器执行指令的方式理器执行指令的方式DF IF TFOF111512DF10IF9TF8SF7ZF65AF43PF21CF0第 2 章进位标志CF(Carry Flag)当当运运算算结结果果的的最最高高有有效效位位有有进进位位(加加法法)或或借借位位(减减法法)时
10、时,进进位位标标志志置置1,即即CF = 1;否否则则CF = 0。3AH + 7CHB6H,没有进位:,没有进位:CF = 0AAH + 7CH(1)26H,有进位:,有进位:CF = 1第 2 章零标志ZF(Zero Flag)若运算结果为若运算结果为0,则,则ZF = 1;否则否则ZF = 03AH + 7CHB6H,结果不是零:,结果不是零:ZF = 084H + 7CH(1)00H,结果是零:,结果是零:ZF = 1 注意:注意:ZF为为1表示的结果是表示的结果是0第 2 章符号标志SF(Sign Flag)运运算算结结果果最最高高位位为为1,则则SF = 1;否否则则SF = 03
11、AH + 7CHB6H,最高位,最高位D71:SF = 184H + 7CH(1)00H,最高位,最高位D70:SF = 0 有符号数据用最高有效位表示数据的符号有符号数据用最高有效位表示数据的符号所以,最高有效位就是符号标志的状态所以,最高有效位就是符号标志的状态第 2 章奇偶标志PF(Parity Flag)当当运运算算结结果果最最低低字字节节中中“1 1”的的个个数数为为零零或或偶数时,偶数时,PF = 1PF = 1;否则;否则PF = 0PF = 03AH + 7CHB6H10110110B结果中有结果中有5个个1,是奇数:是奇数:PF = 0 PF标标志志仅仅反反映映最最低低8位位
12、中中“1”的的个个数数是偶或奇,即使是进行是偶或奇,即使是进行16位字操作位字操作第 2 章溢出标志OF(Overflow Flag)若算术运算的结果有溢出,则若算术运算的结果有溢出,则OFOF1 1;否则否则 OFOF0 03AH + 7CHB6H,产生溢出:,产生溢出:OF = 1AAH + 7CH(1)26H,没有溢出:,没有溢出:OF = 0 问题问题什么是溢出?什么是溢出?溢出和进位有什么区别?溢出和进位有什么区别?处理器怎么处理,程序员如何运用?处理器怎么处理,程序员如何运用?如何判断是否溢出?如何判断是否溢出?第 2 章什么是溢出处理器内部以补码表示有符号数处理器内部以补码表示有
13、符号数8位表达的整数范围是:位表达的整数范围是:12712816位表达的范围是:位表达的范围是:3276732768如果运算结果超出这个范围,就产生了溢出如果运算结果超出这个范围,就产生了溢出有溢出,说明有符号数的运算结果不正确有溢出,说明有符号数的运算结果不正确3AH7CHB6H,就是,就是58124182,已经超出已经超出128127范围,产生溢出,故范围,产生溢出,故OF1;另一方面,补码另一方面,补码B6H表达真值是表达真值是-74,显然运算结果也不正确显然运算结果也不正确第 2 章溢出和进位的对比例例1:3AH + 7CHB6H无符号数运算:无符号数运算:58124182范围内,无进
14、位范围内,无进位有符号数运算:有符号数运算: 58124182范围外,有溢出范围外,有溢出例例2:AAH + 7CH(1)26H无符号数运算:无符号数运算: 170124294范围外,有进位范围外,有进位有符号数运算:有符号数运算: 8612428范围内,无溢出范围内,无溢出第 2 章如何运用溢出和进位处处理理器器对对两两个个操操作作数数进进行行运运算算时时,按按照照无无符符号号数数求求得得结结果果,并并相相应应设设置置进进位位标标志志CF;同同时时,根根据据是是否否超超出出有有符符号号数数的的范范围围设设置置溢溢出标志出标志OF应应该该利利用用哪哪个个标标志志,则则由由程程序序员员来来决决定
15、定。也也就就是是说说,如如果果将将参参加加运运算算的的操操作作数数认认为为是是无无符符号号数数,就就应应该该关关心心进进位位;认认为为是是有有符符号号数数,则要注意是否溢出则要注意是否溢出第 2 章溢出的判断判断运算结果是否溢出的简单规则:判断运算结果是否溢出的简单规则:只只有有当当两两个个相相同同符符号号数数相相加加(包包括括不不同同符符号号数数相相减减),而而运运算算结结果果的的符符号号与与原原数数据据符符号号相相反反时时,产产生生溢溢出出;因因为为,此此时时的的运运算算结结果果显然不正确显然不正确其他情况下,则不会产生溢出其他情况下,则不会产生溢出第 2 章若参与操作的两数在定义域内,但
16、运算结果超出了字长范围内补码所能允许表示的值,所计算出的结果产生了错误,称之为溢出判断方法: 利用符号位相加的进位和数值部分的最高位相加的进位两者取异或值来判断. 异或结果为1,表示有溢出, 异或结果为0,表示无溢出.溢出的判断第 2 章辅助进位标志AF(Auxiliary Carry Flag)3AH + 7CHB6H,D3有进位:有进位:AF = 1运运算算时时D D3 3位位(低低半半字字节节)有有进进位位或或借位时,借位时,AF = 1AF = 1;否则;否则AF = 0AF = 0。 这这个个标标志志主主要要由由处处理理器器内内部部使使用用,用用于于十十进进制制算算术术运运算算调调整
17、整指指令令中中,用用户一般不必关心户一般不必关心第 2 章方向标志DF(Direction Flag)用于串操作指令,控制地址的变化方向:用于串操作指令,控制地址的变化方向:设置设置DFDF0 0,存储器地址自动增加;,存储器地址自动增加;设置设置DFDF1 1,存储器地址自动减少。,存储器地址自动减少。CLDCLD指令复位方向标志:指令复位方向标志:DFDF0 0STDSTD指令置位方向标志:指令置位方向标志:DFDF1 1第 2 章中断允许标志IF(Interrupt-enable Flag)用用于于控控制制外外部部可可屏屏蔽蔽中中断断是是否否可可以以被被处处理理器器响应:响应:设置设置I
18、FIF1 1,则允许中断;,则允许中断;设置设置IFIF0 0,则禁止中断。,则禁止中断。CLICLI指令复位中断标志:指令复位中断标志:IFIF0 0STISTI指令置位中断标志:指令置位中断标志:IFIF1 1第 2 章陷阱标志TF(Trap Flag)用于控制处理器进入单步操作方式:用于控制处理器进入单步操作方式:设置设置TFTF0 0,处理器正常工作;,处理器正常工作;设置设置TFTF1 1,处理器单步执行指令。,处理器单步执行指令。单单步步执执行行指指令令处处理理器器在在每每条条指指令令执执行行结结束束时时,便产生一个编号为便产生一个编号为1 1的内部中断的内部中断这种内部中断称为这
19、种内部中断称为单步中断单步中断所以所以TFTF也称为也称为单步标志单步标志n利用单步中断可对程序进行逐条指令的调试利用单步中断可对程序进行逐条指令的调试n这种逐条指令调试程序的方法就是这种逐条指令调试程序的方法就是单步调试单步调试第 2 章 DEBUG中各标志位的符号表示标志位名置位符号(=1)复位符号(=0)溢出标志OFOVNV方向标志DFDNUP中断标志IFEIDI符号标志SFNGPL零标志ZFZRNZ辅助标志AFACNA 奇偶标志PFPEPO进位标志CFCYNC第 2 章数据信息的表达单位计算机中信息的单位计算机中信息的单位n二进制位二进制位BitBit:存储一位二进制数:存储一位二进制
20、数:0 0或或1 1n字节字节ByteByte:8 8个二进制位个二进制位,D D7 7D D0 0n字字WordWord:1616位,位,2 2个字节,个字节,D D1515D D0 0n双字双字DWordDWord:3232位,位,4 4个字节个字节,D D3131D D0 0最低有效位最低有效位LSBLSB:数据的最低位,:数据的最低位,D D0 0位位最最高高有有效效位位MSBMSB:数数据据的的最最高高位位,对对应应字字节节、字、双字分别指字、双字分别指D D7 7、D D1515、D D3131位位第 2 章数据的存储格式D7D0字节字节D15D0字字D31D0双字双字D7 D00
21、0006H78H00005H56H00004H12H00003H34H00002H00001H00000H低地址低地址第 2 章存储单元及其存储内容主存储器需要利用地址区别主存储器需要利用地址区别每每个个存存储储单单元元都都有有一一个个编编号号;被被称称为为存存储储器地址器地址每个存储单元存放一个字节的内容每个存储单元存放一个字节的内容0002H0002H单元存放有一个数据单元存放有一个数据34H34H表达为表达为0002H0002H34H34H第 2 章多字节数据存放方式多字节数据在存储器中占多字节数据在存储器中占连续的多个存储单元连续的多个存储单元:存放:存放:低字节存入低地址,高字节存入
22、高地址低字节存入低地址,高字节存入高地址表达:用表达:用低地址表示低地址表示多字节数据占据的地址空间多字节数据占据的地址空间2 2号号“字字”单元的内容为:单元的内容为:0002H = 1234H0002H = 1234H2 2号号“双字双字”单元的内容为:单元的内容为:0002H = 78561234H0002H = 78561234H 80x86处处理理器器采采用用“低低对对低低、高高对高对高”:小端方式:小端方式Little Endian第 2 章数据的地址对齐同同一一个个存存储储器器地地址址可可以以是是字字节节单单元元地地址址、字字单元地址、双字单元地址等等单元地址、双字单元地址等等字
23、字单单元元安安排排在在偶偶地地址址(xxx0Bxxx0B)、双双字字单单元元安安排排在在模模4 4地地址址(xx00Bxx00B)等等,被被称称为为“地地址址对齐(对齐(AlignAlign)”对对于于不不对对齐齐地地址址的的数数据据,处处理理器器访访问问时时,需需要额外的访问存储器时间要额外的访问存储器时间应应该该将将数数据据的的地地址址对对齐齐,以以取取得得较较高高的的存存取取速度速度第 2 章数据的地址对齐为为什什么么地地址址对对齐齐能能取取得得较较高高的的存存取速度取速度? 实实际际上上,8086,8086的的1M1M存存储储空空间间分分为为两两个个512KB512KB的的存存储储体体
24、, ,其其中中一一个个存存储储体体每每个个地地址址都都是是偶偶地地址址, ,另另外外一一个存储体每个地址都是奇地址个存储体每个地址都是奇地址. . 80868086的的1616位位数数据据总总线线D7-D0D7-D0与与偶偶存存储储体体相相连连,D15-D8,D15-D8与与奇奇存存储储体体相相连连. .字字单单元元安安排排在在偶偶数数地地址址存存储储器器操操作作只只需需要要一一次次, ,如如安安排排在在奇奇数数地址地址, ,则需要两次存储器操作则需要两次存储器操作. .奇数地址奇数地址偶数地址偶数地址奇数地址奇数地址偶数地址偶数地址奇数地址奇数地址偶数地址偶数地址高低第 2 章存储器的分段管
25、理8086 CPU8086 CPU有有2020条地址线条地址线n最大可寻址空间为最大可寻址空间为2 220201MB1MBn物理地址范围从物理地址范围从00000H00000HFFFFFHFFFFFH8086CPU8086CPU将将 1MB1MB空空 间间 分分 成成 许许 多多 逻逻 辑辑 段段(SegmentSegment)n每个段最大限制为每个段最大限制为64KB64KBn段地址的低段地址的低4 4位为位为0000B0000B这这样样,一一个个存存储储单单元元除除具具有有一一个个唯唯一一的的物物理理地址地址外,还具有多个外,还具有多个逻辑地址逻辑地址第 2 章物理地址和逻辑地址每每个个物
26、物理理存存储储单单元元有有一一个个唯唯一一的的20位位编编号号,即物理地址:即物理地址:00000HFFFFFH分段后用户编程时,采用逻辑地址:分段后用户编程时,采用逻辑地址:段基地址段基地址 : : 段内偏移地址段内偏移地址分隔符分隔符第 2 章逻辑地址段地址段地址说明逻辑段在主存中的起始位置说明逻辑段在主存中的起始位置8086规定段地址必须是模规定段地址必须是模16地址:地址:xxxx0H省省略略低低4位位0000B,段段地地址址就就可可以以用用16位位数数据表示,就能用据表示,就能用16位位段寄存器段寄存器表达段地址表达段地址偏偏移移地地址址说说明明主主存存单单元元距距离离段段起起始始位
27、位置置的的偏偏移量移量每每段段不不超超过过64KB,偏偏移移地地址址也也可可用用16位位数数据表示据表示第 2 章物理地址和逻辑地址的转换将将逻逻辑辑地地址址中中的的段段地地址址左左移移4 4位位,加加上上偏偏移移地址就得到地址就得到2020位物理地址位物理地址一个物理地址可以有多个逻辑地址一个物理地址可以有多个逻辑地址逻辑地址逻辑地址 1460:1001460:100、1380:F001380:F00物理地址物理地址 14700H 14700H 14700H14700H146014600 0H H 100H100H14700H14700H138013800 0H H F00HF00H1470
28、0H14700H段地址左移段地址左移4 4位位加上偏移地址加上偏移地址得到物理地址得到物理地址第 2 章段寄存器8086有有4个个16位位段段寄寄存存器器,每每个个段段寄寄存存器器确确定定一一个个逻逻辑辑段段的起始地址,每种逻辑段均有各自的用途的起始地址,每种逻辑段均有各自的用途CS(Code Segment)n指明指明代码段代码段的起始地址的起始地址SS(Stack Segment)n指明指明堆栈段堆栈段的起始地址的起始地址DS(Data Segment)n指明指明数据段数据段的起始地址的起始地址ES(Extra Segment)n指明指明附加段附加段的起始地址的起始地址第 2 章代码段(C
29、ode Segment)代码段用来存放程序的指令序列代码段用来存放程序的指令序列v代码段寄存器代码段寄存器CS存放代码段的段地址存放代码段的段地址v指令指针寄存器指令指针寄存器IP指示下条指令的偏移地址指示下条指令的偏移地址处理器利用处理器利用CS:IP取得下一条要执行的指令取得下一条要执行的指令第 2 章堆栈段(Stack Segment)堆栈段确定堆栈所在的主存区域堆栈段确定堆栈所在的主存区域v堆栈段寄存器堆栈段寄存器SS存放堆栈段的段地址存放堆栈段的段地址v堆栈指针寄存器堆栈指针寄存器SP指示堆栈栈顶的偏移地址指示堆栈栈顶的偏移地址处理器利用处理器利用SS:SP操作堆栈顶的数据操作堆栈顶
30、的数据第 2 章数据段(Data Segment)数据段存放运行程序所用的数据数据段存放运行程序所用的数据v数据段寄存器数据段寄存器DS存放数据段的段地址存放数据段的段地址v各各种种主主存存寻寻址址方方式式(有有效效地地址址EA)得得到到存存储器中操作数的偏移地址储器中操作数的偏移地址处理器利用处理器利用DS:EA存取数据段中的数据存取数据段中的数据第 2 章附加段(Extra Segment)附加段是附加的数据段,也用于数据的保存:附加段是附加的数据段,也用于数据的保存:v附加段寄存器附加段寄存器ES存放附加段的段地址存放附加段的段地址v各各种种主主存存寻寻址址方方式式(有有效效地地址址EA
31、)得得到到存存储储器器中中操操作作数数的的偏移地址偏移地址处理器利用处理器利用ES:EA存取附加段中的数据存取附加段中的数据串串操操作作指指令令将将附附加加段段作作为为其其目目的的操操作作数数的的存存放区域放区域第 2 章如何分配各个逻辑段程序的程序的指令序列指令序列必须安排在代码段必须安排在代码段程序使用的程序使用的堆栈堆栈一定在堆栈段一定在堆栈段程程序序中中的的数数据据默默认认是是安安排排在在数数据据段段,也也经经常常安安排排在在附附加加段段,尤尤其其是是串串操操作作的的目目的的区区必须是附加段必须是附加段数数据据的的存存放放比比较较灵灵活活,实实际际上上可可以以存存放放在在任何一种逻辑段
32、中任何一种逻辑段中第 2 章段超越前缀指令没没有有指指明明时时,一一般般的的数数据据访访问问在在DSDS段段;使使用用BPBP访问主存,则在访问主存,则在SSSS段段默默认认的的情情况况允允许许改改变变,需需要要使使用用段段超超越越前前缀缀指令;指令;80868086指令系统中有指令系统中有4 4个:个:CS:CS:;代码段超越,使用代码段的数据;代码段超越,使用代码段的数据SS: SS: ;堆栈段超越,使用堆栈段的数据;堆栈段超越,使用堆栈段的数据DS:DS: ;数据段超越,使用数据段的数据;数据段超越,使用数据段的数据ES:ES: ;附加段超越,使用附加段的数据;附加段超越,使用附加段的数
33、据第 2 章段超越的示例没有段超越的指令实例:没有段超越的指令实例:MOV AX,2000HMOV AX,2000H;AXDS:2000HAXDS:2000H;从默认的;从默认的DSDS数据段取出数据数据段取出数据采用段超越前缀的指令实例:采用段超越前缀的指令实例:MOV AX,ES:2000HMOV AX,ES:2000H ;AXES:2000HAXES:2000H;从指定的;从指定的ESES附加段取出数据附加段取出数据第 2 章段寄存器的使用规定访问存储器的方式访问存储器的方式默认默认可超越可超越偏移地址偏移地址取指令取指令CSCS无无IPIP堆栈操作堆栈操作SSSS无无SPSP一般数据访
34、问一般数据访问DSDSCS ES SSCS ES SS有效地址有效地址EAEABPBP基址的寻址方式基址的寻址方式SSSSCS ES DSCS ES DS有效地址有效地址EAEA串操作的源操作数串操作的源操作数DSDSCS ES SSCS ES SSSISI串操作的目的操作数串操作的目的操作数ESES无无DIDI第 2 章存储器的分段8086对逻辑段对逻辑段要求要求:n段地址低段地址低4位均为位均为0n每段最大不超过每段最大不超过64KB8086对逻辑段对逻辑段并不要求并不要求:n必须是必须是64KBn各段之间完全分开(即可以重叠)各段之间完全分开(即可以重叠)第 2 章各个逻辑段独立第 2
35、章各个逻辑段重叠第 2 章1MB空间的分段1MB1MB空间最多能分成多少个段?空间最多能分成多少个段?n每隔每隔1616个存储单元就可以开始一个段个存储单元就可以开始一个段n所以所以1MB1MB最多可以有:最多可以有:2 2202016162 2161664K 64K 个段个段1MB1MB空间最少能分成多少个段?空间最少能分成多少个段?n每隔每隔64K64K个存储单元开始一个段个存储单元开始一个段n所以所以1MB1MB最少可以有:最少可以有:2 220202216161616 个段个段 8086对存储器的访问2.2 8086微处理器的引脚及工作模式一、8086CPU的引脚及其功能8086CPU
36、的40条引脚信号可按功能分可分为四类,它们是:地址总线数据总线控制总线其它(时钟与电源)。 1.最小模式和最大模式概念(1)(1)最小模式最小模式: :在系统中只有一个微处理器。在系统中只有一个微处理器。(2)最大模式:最大模式:两个或多个微处理器(主处理器、两个或多个微处理器(主处理器、协处理器)协处理器)2.8086的引脚信号(1)最小模式( MN/MX接接5V) AD15AD0,地址地址/数据总线数据总线 A19/S6A16/S3,地址地址/状态总线状态总线 BHE/ S7,高高8位数据允许位数据允许/状态线状态线 MN/MX,最小最小/最大模式控制信号,输入最大模式控制信号,输入 RD
37、,读信号读信号 WR,写信号写信号 M/IO,存储器存储器/ /输入输出控制信号输入输出控制信号 ALE,地址锁存允许信号地址锁存允许信号READY(Ready),准备就绪信号准备就绪信号INTR,可屏蔽中断请求信号可屏蔽中断请求信号INTA,中断响应信号中断响应信号 NMI,非屏蔽中断请求信号非屏蔽中断请求信号RESET,系统复位信号系统复位信号 DEN,数据允许信号数据允许信号 DT/R,数据发送数据发送/接收控制信号接收控制信号 HOLD,总线保持请求信号输入总线保持请求信号输入 HLDA,总线保持响应信号总线保持响应信号 TEST,测试信号测试信号 CLK,时钟输入信号时钟输入信号 V
38、CC(+5V),GND (2)最大模式( MN/MX接地接地)8086 CPU工作在最大模式时,其2431引脚需重新定义,如表2-4所示。 QS1/QS0,指令队列状态信号指令队列状态信号 S2、S1、S0 ,总线周期状态信号总线周期状态信号 LOCK ,总线封锁信号总线封锁信号 RQ/GT1和RQ/GT0 ,总线请求信总线请求信号输入号输入/总线请求信号允许输出总线请求信号允许输出二、二、8086在最小和最大模式下的典型配置在最小和最大模式下的典型配置在在 最最 小小 工工 作作 模模 式式 系系 统统 配配 置置 中中 , 除除 了了8086CPU外,还需要在外围电路中加入:外,还需要在外
39、围电路中加入: 1片片8284A,作为时钟发生器。作为时钟发生器。 3片片8282(8位位锁锁存存器器)或或74LS373,作为地址锁存器。作为地址锁存器。 2片片8286/8287或或74LS245,作作为为双双向总线收发器,以增加数据总线的驱动能力。向总线收发器,以增加数据总线的驱动能力。2.8086最大工作模式的典型配置从从图图2-9和和图图2-10中中可可以以看看出出,8086CPU在在最最大大模模式式和和最最小小模模式式之之间间的的主主要要区区别别是是:在在最最大大模模式式下下,需需要要增增加加一一个个转转换换控控制制信信号号的的电电路路,用用来来对对CPU发发出出的的控控制制信信号
40、号进进行行变变换换和和组组合合,即即8288总线控制器。总线控制器。8288接接受受8086CPU的的状状态态信信号号S2、S1和和S0,经经过过变变换换和和组组合合,由由8288产产生生并并发发出出对对存存储储器器或或I/O端端口口的的读读/写写信信号号,产产生生和和发发出出对对地地址址锁锁存存器器8282及总线收发器及总线收发器8286的控制信号等的控制信号等。第 2 章2.3 8086的寻址方式指令系统设计了多种操作数的来源指令系统设计了多种操作数的来源寻找操作数的过程就是操作数的寻址寻找操作数的过程就是操作数的寻址操操作作数数采采取取哪哪一一种种寻寻址址方方式式,会会影影响响机机器器运
41、运行行的的速速度度和和效效率率如何寻址一个操作数对程序设计很重要如何寻址一个操作数对程序设计很重要 上机实践的建议上机实践的建议配配合合调调试试程程序序DEBUG单单步步执执行行每每条指令显示结果条指令显示结果第 2 章调试程序DEBUGDEBUGDEBUG是是常常用用的的汇汇编编语语言言级级调调试试工工具具,为为汇汇编编语语言言程序员提供了分析指令、跟踪程序的有效手段程序员提供了分析指令、跟踪程序的有效手段常用命令:常用命令:A A 汇编汇编U U 反汇编反汇编T T 单步执行单步执行G G 断点执行断点执行D D 数据显示数据显示R R 寄存器寄存器第 2 章指令的组成指令由操作码和操作数
42、两部分组成指令由操作码和操作数两部分组成操操作作码码说说明明计计算算机机要要执执行行哪哪种种操操作作,如如传传送送、运运算算、移移位位、跳转等操作,它是指令中不可缺少的组成部分跳转等操作,它是指令中不可缺少的组成部分操作数操作数是指令执行的参与者,即各种操作的对象是指令执行的参与者,即各种操作的对象有有些些指指令令不不需需要要操操作作数数,通通常常的的指指令令都都有有一一个个或或两两个个操操作作数,个别指令有数,个别指令有3个甚至个甚至4个操作数个操作数操作码操作码操作数操作数第 2 章指令的操作码和操作数每种指令的每种指令的操作码操作码:n用用一一个个唯唯一一的的助助记记符符表表示示(指指令
43、令功功能能的的英英文缩写)文缩写)n对应着机器指令的一个二进制编码对应着机器指令的一个二进制编码指令中的指令中的操作数操作数:n可以是一个具体的数值可以是一个具体的数值n可以是存放数据的寄存器可以是存放数据的寄存器n或指明数据在主存位置的存储器地址或指明数据在主存位置的存储器地址第 2 章给出立即寻址方式需要的数值本身给出立即寻址方式需要的数值本身给出某些寻址方式需要的对基地址的偏移量给出某些寻址方式需要的对基地址的偏移量8086的机器代码格式表明采用的寻址方式(下表)表明采用的寻址方式(下表)1/2字节字节0/1字节字节0/1/2字节字节0/1/2字节字节操作码操作码mod reg r/m位
44、移量位移量立即数立即数操作数操作数第 2 章8086的机器代码格式第 2 章标准机器代码示例mov ax,BP+0 ;机器代码是;机器代码是 8B 46 00前一个字节前一个字节8B是操作码是操作码(含含w1表示字操作表示字操作)中间一个字节中间一个字节46(01 000 110)是)是 “mod reg r/m”字节字节nreg000表示目的操作数为表示目的操作数为AXnmod01和和r/m110表示源操作数为表示源操作数为BP+D8最后一个字节就是最后一个字节就是8位位移量位位移量D8001/2字节字节0/1字节字节0/1/2字节字节0/1/2字节字节操作码操作码mod reg r/m位移
45、量位移量立即数立即数第 2 章其它机器代码形式mov al,05 ;机器代码是;机器代码是B0 05前前一一个个字字节节B0是是操操作作码码(含含一一个个操操作作数数AL),后一个字节),后一个字节05是立即数是立即数mov ax,0102H ;机器代码是;机器代码是B8 02 01前前一一个个字字节节B8是是操操作作码码(含含一一个个操操作作数数AX),后后两两个个字字节节02 01是是16位位立立即即数(低字节数(低字节02在低地址)在低地址)操作码操作码操作数操作数第 2 章指令的助记符格式操作码操作码 操作数操作数1,1,操作数操作数2 2;注释注释操操作作数数2 2,称称为为源源操操
46、作作数数 srcsrc,它它表表示示参参与与指令操作的一个对象指令操作的一个对象操操作作数数1 1,称称为为目目的的操操作作数数 destdest,它它不不仅仅可可以以作作为为指指令令操操作作的的一一个个对对象象,还还可可以以用用来来存存放指令操作的结果放指令操作的结果分号后的内容是对指令的解释分号后的内容是对指令的解释第 2 章传送指令MOV的格式MOVMOV dest,srcdest,src ;destsrcdestsrc 功能:将源操作数功能:将源操作数srcsrc传送至目的操作数传送至目的操作数destdestMOV AL,05HMOV AL,05H;AL05HAL05HMOV BX,
47、AXMOV BX,AX;BXAXBXAXMOV AX,SIMOV AX,SI;AXDS:SIAXDS:SIMOV AX,BP+06HMOV AX,BP+06H ;AXSS:BP+06HAXSS:BP+06HMOV AX,BX+SIMOV AX,BX+SI;AXDS:BX+SIAXDS:BX+SI第 2 章传送指令MOV的功能源操作数源操作数src目的操作数目的操作数dest30H30H被传送的数据被传送的数据第 2 章立即数寻址方式指指令令中中的的操操作作数数直直接接存存放放在在机机器器代代码码中中,紧紧跟跟在在操操作作码码之之后后(操操作作数数作作为为指指令令的的一一部部分分存放在操作码之后
48、的主存单元中)存放在操作码之后的主存单元中)这种操作数被称为立即数这种操作数被称为立即数immn它可以是它可以是8位数值位数值i8(00HFFH)n也也 可可 以以 是是 16位位 数数 值值 i16( 0000HFFFFH)立即数寻址方式常用来给寄存器赋值立即数寻址方式常用来给寄存器赋值MOV AL,05H;AL05HMOV AX,0102H;AX0102H第 2 章立即数寻址指令MOV AX,0102H;AX0102H立即寻址立即寻址立即寻址立即寻址第 2 章寄存器寻址方式操作数存放在操作数存放在CPU的内部寄存器的内部寄存器reg中:中:n8位寄存器位寄存器r8:AH、AL、BH、BL、
49、CH、CL、DH、DLn16位寄存器位寄存器r16:AX、BX、CX、DX、SI、DI、BP、SPn4个段寄存器个段寄存器seg:CS、DS、SS、ESMOV AX,1234H;AX1234HMOV BX,AX;BXAX第 2 章寄存器寻址指令MOV BX,AX;BXAX寄存寄存寄存寄存器器器器寻址寻址寻址寻址第 2 章存储器寻址方式指指令令中中给给出出操操作作数数的的主主存存地地址址信信息息(偏偏移移地地址址,称称之之为为有有效效地地址址EA),而而段段地地址址在在默默认的或用段超越前缀指定的段寄存器中认的或用段超越前缀指定的段寄存器中8086设计了多种存储器寻址方式设计了多种存储器寻址方式
50、1、直接寻址方式、直接寻址方式2、寄存器间接寻址方式、寄存器间接寻址方式3、寄存器相对寻址方式、寄存器相对寻址方式4、基址变址寻址方式、基址变址寻址方式5、相对基址变址寻址方式、相对基址变址寻址方式第 2 章直接寻址方式有效地址在指令中直接给出有效地址在指令中直接给出默默认认的的段段地地址址在在DS段段寄寄存存器器,可可使使用段超越前缀改变用段超越前缀改变MOV AX,2000H;AXDS:2000H;指令代码:;指令代码:A1 00 20MOV AX,ES:2000H;AXES:2000H;指令代码:;指令代码:26 A1 00 20第 2 章直接寻址指令MOV AX,2000H ;AXDS
51、:2000H直接寻址直接寻址直接寻址直接寻址第 2 章寄存器间接寻址方式有有效效地地址址存存放放在在基基址址寄寄存存器器BX或或变变址址寄寄存存器器SI、DI中中默默认认的的段段地地址址在在DS段段寄寄存存器器,可可使使用用段段超超越前缀改变越前缀改变MOV AX,SI;AXDS:SI间接寻址间接寻址间接寻址间接寻址第 2 章寄存器相对寻址方式有有效效地地址址是是寄寄存存器器内内容容与与有有符符号号8位位或或16位位位移量之和,寄存器可以是位移量之和,寄存器可以是BX/BP或或SI/DI有效地址有效地址BX/BP/SI/DI8/16位位移量位位移量段段地地址址对对应应BX/SI/DI寄寄存存器
52、器默默认认在在DS,对对应应BP寄存器默认在寄存器默认在SS;可用段超越前缀;可用段超越前缀MOV AX,DI+06H ;AXDS:DI+06HMOV AX,BP+06H ;AXSS:BP+06H相对寻址相对寻址相对寻址相对寻址第 2 章基址变址寻址方式有有效效地地址址由由基基址址寄寄存存器器(BX或或BP)的的内内容容加上变址寄存器(加上变址寄存器(SI或或DI)的内容构成:)的内容构成:有效地址有效地址BX/BPSI/DI段段地地址址对对应应BX基基址址寄寄存存器器默默认认是是DS,对对应应BP基址寄存器默认是基址寄存器默认是SS;可用段超越前缀;可用段超越前缀MOV AX,BX+SI ;
53、AXDS:BX+SIMOV AX,BP+DI ;AXSS:BP+DIMOV AX,DS:BP+DI ;AXDS:BP+DI基址变址基址变址基址变址基址变址第 2 章相对基址变址寻址方式有有效效地地址址是是基基址址寄寄存存器器(BX/BP)、变变址址寄寄存存器器(SI/DI)与一个与一个8位或位或16位位移量之和:位位移量之和:有效地址有效地址BX/BPSI/DI8/16位位移量位位移量段段地地址址对对应应BX基基址址寄寄存存器器默默认认是是DS,对对应应BP基址寄存器默认是基址寄存器默认是SS;可用段超越前缀;可用段超越前缀MOV AX,BX+SI+06H;AXDS:BX+SI+06H相对基址
54、变址相对基址变址相对基址变址相对基址变址 位移量可用符号表示位移量可用符号表示 同一寻址方式有多种表达形式同一寻址方式有多种表达形式第 2 章寻址方式的多种表示方式位移量可用符号表示:位移量可用符号表示:MOV AX,SI+COUNT;COUNT是事先定义的变量或常量(就是数值)是事先定义的变量或常量(就是数值)MOV AX,BX+SI+WNUM ;WNUM是变量或常量是变量或常量同一寻址方式可以写成不同的形式:同一寻址方式可以写成不同的形式:MOV AX,BXSI ;MOV AX,BX+SIMOV AX,COUNTSI ;MOV AX,SI+COUNTMOV AX,WNUMBXSI;等同于;
55、等同于 MOV AX,WNUMBX+SI;等同于;等同于 MOV AX,BX+SI+WNUM第 2 章寄存器操作数的表达r8任意一个任意一个8位通用寄存器位通用寄存器AH AL BH BL CH CL DH DLr16任意一个任意一个16位通用寄存器位通用寄存器AX BX CX DX SI DI BP SPreg代表代表r8或或r16seg段寄存器段寄存器CS DS ES SS第 2 章存储器操作数的表达m8一一个个8位位存存储储器器操操作作数数单单元元(所所有有主主存寻址方式)存寻址方式)m16一一个个16位位存存储储器器操操作作数数单单元元(所所有有主存寻址方式)主存寻址方式)mem代表代表m8或或m16第 2 章立即数的表达i8一个一个8位立即数位立即数i16一个一个16位立即数位立即数imm代表代表i8或或i16dest目的操作数目的操作数src源操作数源操作数