2022年微机原理电子教案:指令格式及寻址方式.docx
精选学习资料 - - - - - - - - - 十六位微机原理及接口技术 第1页指令格式及寻址方式§ 4-1-1 8086/8088 的通用指令格式机器语言指令是由二进制代码组成;一条指令是由操作码与操作数字段构成,其一般格式为:操作码字段 + 操作数字段;操作码字段指明运算机所要执行的操作(即功能);操作数字段指出在指令执行过程中所需要的操作数;比如指令指明作加法,就操作数就是加数,而且有两个;运算机的任何操作不容有模糊的地方;指令中的操作数同样如此,指令中不仅要指出有几个操作数,仍要指明每个操作数到底在什么地方;例如: ADD AX, BX 其中 ADD 是操作码助记符,指明做加法运算:AX和 BX 是操作数助记符,指出被加数和加数,AX 仍存放相加后的结果(原先被加数被冲掉);对有操作数的指令,在执行指令所规定的操作之前第一要查找操作数;操作数可放在 CPU寄存 器中,或内存单元中,或 I/O 端口内, 查找这些操作数的方式称为寻址方式,即指令中用于说明操 作数或操作数所在地址的方法;汇编语言是一种很接近于机器语言的低级运算机语言,在汇编语言中,助记符代替了操作码,而操作数部分也象机器语言一样需要指明详细位置,具有机器语言相应的寻址方式,当然表现形式 不是二进制符号,而是数值、寄存器名、变量等;为了更好的懂得和把握寻址方式及其用法,先对后面例子中使用的一条汇编语言指令做简洁说 明; MOV指令是汇编语言最常用的指令之一,指令的基本格式是:MOV d1,d2 该指令的功能是把操作数d2 的值(假如在内存或寄存器中就取出它的值)传送到操作数d1 指明的地方,相当于高级语言中的赋值语句功能;操作数 器型,但不能是立刻数;d1 的寻址方式可以是内存型,也可以是寄存汇编语言的指令依据所带有的操作数的数量分为无操作数指令、单操作数指令、双操作数指令三类; MOV等双操作数指令中绝大多数都是把写在前面的操作数 以称为目的操作数,而 d2 称为源操作数;§ 4-1-2 立刻寻址(立刻数)d1 作为存放操作结果的目的地,所特点:操作数直接存放在指令中,作为指令的一部分存放在代码段里,这种操作数称为立刻寻 址;操作数可以是各种数制下的数;一般常用于给寄存器或储备单元赋初值(即初始化)目的操作数字段;,立刻数只能用于源操作数字段,不能用于名师归纳总结 例 4-1 : MOV AX,5 ;( AX) 5 十进制形式的立刻数第 1 页,共 7 页 MOV AX,1234H ;(AX) 1234H 十六进制形式的立刻数MOV AL ,11001101B ;(AL) 11001101B 二进制形式的立刻数MOV AL ,3;(AL) 33H 字符形式的立刻数- - - - - - -精选学习资料 - - - - - - - - - 十六位微机原理及接口技术 第2页立刻数仍有一些比较复杂的情形;假如操作数是由数值和运算符构成的表达式,汇编程序在翻译时会运算出表达式的值,并把结果以立刻数形式翻译到机器指令中;比如:MOV AL ,3-30H ;表达式运算结果是3,并以 3 作为立刻寻址方式的操作数; MOV 200H,AX ;(错误的,立刻数不能作目的操作数)立刻数可是二进制、十进制、十六进制;§ 4-1-3 寄存器寻址特点:操作数在某寄存器中,存取这类操作数在CPU内部进行,所以执行速度快;存放 16 位操作数的寄存器有:AX,BX, CX,DX,BP,SP,SI ,DI;存放 8 位操作数的寄存器有: AH,AL,BH,CH,CL,DH,DL;CS、DS、SS、ES-16 位的段寄存器例 4-2 :以知:(BX)=1234H MOV AX,BX ;(AX)( BX)执行后( AX)=1234H,(BX)不变;下面指令中的操作数都是寄存器寻址方式MOV AL,BL MOV AL ,DH MOV BP ,SP MOV AX ,SI MOV AX,CS MOV DS ,DX 留意 :指令指针IP 和标志寄存器PSW以及全部标志位的代号CF、ZF、OF等都不能作为寄存器寻址方式的操作数,不答应显现在汇编语言的任何指令中;另外,8088 汇编语言仍规定,不答应用 MOV等具有赋值功能的指令修改 CS的值,在 8088 汇编语言中 MOV CS, AX 不符合语法规章;§ 4-1-4 储备器操作数寻址内存型寻址方式是指参加操作的数据在内存中,因此必需指明操作数到底在内存的什么地方,即指出内存的规律地址;储备器是分段治理的,要找到操作数,必需指明操作数所在的段(段基址由段寄存器指明)及段内偏移地址(以有效地址 1 直接寻址方式EA的形成方式指出) ;特点:指令中指接给出操作数在段内的偏移量,段基址隐含给出或用段前缀指明;该寻址方式适用于处理单个变量;一般操作数存放在数据段,故操作数的物理地址为:物理地址 =(DS)× 16 + EA =(段基址的寄存器)× 16 + 偏移地址例 4-3 :以知:(DS)=4000H,1000H=3355H MOV AX,2000H 执行后:(AX) =3355H 物理地址 =40000H+1000H=41000H EA=1000H,寻址过程如图 4-1 所示;储备器名师归纳总结 - - - - - - -第 2 页,共 7 页精选学习资料 - - - - - - - - - 十六位微机原理及接口技术 第3页 AX 55 41000H 00 代码段20 数据段3355 33 图 4-1 例 4-3 直接寻址示意图说明:( 1)偏移地址( EA)在指令中直接给出;指令中缺省段寄存器说明,段基址在DS段寄存器中;否就在指令中需对段寄存器加以说明;例如: MOV AX,ES:2300H ( 2)可用符号地址代替数值地址,例如:MOV AX,VALUE ;此时, VALUE 为存放操作数单元的符号地址,即变量名,也可写成:2 寄存器间接寻址MOV AX,VALUE;两者等价;特点:操作数有效地址在基址寄存器 BP、DI 中,而操作数就在储备器中;它适用于表格处理,执行完一条指令后,只需修改寄存器内容就可取出表格中的下一项元素;(1)令中的有效地址(EA)存放在 BX,SI , DI 寄存器中,就操作数在数据段中,即操作数的物理地址为:(BX)物理地址 =16D× ( DS)+ (SI )(DI)(2)如有效地址存放在BP寄存器,就操作数在堆栈段中,即操作数物理地址为:物理地址 =(SS)16+(BP)(3)可使用段跨过前缀来取得其他段中的数据,如:MOV AX,ES: BX 留意: MOV AX,BX; (AX) ( BX)与上面的 MOV AX, BX 含义不同;例 4-4 :已知:(DS)=1000H,( BX)=0A00H MOV AX,BX 物理地址 =10000H+0A00H=10A00H 执行后:(AX)=4422H ,如图 4-2 所示;储备器名师归纳总结 - - - - - - -第 3 页,共 7 页精选学习资料 - - - - - - - - - 十六位微机原理及接口技术 第4页OP × ×代码段10000H AX 22 DS+BX 4422 10A00H 数据段44 图 4-2 例 4-4 寄存器间接寻址示意图3 寄存器相对寻址其特点: 操作数的有效地址是一个基址寄存器或变址寄存器的内容和指令中指定的 8 位或 16 位位移量(即偏移量)之和;适用于表格处理,修改基址或变址寄存器的内容来取得表格中的元素;一般形式:(BX)物理地址 =16D × ( DS)+ SI) + 8位位移量或16 位位移量(DI)物理地址 =(SS)× 16D+( BP)+8 位位移量或 16 位位移量例 4-5 :已知(DS)=2000H,( SI )=50H,其中 DISP 为 16 位位移量的符号地址,其值 DISP=1000H; MOV AX,DISPSI 或 NOV AX,DISP+SI 物理地址 =20000+1000H+50H=21050H 执行后:(AX)=6688H,如图 4-3 所示;该寻址方式可使用段跨过前缀,例如:MOV DL,ES:STRINGSI 储备器名师归纳总结 - - - - - - -第 4 页,共 7 页精选学习资料 - - - - - - - - - 十六位微机原理及接口技术 第5页OP OP 代码段00 30 20000H DISP 66AX SI 21000H 21050H 88 数据段88 66 图 4-3 例 4-5 寄存器相对寻址示意图4 基址变址寻址 特点:操作数的有效地址是一个基址寄存器的一个变址寄存器内容之和;(SI)物理地址 =(DS)× 16D+(BX)+ (DI) SI)物理地址 =(SS)× 16D+( BP )+ (DI)适用表格或数组处理,表格或数组首地址可存放在基址寄存器中;例 4-6 :已知:(DS)=3000H,(BX) =1100H,(SI )=0050H MOV AX,BXDI 或 MOV AX,BI+DI EA=1100H+0050H=1150H 物理地址 =30000H+1150H=31150H 执行后:(AX)=5678H 5 相对基址变址寻址 特点:操作数据有效地址是一个基址寄存器与一个变址寄存器的内容之和再加上 8 位或 16 位位 移量;同样,当基址寄存器为 BX 时,使用 DS 为段寄存器;而当基址寄存器为 BP 时,就使用 SS为段寄存器;因此物理地址为:(SI ) 8位位移量物理地址 =(DS)× 16D+(BX)+ + (DI) 16位位移量(SI ) 8位物理地址 =(SS)× 16D+(BP)+ + (DI) 16位例 4-7 :已知( DS)=5000H,(BX)=3000H,(SI)=2000H,BUFF=0350H MOV AX,BUFFSIBX 或 MOV AX ,BUFFBXSI 名师归纳总结 - - - - - - -第 5 页,共 7 页精选学习资料 - - - - - - - - - 十六位微机原理及接口技术 第6页或 MOV AX ,BUFF+SI+BX 物理地址 =(DS)× 16D+(BX) +(SI) +BUFF =50000H+3000+2000+0305=55350H 执行后:(AX) =6684H,如图 4-5 ;该寻址方式为堆栈和多重表格处理供应了便利,无段跨过前缀;§ 4-1-5 I/O 端口寻址1. 直接端口寻址方式 I/O 端口地址以 8 位立刻数方式在指令中直接给出 . 例如 IN AL,PORT; PORT为寻址端口编号 , 只能在 0255 范畴之内 . 2. 间接端口寻址方式I/O 地址超过 8 位时 , 应放在 DX寄存器中 , 即通过 DX 间接寻址 , 所能寻址的端口编号为 065535;如 OUT DX,AL,表示将 AL的内容输出到由DX 指出的端口中去;在 16 位 PC机中 ,仅用 A9 A0 十条地址线表示I/O 端口 ,所以 DX 间接寻址的范畴为01023即03FFH;本节小结本节介绍了微型运算机的指令格式、寻址方式;通过本节学习,读者应当熟识指令的格式,了解指令中各字段的功能;把握各种寻址方式极其应用,学会有效地址的运算方法;练习1、 给定 BX=874EH ,SI=2A9B ,位移量( 1)立刻寻址(无)(无)(2)直接寻址(8117)(3)使用 BX 的寄存器寻址DISP=8117H,试确定在以下各寻址方式下的有效地址是什么?(4)使用 BX 的寄存器间接寻址(874EH)2、 假定 DS=4000H , ES=4100H, SS=3500H, SI=00B0H ,BX=0200H , BP=0020H ,VAL=0100H ,试指出以下源操作数字段的寻址方式是什么?其物理地址是什么?(1)MOV AX ,0BCH 立刻 无(2)MOV AX ,BX 寄存器 无( 3)MOV AX , 200H 直接寻址 DSX16+200H( 4)MOV AX , VAL 直接寻址 DSX16+0100H ( 5)MOV AX , BX 寄存器间接寻址 DSX16+0200H ( 6)MOV AX , ES: BX 寄存器间接寻址 ESX16+0200H ( 7)MOV AX ,BP 寄存器间接寻址 SSX16+0200H ( 8)MOV AX ,SI 寄存器间接寻址 DSX16+0200H ( 9)MOV AX , BX+06H ( 10) MOV AX , VALBX ( 11) MOV AX , BXSI ( 12) MOV AX , VALBX+SI 3、 现有 DS=4000H , BX=0300H , SI=0002H, (40300H)=01H, ( 40301H)=23H,(40302H)=45H,( 40303H) =67H ,(41400H) =3BH ,( 41401H) =7EH ,(41402H) =C2H ,( 41403H) =56H,试指出以下各名师归纳总结 条指令执行完毕后AX 寄存器的内容;第 6 页,共 7 页- - - - - - -精选学习资料 - - - - - - - - - 名师归纳总结 十六位微机原理及接口技术56C2H 第7页第 7 页,共 7 页(1)MOV AX ,1400H 1200H (2)MOV AX ,BX 0300H (3)MOV AX ,1400H 40000+1400=41400 7E3BH (4)MOV AX ,BX 40000+0300=40300 2301H (5)MOV AX ,1100BX 40000+0300+1100=41400 7E3BH (6)MOV AX ,BXSI 40000+0300+0002=40302 6745H (7)MOV AX ,1100BX+SI 40000+0300+0002+1100=41402 - - - - - - -