微机原理第03章8086指令系统与寻址方式-寻址方式.ppt
第三章 8086指令系统与寻址方式,指令格式和寻址方式 8086指令系统,指令格式,寻址方式,3.1 指令格式和寻址方式,指令与指令系统,指令 指命令计算机完成某种基本操作的代码指令系统 指微处理器所固有的基本操作指令的集合指令的表示方式 机器码、助记符,3.1.1 指令格式,标号:操作码 操作数;注释,是指令操作的功能 不可缺省,是指令偏移地址的 名字 必须后跟“:”可以缺省,是指令所需的操作数 各操作数之间用“,”隔开 可以是0个、1个、多个,对指令功能加以说明 不参加指令的执行 注释必须用分号”;”开头 可以缺省,指令的基本构成,说明要执行的是什么操作,操作对象,常用有:1个(单操作数指令)2个(双操作数指令),操作码,操作数,操作数,指令举例:,ADD AX,SI+6,MOV AX,BX,操作码 操作数,INC BX,HLT,8086的操作数分类,立即数,寄存器操作数,存储器操作数,取值范围如下表:,MOV AX,0FA00H;正确MOV 8000H,DX;错误,立即数只能作为源操作数,1、立即数(常数),2、寄存器操作数,存放在4个通用寄存器、4个专用寄存器或4个段寄存器中的操作数,AX,BX,CX,DX,AH AL,BH BL,CH CL,DH DL,可以存放8位或16位操作数,只能存放16位操作数,只能存放16位操作数,不允许将立即数传送到段寄存器,SI,DI,BP,SP,CS,DS,ES,SS,3、存储器操作数,存储器操作数,字节字双字,124,类型,存储单元个数,一般不允许两个操作数同时为存储器操作数,立即数寻址,寄存器寻址,直接寻址,寄存器间接寻址,寄存器相对寻址,基址变址寻址,相对基址变址寻址,3.1.2 8086的寻址方式,寻址方式寻找操作数有效地址的方法寻址操作按照寻址方式求出操作数有效地址的过程,8086寻址方式,存储器寻址,表明到什么地方去找操作数,立即数寻址,定义操作数直接包含在指令中,这种方式叫立即数寻址方式特点执行速度快立即数只能是整数,8或16位,不能是其它类型的 数据立即数只能作为源操作数立即数寻址通常用于双操作数指令中,立即数寻址示例,存储器,操作码,02H,31H,AH,AL,代码段,AX,例:MOV AX,3102H;AX 3102H,演示,立即数寻址的指令操作过程,寄存器寻址,定义操作数包含在寄存器中,该寄存器名在指令中直接给出的寻址方式。特点执行速度快对16位操作数,寄存器可以为AX、BX、CX、DX、SI、DI、SP、BP、CS、DS、SS、ES 对位操作数,寄存器可以为AH、AL、BH、BL、CH、CL、DH、DL可以对源操作数、目标操作数或两者都采用寄存器寻址方式,注意:当指令中的源操作数和目标操作数均为寄存器时,必须采用同样长度的寄存器两个操作数不能同时为段寄存器目标操作数不能是代码段寄存器CS,寄存器寻址示例,MOV DX,AX;将AX的内容送到DX中,DH DL,AH AL,DX,AX,演示寄存器寻址的指令操作过程,寄存器寻址的指令操作过程,有效地址EA=基址+变址+偏移量,直接寻址 寄存器间接寻址寄存器相对寻址基址变址寻址相对基址变址寻址,存储器寻址,偏移地址,由基址寄存器BX、BP提供,由变址寄存器SI、DI提供,8位或16位的常量,直接寻址,直接寻址有效地址在指令中直接给出的寻址方式为了区别于立即数,有效地址用“”括起,EA=基址+变址+偏移量,例:MOV AX,2000H MOV AL,17H,操作数默认在数据段中,即默认段寄存器为DS若操作数在其它段,则必须使用段超越前缀指明相应段寄存器,例:MOV AX,2000H;AXDS:2000H MOV AX,ES:2000H;AXES:2000H,指令操作过程示例:MOV AX,3102H,设(DS)=2000H,(23102H)=CDH,(23103H)=ABH则操作数的物理地址为:20000H+3102H=23102H指令执行后:(AX)=ABCDH,操作码,02H,31H,AH,AL,23102H,CDH,ABH,存储器,代码段,数据段,.,演示,直接寻址的指令操作过程,EA=基址+变址+偏移量,寄存器间接寻址,寄存器间接寻址 有效地址=寄存器内容只有SI、DI、BX和BP可做间址寄存器,例:MOV AX,BX MOV CL,DI MOV AX,DX MOV CL,AX,EA=,(BX)(BP)(SI)(DI),例:MOV AX,SI;AXDS:SI MOV AX,BP;AXSS:BP,设(DS)=6000H,(SI)=1200H,(61200H)=44H,(61201H)=33H则指令执行后,(AX)=3344H,44H,33H,6000,1200,DS,SI,60000,61200,61200H,AX,存储器,数据段,+),1200,AL,AH,指令操作过程示例:MOV AX,SI,演示,寄存器间接寻址的指令操作过程,一个错误在哪?,寄存器相对寻址,寄存器相对寻址有效地址=寄存器内容+偏移量,EA=,(BX)(BP)(SI)(DI),+,8位16位,偏移量,EA=基址+变址+偏移量,(1)若EA=,BX,SI,DI,+8位或16位偏移量,则操作数逻辑地址为 DS:EA,(2)若EA=BP+8位或16位偏移量,则操作数逻辑地址为 SS:EA,例:MOV AX,BX+1000H;AXDS:BX+1000H MOV AX,BP+1000H;AXSS:BP+1000H,应用:适于数组、字符串、表格的处理,三种表示形式:MOV AX,BX+6MOV AX,6BXMOV AX,BX+6,设(DS)=6000H,(BX)=1000H,DATA=2A00H,(63A00H)=66H,(63A01H)=55H则指令执行后:(AX)=5566H,操作码,00H,2AH,DS 60000,BX 1000,+DATA 2A00,63A00,63A00H,AH,AL,AX,代码段,数据段,.,.,.,66H,55H,指令操作过程示例:MOV AX,DATABX,演示,寄存器相对寻址的指令操作过程,一个错误在哪?,EA=基址+变址+偏移量,基址变址寻址,基址变址寻址 有效地址=基址寄存器内容+变址寄存器内容,BX:操作数的段基址默认在DS中BP:操作数的段基址默认在SS中,例1:MOV AX,BX+SI MOV AX,BP DI MOV AX,BX BP MOV AX,DI SI,基址变址寻址示例,例2:MOV AX,BX+SI;AXDS:BX+SI MOV AX,BP+DI;AXSS:BP+DI MOV AX,DS:BP+DI;AXDS:BP+DI,83000,操作码,DS 80000,BX 2000,+SI 1000,83000H,AH,AL,AX,代码段,数据段,.,.,.,YYH,XXH,设(DS)=8000H,(BX)=2000H,(SI)=1000H指令执行后:(AX)=XXYYH,指令操作过程示例:MOV AX,BXSI,演示,基址变址寻址的指令操作过程,一个错误在哪?,EA=基址+变址+偏移量,相对基址变址寻址,相对基址变址寻址有效地址=基址寄存器内容+变址寄存器内容+偏移量,BX:操作数的段基址默认在DS中BP:操作数的段基址默认在SS中,MOV AX,BASE SI BXMOV AX,BX+BASE SIMOV AX,BX+SI+BASEMOV AX,BX BASE SIMOV AX,BX+SI BASE,相对基址变址寻址示例,设(DS)=8000H,(BX)=2000H,(DI)=1000H,DATA=200H则指令执行后(AX)=XXYYH,83200,83200H,AH,AL,AX,操作码,代码段,数据段,.,.,.,YYH,XXH,DS,80000,BX,2000,DI,1000,DATA,0200,+,指令操作过程示例:MOV AX,DATADIBX,演示,相对基址变址寻址的指令操作过程,一个错误在哪?,应用:适用于二维数组的处理,基址寄存器,数组首地址,变址寄存器,数组元素行址,位移量,数组元素列址,(偏移地址),相对基址变址寻址应用,EA=基址+变址+偏移量,直接寻址 默认DS段寄存器间接寻址 寄存器相对寻址基址变址寻址相对基址变址寻址,BX,SI,DI:默认DS段;BP:默认SS段,BX:默认DS段;BP:默认SS段,基址由BX,BP提供,变址由SI,DI提供,偏移量为8位或16位常量,存储器寻址小结,第三次作业:P99 3.17,