指令系统和寻址方式.ppt
第3章 指令系统和寻址方式,指令和指令系统寻址方式80 x86的指令系统简介,3.1 指令和指令系统,指令由操作码和操作数组成。操作码说明计算机要执行的操作,而操作数是在指令执行过程中所需要的操作数。操作数可以是操作数本身,也可以是操作数地址或是与操作数有关的其他信息。一般格式,代码指令的格式当一条汇编指令译成代码指令时,由汇编指令中的操作码和操作数共同决定代码指令的格式。对8086,代码指令所占字节16不等。第1个字节固定为操作码(OPCODE),其余字节为操作数。操作数字节的确定与指令的寻址方式有关。,汇编指令的书写形式,格式name operation operand;comment名字项(name):可以是标号或变量,表示本语句的符号地址。标号在代码段中定义,后跟冒号。变量在数据段或附加数据段中定义,后面不跟冒号。名字项组成:字母打头的字符串组成。包含字符(AZ,09,_,?,$,等),如MainLoop,Calc_long_sum。单独的$或?有特殊含义,不能做符号名。保留字不能用在名字项。,操作项(operation):可以是指令、伪指令、宏指令的助记符。操作数项(operand):可以是一个或多个表达式组成,多个操作数之间用逗号分隔。操作数可能是一个或多个,也可能没有。算术操作符:+,-,*,/,MOD逻辑操作符:AND,OR,XOR,NOT关系操作符:EQ,NE,LT,GT,GE其他操作符,操作数的主要类型,立即操作数可采用数制:二、八、十、十六进制,后缀分别为B,Q或O,D,H若十六进制以字母开头,必须加前导“零”。寄存器操作数寄存器的内容参加运算或存放结果。存储器操作数指内存某地址的字节、字、双字等是指令的处理对象,这时必须把处理对象取出或送入相应地址。,有效地址和段超越,存储单元的物理地址由两部分组成:段寄存器保存的段基值,偏移地址。在8086/8088的各种寻址方式中,寻找存储单元所需的偏移地址,称为有效地址,用EA表示。不同的寻址方式,组成有效地址EA的各部分内容也不一样,寻址方式主要是EA如何计算与寻找的问题。,存储器存取时的默认段寄存器,一般情况下,使用寻址方式中规定的默认段寄存器来确定段的基地址。指令中的操作数若不在原默认的区段内,必须在指令中指定段寄存器,这称为段超越。如MOV AL,ES:2000H教材P25表4-1,3.2 寻址方式,8086的寻址方式80 x86 新增的寻址方式 与转移地址有关的寻址方式注:重点介绍第1种,其他可放在后面讲。,1.8086的寻址方式,与数据有关的寻址方式:以 MOV 指令为例 立即寻址 MOV AX,3069H寄存器寻址 MOV AL,BH直接寻址 MOV AX,2000H 寄存器间接寻址 MOV AX,BX 寄存器相对寻址 MOV AX,COUNT SI 基址变址寻址 MOV AX,BP DI 相对基址变址寻址 MOV AX,MASK BX SI,附:MOV 指令格式:MOV 目的操作数,源操作数,(1)立即寻址方式 操作数在指令中直接给出 指令格式:MOV 目的操作数,立即数MOV AL,5MOV AH,0FFH MOV AX,3064H MOV AL,A说明:立即数存储在代码段中立即数只能用于源操作数字段 MOV 40H,AL“源”和“目的”的字长一致 MOV AH,3064H,(2)寄存器寻址方式 操作数在指定的寄存器中 MOV AX,BX MOV AL,BH说明:字节寄存器只有:AH AL BH BL CH CL DH DL16位:AX,BX,CX,DX,SI,DI,SP,BP32位(386以上):EAX,EBX,ECX,EDX,ESI,EDI,ESP,EBP“源”和“目的”的字长一致,MOV AH,BX CS 不能用 MOV 指令改变,MOV CS,AX,举例,说明下列指令采用的寻址方式和执行结果:MOV AX,1234HMOV BX,AXMOV AH,AL(AX)=?(BX)=?,(1)(AX)=1234H立即寻址。(2)(BX)=1234H,(AX)保持不变。寄存器寻址。(3)(AL)=34H,(AH)=34H最后结果:(AX)=3434H(BX)=1234H,(3)直接寻址方式*有效地址EA由指令直接给出 例:MOV AX,2000H EA=2000H,假设(DS)=3000H,那么PA=32000H。,*隐含的段为数据段 DS,有效地址EA存储在代码段中。*可使用段跨越前缀 MOV AX,ES:2000H*操作数地址可由变量(符号地址)表示,但要注意变量的属性VALUE DB 10MOV AH,VALUE MOV AX,VALUE MOV AX,WORD PTR VALUE,50,30,32000,AH AL,30,50,(AX)=3050H,(4)寄存器间接寻址*操作数的有效地址EA 在基址寄存器(BX/BP)或变址寄存器(SI/DI)中,而操作数在存储器中。MOV AX,BX PA=10H(DS)+(BX)MOV AX,ES:BX PA=10H(ES)+(BX)MOV AX,BP PA=10H(SS)+(BP)*有效地址EA只能是SI、DI、BX、BP,不允许使用AX、CX、DX 存放 EA,例如:MOV AX,CX*SRC 和 DST 的字长一致 MOV DL,BX;BX指示一个字节单元 MOV DX,BX;BX指示一个字单元*适于数组、字符串、表格的处理,例:MOV AX,BX指令的执行情况。若(DS)=2000H,(BX)=1000H,存储器中数据如图所示。,(1)有效地址EA=1000H,物理地址为21000H。,AX,AH,AL,(2)结果:(AX)=50A0H,表2.1寄存器间接寻址的地址形成,(5)寄存器相对寻址方式*(变址寻址)有效地址=(BX/BP)或(SI/DI)+位移disp操作数的书写形式BX+dispdispBXBX+disp例如:MOV AX,COUNTSI 或 MOV AX,COUNT+SI 假设(DS)=3000H,(SI)=2000H,COUNT=3000H,则:PA=35000H 假设(35000H)=1234H,那么(AX)=1234H*适于数组、字符串、表格的处理,表2.2 寄存器相对寻址的地址形成,(6)基址变址寻址方式*指令格式:MOV AX,BX DI MOV AX,BX+DI MOV AX,ES:BX SI*适于数组、字符串、表格的处理*必须是一个基址寄存器和一个变址寄存器的组合 MOV AX,BX BP MOV AX,SI DI,有效地址=,(BX)(SI)(BP)(DI),+,(7)相对基址变址寻址方式书写形式:BXSI+dispdispBXSIBX+SI+dispBX+SI+disp,有效地址=,(BX)(SI)8位(BP)(DI)16位,+,+,位移量,表2.3相对基址变址寻址的地址形成,访问存储器的方式,默认的段寄存器,可跨越的段寄存器,偏移地址,取指令 CS 无 IP堆栈操作 SS 无 SP一般数据访问 DS CS ES SS 有效地址EABP作为基址的寻址 SS CS DS ES BP串操作的源操作数 DS CS ES SS SI串操作的目的操作数 ES 无 DI,段 寄 存 器 的 使 用 规 定,8086寻址方式小结,综合练习,(1)写出下列内存操作数的物理地址表达式。MOV AL,BX+5MOV 3BP,AXMOV AX,BUFFERBX+DIMOV DL,ES:SI(2)教材P37,4,5,7(周一交作业),2.80 x86 新增的寻址方式,EA=(基址寄存器)+(变址寄存器)比例因子+位移量,(1)比例变址寻址方式 例:MOV EAX,COUNT ESI 4,(2)基址比例变址寻址方式 例:MOV ECX,EAX EDI 4(3)相对基址比例变址寻址方式 例:MOV EAX,TABLE EBP EDI 4 16位和32位寻址的差异地址成分 16位寻址 32位寻址基址寄存器 BX、BP 任何32位通用寄存器变址寄存器 SI、DI 除ESP外的任何32位通用寄存器比例因子 1 1、2、4、8,与转移地址有关的寻址方式(教材P33),用来确定无条件转移指令JMP及转子指令CALL的转移地址。无条件转移或子程序调用的目标转移地址分为段内和段间两种情形。段内:只改变逻辑地址中的IP的值,CS的值不会改变;段间:目标转移地址的CS与IP都要改变。,(1)段内直接寻址,目标(IP)=当前(IP)+位移量(8bit/16bit),当前IP总是指向下一条指令的首地址。当位移量为8位时,称为短转移(转移范围-128+127)。指令格式为:JMP SHORT DISP 当位移量为16位时,称为近转移(转移范围-32768+32767)。指令格式为:JMP NEAR DISP,(2)段内间接寻址 转向的有效地址是一个寄存器或字存储单元的内容。例:TABLE=20A2H(BX)=1256H(SI)=528EH(DS)=2000H(232F8H)=3280H(264E4H)=2450H JMP BX;(IP)=1256H JMP TABLEBX JMP WORD PTR TABLEBX;(IP)=3280H JMP BXSI JMP WORD PTR BXSI;(IP)=2450H,code1 segment jmp far ptr next code1 ends,code2 segment next:.code2 ends,(3)段间直接寻址 用指令中提供的转向段地址和偏移地址取代CS 和 IP 例:,(4)段间间接寻址 用存储器中的两个相继字的内容取代CS 和 IP(存储单元的地址可用存储器寻址方式得到)例:JMP DWORD PTR INTERS+BX PA=(DS)24+(BX)+INTERS(PA+1,PA)IP(PA+3,PA+2)CS,练习:教材P38,6,(1)IP目标=2BC0H+5119H=7CD9H(2)IP目标=2BC0H+0600H=31C0H(3)IP目标=2BC0H+098AH=354AH,3.3 80 x86的指令系统简介,数据传送指令算术指令逻辑指令串处理指令控制转移指令处理机控制与杂项操作指令,指令系统部分的学习方法,重点关注指令的汇编格式指令的基本功能指令支持的寻址方式指令的执行对标志位的影响指令的特殊要求学习方法将各类指令分散到后继章节讲授,以8086指令系统为重点。切忌死记硬背,结束,