《指令寻址精选PPT.ppt》由会员分享,可在线阅读,更多相关《指令寻址精选PPT.ppt(85页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、微处理器及指令系统微处理器及指令系统 第第 2 2 章章关关于于指指令令寻寻址址第1页,讲稿共85张,创作于星期一2什么是指令系统n计计算算机机的的指指令令系系统统就就是是指指该该计计算算机机能能够够执执行的全部指令的集合。行的全部指令的集合。n每种计算机都有它支持的指令集合。每种计算机都有它支持的指令集合。n16位位8086指指令令系系统统是是整整个个Intel 80 x86 系列微处理器指令系统的基础系列微处理器指令系统的基础。n本章内容是本课程的一个关键内容。本章内容是本课程的一个关键内容。第2页,讲稿共85张,创作于星期一3第2章的重点n本章的重点是理解本章的重点是理解80868086
2、常用指令的功能常用指令的功能n本章的关键是熟悉本章的关键是熟悉80868086的寄存器组的寄存器组n本章的难点是本章的难点是80868086的各种寻址方式的各种寻址方式 可采用可采用调试程序调试程序 DEBUG进行实践进行实践第3页,讲稿共85张,创作于星期一4内部数据总线内部数据总线控制总线控制总线数据总线数据总线地址总线地址总线暂存器暂存器累加器累加器ALU标志寄存器标志寄存器指指令令寄寄存存指指令令译译码码时序时序和和控制控制逻辑逻辑通通 用用寄存器组寄存器组地地 址址寄存器组寄存器组地址总地址总线线控制控制数据总数据总线线控制控制2.1.1 8位微处理器的内部结构1.算术逻辑单元(运算
3、器)算术逻辑单元(运算器)2.寄存器组寄存器组3.指令处理单元(控制器)指令处理单元(控制器)第4页,讲稿共85张,创作于星期一52.1.2 8088/8086的功能结构n8088的内部结构从功能分成两个单元的内部结构从功能分成两个单元n总总线线接接口口单单元元BIU管管理理8088与与系系统统总总线线的接口,负责的接口,负责CPU对存储器和外设进行访问对存储器和外设进行访问n执执行行单单元元EU负负责责指指令令的的译译码码、执执行行和和数数据的运算据的运算n两个单元相互独立,分别完成各自操作两个单元相互独立,分别完成各自操作n两两个个单单元元可可以以并并行行执执行行,实实现现指指令令取取指指
4、和和执行的流水线操作执行的流水线操作第5页,讲稿共85张,创作于星期一6调试程序DEBUGnDEBUG是是常常用用的的汇汇编编语语言言级级调调试试工工具具,为为汇汇编编语语言程序员提供了分析指令、跟踪程序的有效手段。言程序员提供了分析指令、跟踪程序的有效手段。n常用常用DEBUG命令命令:A 汇编汇编 U 反汇编反汇编T 单步执行单步执行 G 断点执行断点执行D 数据显示数据显示 R R 寄存器寄存器第6页,讲稿共85张,创作于星期一72.1 8086的寄存器组8086的寄存器(如图的寄存器(如图2.1)都为)都为16位,分为:位,分为:通用寄存器通用寄存器8AX/BX/CX/DX BP/SP
5、 DI/SI指令指针寄存器指令指针寄存器1IP标志寄存器标志寄存器1PSW段寄存器段寄存器4 CS/SS/DS/ES掌握通用寄存器的作用掌握通用寄存器的作用熟悉熟悉PSW中各个标志的含义中各个标志的含义切实理解切实理解存储器组织存储器组织和和存储空间分段存储空间分段的概念的概念第7页,讲稿共85张,创作于星期一8图2.1 8086的寄存器组第8页,讲稿共85张,创作于星期一9通用寄存器8086的的16位通用寄存器是:位通用寄存器是:AXBXCXDXSIDIBPSP 其其中中,前前4个个数数据据寄寄存存器器都都还还可可以以分分成成高高8位位和低和低8位两个独立的寄存器,它们是:位两个独立的寄存器
6、,它们是:AH BH CH DH AL BL CL DL对其中某个对其中某个8位寄存器的操作,并不影响它所位寄存器的操作,并不影响它所对应的另外一个对应的另外一个8位寄存器。位寄存器。第9页,讲稿共85张,创作于星期一10数据寄存器n数据寄存器用来存放计算的结果和操作数数据寄存器用来存放计算的结果和操作数n每个寄存器又有它们各自的专用目的:每个寄存器又有它们各自的专用目的:nAX16位位累累加加器器,使使用用频频度度最最高高,用用于于算算术术、逻逻辑辑运运算算以以及及与与外外设设传传送送信信息息等等;AL为为8位累加器。位累加器。nBX基基址址寄寄存存器器,常常用用来来做做基基址址指指针针,指
7、指向一批连续存放操作数的基地址。向一批连续存放操作数的基地址。nCX计计数数器器,作作为为循循环环和和串串操操作作等等指指令令中中的隐含计数器。的隐含计数器。nDX数数据据寄寄存存器器,用用来来存存放放外外设设端端口口的的16位地址,或双字长数据的高位地址,或双字长数据的高16位。位。第10页,讲稿共85张,创作于星期一11变址寄存器n变址寄存器常用于存储器寻址时提供地址变址寄存器常用于存储器寻址时提供地址nSI是源变址寄存器是源变址寄存器nDI是目的变址寄存器是目的变址寄存器n在在串串操操作作类类指指令令中中,SI和和DI具具有有特特别别的的功功能能第11页,讲稿共85张,创作于星期一12指
8、针寄存器n指针寄存器用于寻址内存堆栈内的数据指针寄存器用于寻址内存堆栈内的数据nSP为为堆堆栈栈指指针针寄寄存存器器,指指示示栈栈顶顶的的偏偏移移地地址。址。SP不能再用于其他目的,具有专用性不能再用于其他目的,具有专用性nBP为为基基址址指指针针寄寄存存器器,表表示示数数据据在在堆堆栈栈段中的基地址段中的基地址nSP/BP寄寄存存器器与与SS段段寄寄存存器器联联合合使使用用以以确定堆栈段中的存储单元地址确定堆栈段中的存储单元地址详见堆栈操作指令详见堆栈操作指令第12页,讲稿共85张,创作于星期一148088/80868088/8086的堆栈操作特点的堆栈操作特点n向下生长向下生长向低地址方向
9、生长;向低地址方向生长;n双字节操作双字节操作高对高,低对低;高对高,低对低;n“栈顶总满栈顶总满”栈顶已经堆有数据。栈顶已经堆有数据。PUSH AXALAH原栈顶原栈顶新栈顶新栈顶POP BXBLBH低址低址第14页,讲稿共85张,创作于星期一15指令指针寄存器IPn指指令令指指针针寄寄存存器器IP,指指示示代代码码段段中中指指令令的的偏偏移地址移地址n它它与与代代码码段段寄寄存存器器CS联联用用,确确定定下下一一条条指指令令的物理地址的物理地址n计计算算机机通通过过CS:IP寄寄存存器器来来取取指指,从从而而控控制制指令序列的执行流程指令序列的执行流程nIP寄寄存存器器是是一一个个专专用用
10、寄寄存存器器,用用户户不不能能直直接接访问。访问。第15页,讲稿共85张,创作于星期一16标志寄存器标志(标志(Flag)用于反映指令执行结果或控制指令执行形式。用于反映指令执行结果或控制指令执行形式。8086处处理理器器中中各各种种常常用用的的标标志志形形成成了了一一个个16位位的的标标志志寄寄存器存器FLAGS(也称程序状态字也称程序状态字PSW寄存器寄存器)。)。OF1115 12DF10IF9TF8SF7ZF65AF43PF21CF0控制控制反映结果状态反映结果状态反应运算过程反应运算过程第16页,讲稿共85张,创作于星期一17标志的作用指令的执行与标志有很大关系。指令的执行与标志有很
11、大关系。标志分成两类:标志分成两类:n状状态态标标志志用用来来记记录录程程序序运运行行结结果果的的状状态态信息,许多指令的执行都将自动地改变它。信息,许多指令的执行都将自动地改变它。CF OF AF SF ZF PFn控控制制标标志志可可由由用用户户根根据据需需要要用用指指令令进进行行设置,用于控制处理器的具体工作方式。设置,用于控制处理器的具体工作方式。DF IF TF第17页,讲稿共85张,创作于星期一18进位标志CF(Carry Flag)n当当运运算算结结果果的的最最高高有有效效位位有有进进位位(加加法法)或或借借位位(减减法法)时时,进进位位标标志志置置1,即即CF=1;否则否则 C
12、F=0。例如(以例如(以8位运算为例,位运算为例,8088中为中为16位):位):3AH+7CHB6H没有进位:没有进位:CF=0AAH+7CH26H有进位:有进位:CF=1(1)第18页,讲稿共85张,创作于星期一19全零标志ZF(Zero Flag)n若若运运算算结结果果为为全全0,则则ZF=1,否否则则ZF=0。例如:例如:3AH+7CHB6H结果不是零:结果不是零:ZF=086H+7CH00H结果是全零:结果是全零:ZF=1注意:注意:ZF为为1表示的结果是表示的结果是0(1)第19页,讲稿共85张,创作于星期一20符号标志SF(Sign Flag)n运算结果最高位为运算结果最高位为1
13、,则,则SF=1;否则否则SF=0。例如:例如:3AH+7CHB6H最高位最高位D71:SF=186H+7CH00H最高位最高位D70:SF=0有符号数利用最高有效位(有符号数利用最高有效位(MSB)来表示它的符号。来表示它的符号。所以,运算结果的所以,运算结果的MSB与符号标志与符号标志SF相一致。相一致。(1)第20页,讲稿共85张,创作于星期一21奇偶标志PF(Parity Flag)n当当运运算算结结果果最最低低字字节节中中“1”的的个个数数为为零零或或偶偶数时,数时,PF=1;否则否则PF=0(奇校验奇校验)。)。例如:例如:3AH+7CHB6H10110110B,结果中有结果中有5
14、个个1,是奇数,则是奇数,则 PF=0注注意意:PF标标志志仅仅反反映映最最低低8位位中中“1”的的个个数数是偶或奇,即使是进行是偶或奇,即使是进行16位字操作。位字操作。第21页,讲稿共85张,创作于星期一22溢出标志OF(Overflow Flag)n若若算算术术运运算算的的结结果果有有溢溢出出,则则OF=1;否否则则 OF0。例例如:如:3AH+7CHB6H产生溢出:产生溢出:OF=1AAH+7CH26H没有溢出:没有溢出:OF=0问题:问题:什么是溢出?什么是溢出?溢出和进位有什么区别?溢出和进位有什么区别?处理器怎么处理,程序员如何运用?处理器怎么处理,程序员如何运用?如何判断是否溢
15、出?如何判断是否溢出?(1)第22页,讲稿共85张,创作于星期一23什么是溢出n“溢出溢出”针对有符号数针对有符号数n处理器内部以补码表示有符号数处理器内部以补码表示有符号数8位表示范围是:位表示范围是:-128 +127 16位表示范围是:位表示范围是:-32768+32767 n如如果果运运算算结结果果超超出出了了这这个个范范围围,就就是是产产生生了了溢溢出出,溢溢出出发生时,说明有符号数的运算结果不正确发生时,说明有符号数的运算结果不正确n以以8位运算为例:位运算为例:3AH+7CHB6H即即 58+124182结果超出结果超出-128127 故溢出,所以故溢出,所以OF=1另另一一方方
16、面面,补补码码B6H表表达达真真值值是是-74,显显然然运运算算结结果果也不正确。也不正确。第23页,讲稿共85张,创作于星期一24溢出标志和进位标志的区别n溢出标志溢出标志OF和进位标志和进位标志CF是两个意义不同的标志是两个意义不同的标志n进进位位标标志志表表示示无无符符号号数数运运算算结结果果是是否否超超出出范范围围,运运算算结果仍然正确;结果仍然正确;n溢溢出出标标志志表表示示有有符符号号数数运运算算结结果果是是否否超超出出范范围围,运运算算结结果已经不正确。果已经不正确。请看例子请看例子第24页,讲稿共85张,创作于星期一26如何运用溢出和进位n处理器对两个操作数进行运算时,处理器对
17、两个操作数进行运算时,n根据无符号运算有无进位来设置进位标志根据无符号运算有无进位来设置进位标志CF;n根根据据有有符符号号运运算算是是否否超超出出表表示示范范围围来来设设置置溢溢出出标志标志OF。n应该利用哪个标志,则由程序员来决定。应该利用哪个标志,则由程序员来决定。n如如果果参参加加运运算算的的操操作作数数是是无无符符号号数数,用用户户应应该该关心进位标志关心进位标志n如如果果参参加加运运算算的的操操作作数数是是有有符符号号数数,用用户户应应该该关心溢出标志。关心溢出标志。第26页,讲稿共85张,创作于星期一27如何判断CF标志和OF标志(1)n以以8位位减减运算位例,判断运算位例,判断
18、CF标志和标志和OF标志:标志:A8H-67H=168-103=65 无符号运算无符号运算够减:够减:CF=0A8H-67H=-88-103=-192 有符号运算有符号运算1010 1000 0110 0111有:有:1010 1000+1001 1001 1010 1000+1001 100110100 0001有有进进有有出出/无无进进无无出出 不溢出不溢出有有进进无无出出/无无进进有有出出 溢出溢出无进有出:无进有出:OF=1第27页,讲稿共85张,创作于星期一28如何判断CF标志和OF标志(2)n以以8位位加加运算位例,判断运算位例,判断CF标志和标志和OF标志:标志:A8H+67H=
19、168+103=271 无符号运算无符号运算 有进位:有进位:CF=1A8H+67H=-88+103=15 有符号运算有符号运算 1010 1000+0110 011110000 1111有有进进有有出出/无无进进无无出出 不溢出不溢出有有进进无无出出/无无进进有有出出 溢出溢出有进有出:有进有出:OF=0第28页,讲稿共85张,创作于星期一29辅助进位标志AF(Auxiliary Carry Flag)n运运算算时时D3位位(低低半半字字节节)有有进进位位或或借借位位时时,AF=1;否否则则AF=0。例如:例如:3AH+7CHB6H D3向前有进位:向前有进位:AF=1这这个个标标志志主主要
20、要由由处处理理器器内内部部使使用用,用用于于十十进进制制算算术术运运算算的调整,用户一般不必关心的调整,用户一般不必关心。第29页,讲稿共85张,创作于星期一30方向标志DF(Direction Flag)n用于串操作指令中,控制地址的变化方向:用于串操作指令中,控制地址的变化方向:n设置设置DF0,串操作后存储器地址自动增量(增址)串操作后存储器地址自动增量(增址);n设置设置DF1,串操作后存储器地址自动减量(减址)串操作后存储器地址自动减量(减址)。nCLD 指令复位方向标志:指令复位方向标志:DF0nSTD 指令置位方向标志:指令置位方向标志:DF1第30页,讲稿共85张,创作于星期一
21、31中断允许标志IF(Interrupt-enable Flag)n用用于于控控制制外外部部可可屏屏蔽蔽中中断断是是否否可可以以被被处处理理器器响应:响应:n设置设置IF1,则允许中断;则允许中断;n设置设置IF0,则禁止中断。则禁止中断。nCLI 指令复位中断标志:指令复位中断标志:IF0nSTI 指令置位中断标志:指令置位中断标志:IF1第31页,讲稿共85张,创作于星期一32陷阱标志TF(Trap Flag)n用于控制处理器是否进入用于控制处理器是否进入单步执行单步执行方式:方式:n设置设置TF0,处理器正常工作;处理器正常工作;n设设置置TF1,处处理理器器每每执执行行一一条条指指令令
22、就就中中断断一一次次,中中断断编编号号为为 1(称称单单步步中中断断)TF 也也被被称称为为单单步步标标志志。n单步执行单步执行和和单步调试单步调试n利用单步中断可对程序进行逐条指令的调试。利用单步中断可对程序进行逐条指令的调试。n这种逐条指令调试程序的方法就是这种逐条指令调试程序的方法就是单步调试单步调试。第32页,讲稿共85张,创作于星期一33变址寄存器n变址寄存器常用于存储器寻址时提供地址变址寄存器常用于存储器寻址时提供地址nSI是源变址寄存器是源变址寄存器nDI是目的变址寄存器是目的变址寄存器n在在串串操操作作类类指指令令中中,SI和和DI具具有有特特别别的的功功能能第33页,讲稿共8
23、5张,创作于星期一34指针寄存器n指针寄存器用于寻址内存指针寄存器用于寻址内存堆栈堆栈内的数据内的数据nSP为为堆堆栈栈指指针针寄寄存存器器,指指示示栈栈顶顶的的偏偏移移地地址。址。SP不能再用于其他目的,具有专用性不能再用于其他目的,具有专用性nBP为为基基址址指指针针寄寄存存器器,表表示示数数据据在在堆堆栈栈段段中的基地址中的基地址nSP/BP寄寄存存器器与与SS段段寄寄存存器器联联合合使使用用以以确定堆栈段中的存储单元地址确定堆栈段中的存储单元地址详见堆栈操作指令详见堆栈操作指令第34页,讲稿共85张,创作于星期一36数据的存储格式n计算机中信息的单位有:计算机中信息的单位有:位(位(b
24、it)、)、字节(字节(byte)、)、字(字(word)、)、双字(双字(double word)等等n在存储器中,信息的存储单元是:字节在存储器中,信息的存储单元是:字节n80 x86微处理器对多字节数据采用:微处理器对多字节数据采用:小端方式(小端方式(little endian)n存储的数据如果对齐边界,则存取速度较快存储的数据如果对齐边界,则存取速度较快参见图参见图2.3第36页,讲稿共85张,创作于星期一38信息的表示单位n位位bit:存储一位二进制数:存储一位二进制数:0或或1。n字节字节Byte:8位二进制位二进制,D7D0。n字字Word:16位位/2个字节,个字节,D15D
25、0。n双字双字Double:32位位/4个字节个字节,D31D0。n最最低低有有效效位位LSB(Least Significant Bit):指指数数据的最低位,即据的最低位,即D0位;位;n最最高高有有效效位位MSB(Most Significant Bit):指指数数据据的的最最高高位位,对对应应字字节节、字字、双双字字分分别别指指D7、D15、D31位。位。第38页,讲稿共85张,创作于星期一39存储单元及其存储内容n每个存储单元都有一个编号每个存储单元都有一个编号存储器地址存储器地址n每个存储单元存放一个字节的内容每个存储单元存放一个字节的内容例如:例如:0002H单元存放有一个数据单
26、元存放有一个数据34H0002H34H参见图参见图2.3第39页,讲稿共85张,创作于星期一40小端方式n多字节数据在存储器中占据多字节数据在存储器中占据多个连续的存储单元多个连续的存储单元:n存放时,存放时,低字节低字节存于存于低地址低地址,高字节高字节存于存于高地址高地址;n多字节数据占据的地址空间用它的多字节数据占据的地址空间用它的低地址来低地址来表示。表示。n例如:图例如:图2.3中,中,2号号“字字”单元:单元:0002H =1234H 2号号“双字双字”单元:单元:0002H =78561234Hn80 x86处处理理器器的的“低低对对低低、高高对对高高”的的存存储储形形式式,被被
27、称称为为“小小端端方方式式”;相相对对应应还还存存在在“大大端端方方式式(big endian)”。第40页,讲稿共85张,创作于星期一41数据的地址对齐n同同一一个个存存储储器器地地址址可可以以表表示示为为:字字节节单单元元地地址址、字字单单元元地址、双字单元地址等等(视指令的具体情况)。地址、双字单元地址等等(视指令的具体情况)。如如 mov word ptr 2000H,10H mov byte ptr 2000H,10Hn将将字字单单元元安安排排在在偶偶地地址址(xx.xx0 B),将将双双字字单单元元安安排排在在模模4地地址址(xxxx00 B)的的做做法法,被被称为称为“地址对齐地
28、址对齐(Align)”。n对对于于地地址址不不对对齐齐的的数数据据,处处理理器器访访问问时时,需需要要付付出出额额外外的访问时间。的访问时间。n要取得较高的存取速度,应该将数据的地址对齐。要取得较高的存取速度,应该将数据的地址对齐。第41页,讲稿共85张,创作于星期一42存储器的分段管理n8088有有20条地址线,条地址线,n最大可寻址空间为最大可寻址空间为 2201MB,n可寻址的地址范围为可寻址的地址范围为 00000HFFFFFHn该地址称该地址称物理地址物理地址n硬硬件件用用20位位的的物物理理地地址址来来对对存存储储单单元元进进行行寻寻址址第42页,讲稿共85张,创作于星期一43存储
29、器的分段管理n由由于于8088中中的的地地址址寄寄存存器器都都是是16位位的的,用用户户不不能能直直接接使使用用20位位的的物物理理地地址址,编编程程时时需需要要使用使用逻辑地址逻辑地址来寻址存储单元。来寻址存储单元。n逻辑地址逻辑地址由两个由两个16位数构成,其形式为:位数构成,其形式为:段的起始地址段的起始地址 :段内的偏移地址段内的偏移地址(16位段地址)位段地址):(16位偏移量)位偏移量)第43页,讲稿共85张,创作于星期一44存储器的分段管理n8088将将 存存 储储 空空 间间 分分 为为 多多 个个 逻逻 辑辑 段段(段段Segment)来进行管理,要求:来进行管理,要求:n段
30、段的的20位位的的起起始始地地址址(xxxxxH)其其低低4位位必必须须为为0(xxxx0H),所以可以将它们省略,然后用所以可以将它们省略,然后用1个个16位数来表示表示段的首地址。位数来表示表示段的首地址。n每每段段长长度度限限216=64KB,所所以以段段内内偏偏移移地地址址可可以以用用1个个16位位数数来来表示(表示(xxxxH););n所以有:所以有:段的起始地址段的起始地址 :段内的偏移地址段内的偏移地址(16位段地址)位段地址):(:(16位偏移量)位偏移量)第44页,讲稿共85张,创作于星期一45存储器的分段管理逻辑地址的表示逻辑地址的表示段地址:偏移地址段地址:偏移地址地址偏
31、移量(地址偏移量(xxxxH)段首(段首(xxxx0H)低址低址段尾段尾某逻辑段某逻辑段64KB某寻址单元某寻址单元第45页,讲稿共85张,创作于星期一46存储器的分段管理n1MB 最最多多可可分分为为16个个不不重重迭迭的的段段。实实际际上上,两个不同的逻辑段可以交叠,或者完全重叠。两个不同的逻辑段可以交叠,或者完全重叠。n一一个个存存储储单单元元可可以以拥拥有有多多个个逻逻辑辑地地址址,但但只只可能拥有一个唯一的物理地址。可能拥有一个唯一的物理地址。n例如:物理地址:例如:物理地址:00200H逻辑地址:逻辑地址:0000H:0200H逻辑地址:逻辑地址:0020H:0000H第46页,讲
32、稿共85张,创作于星期一47物理地址和逻辑地址n每每个个存存储储单单元元都都有有一一个个唯唯一一物物理理地地址址(00000HFFFFFH),20位位,该该地地址址在在指指令令执执行行时时由由地地址址加加法法器器形成,并进行硬件寻址。形成,并进行硬件寻址。n地地址址加加法法器器的的具具体体做做法法:段段地地址址左左移移4位位,然然后后加加上上偏偏移移地地址就得到址就得到20位物理地址。位物理地址。n用户编程时采用用户编程时采用逻辑地址逻辑地址,其形式为:,其形式为:段的首地址段的首地址:段内偏移地址段内偏移地址它们由两个它们由两个16位的无符号数构成位的无符号数构成。n逻辑地址逻辑地址“146
33、0H:100H”=物理地址物理地址14700H第47页,讲稿共85张,创作于星期一48段地址n段段地地址址说说明明逻逻辑辑段段在在存存储储器器中中的的起起始始位位置置,为为模模16地地址址:xxxx0H,省省略略低低4位位后后,可可用用1个个16位位数数来来表表示示,该该地地址址可可被被存存放放在在不不同的段寄存器同的段寄存器CS/SS/DS/ES中。中。n偏偏移移地地址址说说明明寻寻址址单单元元距距离离段段首首的的偏偏移移量量,因因每每段段长长度度不不超超过过64KB,所所以以偏偏移移地地址址也也可用可用1个个16位数来表示。位数来表示。第48页,讲稿共85张,创作于星期一49段寄存器和逻辑
34、段n8086有有4个个16位的段寄存器:位的段寄存器:CS(代代码码段段寄寄存存器器)用用来来指指明明代代码码段段的的首首地地址址SS(堆栈段寄存器)指明堆栈段的首地址堆栈段寄存器)指明堆栈段的首地址DS(数据段寄存器)指明数据段的首地址数据段寄存器)指明数据段的首地址ES(附加段寄存器)指明附加段的首地址附加段寄存器)指明附加段的首地址n段寄存器用来指明某个段的起始地址。段寄存器用来指明某个段的起始地址。n在在寻寻址址时时,以以上上4个个段段寄寄存存器器提提供供的的段段地地址址有着不同的用法。有着不同的用法。第49页,讲稿共85张,创作于星期一54程序员如何分配各个逻辑段n程序的指令序列必须
35、安排在代码段;程序的指令序列必须安排在代码段;n程序使用的堆栈一定在堆栈段;程序使用的堆栈一定在堆栈段;n程程序序中中的的数数据据默默认认是是安安排排在在数数据据段段,也也经经常常安安排排在在附附加加段段,尤尤其其是是串串操操作作的的目目的的区区必必须须是附加段。是附加段。n数数据据的的存存放放比比较较灵灵活活,实实际际上上可可以以存存放放在在任任何一种逻辑段中。何一种逻辑段中。程序中如何指明数据所在的逻辑段呢?程序中如何指明数据所在的逻辑段呢?第54页,讲稿共85张,创作于星期一55段跨越前缀指令n没有指明时,一般的数据访问在没有指明时,一般的数据访问在DS段;段;n若使用若使用BP访问存储
36、器,则在访问存储器,则在SS段。段。n默默认认的的情情况况允允许许改改变变,需需要要使使用用段段跨跨越越前前缀缀指令,指令,8086指令系统中共有指令系统中共有4个:个:CS:代码段超越,使用代码段的数据代码段超越,使用代码段的数据SS:堆栈段超越,使用堆栈段的数据堆栈段超越,使用堆栈段的数据DS:数据段超越,使用数据段的数据数据段超越,使用数据段的数据ES:附加段超越,使用附加段的数据附加段超越,使用附加段的数据第55页,讲稿共85张,创作于星期一56段超越的例子n没有段超越的指令实例:没有段超越的指令实例:MOV AX,2000H;AXDS:2000H,;从默认的从默认的DS数据段取出数据
37、数据段取出数据n采用段超越前缀的指令实例:采用段超越前缀的指令实例:MOV AX,ES:2000H;AXES:2000H,;从指定的从指定的ES附加段取出数据附加段取出数据第56页,讲稿共85张,创作于星期一57段寄存器的使用规定(表2.1)存储器访问方式存储器访问方式存储器访问方式存储器访问方式默认段寄存器默认段寄存器默认段寄存器默认段寄存器 段跨越段跨越段跨越段跨越偏移地址偏移地址偏移地址偏移地址取指令取指令取指令取指令 CSCS 无无无无 IPIP堆栈操作堆栈操作堆栈操作堆栈操作 SSSS 无无无无 SPSP一般数据访问一般数据访问一般数据访问一般数据访问 DSDSCS/ES/SSCS/
38、ES/SS有效地址有效地址有效地址有效地址EAEA下列特殊情况除外下列特殊情况除外下列特殊情况除外下列特殊情况除外串操作的源操作数串操作的源操作数串操作的源操作数串操作的源操作数 DSDSCS/ES/SSCS/ES/SS SI SI串操作的目的操作数串操作的目的操作数串操作的目的操作数串操作的目的操作数 ESES 无无无无 DIDIBPBP基址的寻址方式基址的寻址方式基址的寻址方式基址的寻址方式 SSSSCS/DS/ESCS/DS/ES有效地址有效地址有效地址有效地址EAEA第57页,讲稿共85张,创作于星期一58程序分段的图例(图2.4)n8086对逻辑段的要求是:对逻辑段的要求是:段地址低
39、段地址低4位均为位均为0,每段最大不超过,每段最大不超过64KB。n8086对每个段不要求必须是对每个段不要求必须是64KB,不要求各段之间完全分开、即可以重叠。不要求各段之间完全分开、即可以重叠。图图2.4a是各自独立段的分配示例是各自独立段的分配示例图图2.4b是相互重叠段的分配示例是相互重叠段的分配示例1MB空间最多能分成多少个段?空间最多能分成多少个段?1MB空间最少能分成多少个段?空间最少能分成多少个段?第58页,讲稿共85张,创作于星期一622.1节的总结n8086有有8个个8位位通通用用寄寄存存器器、8个个16位位通通用用寄存器寄存器n8086有有6个状态标志和个状态标志和3个控
40、制标志个控制标志n8086将将1MB存存储储空空间间分分段段管管理理,有有4个个段段寄寄存器,对应存器,对应4种逻辑段种逻辑段n8086有有4个个段段超超越越前前缀缀指指令令,用用于于明明确确指指定定数据所在的逻辑段数据所在的逻辑段。第62页,讲稿共85张,创作于星期一632.2 8086的寻址方式n本节从本节从8086的机器代码格式入手,论述:的机器代码格式入手,论述:立即数寻址方式立即数寻址方式寄存器寻址方式寄存器寻址方式存储器寻址方式存储器寻址方式n进而熟悉进而熟悉8086汇编语言指令格式,汇编语言指令格式,尤其是其中操作数的表示方法;尤其是其中操作数的表示方法;为展开为展开8086指令
41、系统做好准备。指令系统做好准备。第63页,讲稿共85张,创作于星期一64指令构成n指令由操作码和操作数两部分构成指令由操作码和操作数两部分构成n操操作作码码说说明明计计算算机机要要执执行行哪哪种种操操作作,如如传传送送、运运算算、移移位位、跳转等操作,它是指令中不可缺少的组成部分。跳转等操作,它是指令中不可缺少的组成部分。n操作数是指令执行的参与者,即各种操作的对象。操作数是指令执行的参与者,即各种操作的对象。n有有些些指指令令不不需需要要操操作作数数,通通常常的的指指令令都都有有一一个个或或两两个个操操作作数数,也有个别指令有也有个别指令有3 3个甚至个甚至4 4个操作数。个操作数。操作码操
42、作码操作数操作数第64页,讲稿共85张,创作于星期一65指令中的操作码和操作数n每种指令的每种指令的操作码操作码:用一个唯一的助记符表示(英文缩写),用一个唯一的助记符表示(英文缩写),对应着一个二进制编码的机器指令。对应着一个二进制编码的机器指令。n指令中的指令中的操作数操作数:可以是一个具体的数值(立即数);可以是一个具体的数值(立即数);可以是存放数据的寄存器;可以是存放数据的寄存器;可以用多种方式指明寻址单元在存储器中的地址。可以用多种方式指明寻址单元在存储器中的地址。第65页,讲稿共85张,创作于星期一66寻址方式n指令系统设计了多种操作数的来源,寻找操作数的过程就是操作数的寻址方式
43、。n操作数采取哪一种寻址方式,会影响机器运行的速度和效率。如何寻址一个操作数对程序的设计来讲很重要。第66页,讲稿共85张,创作于星期一678086的机器代码(Machine Code)格式n指令长度:指令长度:17个字节个字节n操作码:操作码:12个字节,个字节,n操作数:操作数:05个字节,其中:个字节,其中:“mod reg r/m”字节表明所采用的字节表明所采用的寻址方式寻址方式,“位移量位移量”字节给出某些寻址方式需要的对基地址的偏移量,字节给出某些寻址方式需要的对基地址的偏移量,“立即数立即数”字节给出立即寻址方式需要的数值。字节给出立即寻址方式需要的数值。n操作数的各个字段有多种
44、组合,如表操作数的各个字段有多种组合,如表2.2所示所示第67页,讲稿共85张,创作于星期一68指令格式操作码操作码 操作数操作数1,1,操作数操作数2 2;注释;注释n操操作作数数1 1,称称为为目目的的操操作作数数 destdest,它它不不仅仅可可以以作作为为指指令令操操作作的的一一个个源源对对象象,还还用用来来存存放放指令操作的结果。指令操作的结果。n操操作作数数2 2,称称为为源源操操作作数数 srcsrc,它它表表示示参参与与指指令操作的一个源对象;令操作的一个源对象;n分号后的内容是对指令的解释。分号后的内容是对指令的解释。第68页,讲稿共85张,创作于星期一69传送指令MOV的
45、格式n MOV指指令令的的功功能能是是将将源源操操作作数数src传传送送至至目目的操作数的操作数destMOV dest,src;destsrc;MOV AL,05H;AL05HMOV BX,AX;BXAXMOV AX,SI;AXDS:SIMOV AX,BP+06H;AXSS:BP+06HMOV AX,BX+SI;AXDS:BX+SI功能演示第69页,讲稿共85张,创作于星期一71立即数寻址方式n指指令令中中的的操操作作数数直直接接存存放放在在机机器器代代码码中中,紧紧跟跟在在操操作作码码之之后后(操操作作数数作作为为指指令令的的一一部部分分存放在操作码之后的主存单元中)。存放在操作码之后的主
46、存单元中)。n这种操作数被称为立即数这种操作数被称为立即数imm它可以是它可以是8位数值位数值i8(00HFFH),),也可以是也可以是16位数值位数值i16(0000HFFFFH)。)。n立即数寻址方式常用来给寄存器赋值。立即数寻址方式常用来给寄存器赋值。MOV AL,05H;AL05HMOV AX,0102H;AX0102H第71页,讲稿共85张,创作于星期一72寄存器寻址方式n操操作作数数存存放放在在CPU的的内内部部寄寄存存器器reg中中,可可以是:以是:n8位寄存器位寄存器r8:AH/AL/BH/BL/CH/CL/DH/DL;n16位寄存器位寄存器r16:AX/BX/CX/DX/SI
47、/DI/BP/SP;n4个段寄存器个段寄存器seg:CS/DS/SS/ES。MOV AX,1234H ;AX1234HMOV BX,AX;BXAX第72页,讲稿共85张,创作于星期一73存储器寻址方式n指指令令中中给给出出操操作作数数的的主主存存地地址址信信息息(偏偏移移地地址址,称称之之为为有有效效地地址址EA),而而段段地地址址在在默默认认的或用段超越前缀指定的段寄存器中。的或用段超越前缀指定的段寄存器中。n8086设计了多种存储器寻址方式设计了多种存储器寻址方式1、直接寻址方式、直接寻址方式2、寄存器间接寻址方式、寄存器间接寻址方式3、寄存器相对寻址方式、寄存器相对寻址方式4、基址变址寻
48、址方式、基址变址寻址方式5、相对基址变址寻址方式、相对基址变址寻址方式第73页,讲稿共85张,创作于星期一74直接寻址方式n有效地址在指令中直接给出有效地址在指令中直接给出n默默认认的的段段地地址址在在DS段段寄寄存存器器,可可使使用用段段超超越越前缀改变前缀改变MOV AX,2000H;AXDS:2000H;指令代码:指令代码:A10020MOV AX,ES:2000H;AXES:2000H;指令代码:指令代码:26A10020第74页,讲稿共85张,创作于星期一75(寄存器)间接寻址方式n有有效效地地址址存存放放在在基基址址寄寄存存器器BX或或变变址址寄寄存器存器SI、DI中。中。n默默认
49、认的的段段地地址址在在DS段段寄寄存存器器,可可使使用用段段超越前缀超越前缀MOV AX,SI;AXDS:SI第75页,讲稿共85张,创作于星期一76(寄存器)相对寻址方式n有有效效地地址址是是寄寄存存器器内内容容与与有有符符号号8位位或或16位位位位移移量量之之和和,寄寄存存器器可可以以是是BX、BP或或SI、DI。有效地址有效地址BX/BP/SI/DI8/16位位移量位位移量n段段地地址址对对应应BX/SI/DI寄寄存存器器默默认认是是DS,对对应应BP寄寄存存器器默默认认是是SS;可可用用段段超超越越前前缀改变。缀改变。MOV AX,DI+06H;AXDS:DI+06HMOV AX,BP
50、+06H;AXSS:BP+06H第76页,讲稿共85张,创作于星期一77基址变址寻址方式n有有效效地地址址由由基基址址寄寄存存器器(BX或或BP)的的内内容容加上变址寄存器(加上变址寄存器(SI或或DI)的内容构成:的内容构成:有效地址有效地址BX/BPSI/DIn段段地地址址对对应应BX基基址址寄寄存存器器默默认认是是DS,对对应应BP基基址址寄寄存存器器默默认认是是SS;可可用用段段超超越越前前缀缀改变。改变。MOV AX,BX+SI;AXDS:BX+SIMOV AX,BP+DI;AXSS:BP+DIMOV AX,DS:BP+DI;AXDS:BP+DI第77页,讲稿共85张,创作于星期一7