《2022年微机原理电子教案:指令格式及寻址方式》由会员分享,可在线阅读,更多相关《2022年微机原理电子教案:指令格式及寻址方式(7页珍藏版)》请在金锄头文库上搜索。
1、十六位微机原理及接口技术第1页指令格式及寻址方式4-1-1 8086/8088 的通用指令格式机器语言指令是由二进制代码组成。一条指令是由操作码与操作数字段构成,其一般格式为:操作码字段 + 操作数字段。操作码字段指明计算机所要执行的操作(即功能);操作数字段指出在指令执行过程中所需要的操作数。比如指令指明作加法,则操作数就是加数,而且有两个。计算机的任何操作不容有模糊的地方。指令中的操作数同样如此,指令中不仅要指出有几个操作数,还要指明每个操作数到底在什么地方。例如: ADD AX, BX 其中 ADD 是操作码助记符,指明做加法运算:AX和 BX 是操作数助记符,指出被加数和加数,AX 还
2、存放相加后的结果(原来被加数被冲掉)。对有操作数的指令,在执行指令所规定的操作之前首先要寻找操作数。操作数可放在CPU寄存器中,或内存单元中,或I/O 端口内, 寻找这些操作数的方式称为寻址方式,即指令中用于说明操作数或操作数所在地址的方法。汇编语言是一种很接近于机器语言的低级计算机语言,在汇编语言中,助记符代替了操作码,而操作数部分也象机器语言一样需要指明具体位置,具有机器语言相应的寻址方式,当然表现形式不是二进制符号,而是数值、寄存器名、变量等。为了更好的理解和掌握寻址方式及其用法,先对后面例子中使用的一条汇编语言指令做简单说明。 MOV 指令是汇编语言最常用的指令之一,指令的基本格式是:
3、MOV d1,d2 该指令的功能是把操作数d2 的值(如果在内存或寄存器中则取出它的值)传送到操作数d1 指明的地方,相当于高级语言中的赋值语句功能。操作数d1 的寻址方式可以是内存型,也可以是寄存器型,但不能是立即数。汇编语言的指令根据所带有的操作数的数量分为无操作数指令、单操作数指令、双操作数指令三类。 MOV 等双操作数指令中绝大多数都是把写在前面的操作数d1 作为存放操作结果的目的地,所以称为目的操作数,而d2 称为源操作数。4-1-2 立即寻址(立即数)特点:操作数直接存放在指令中,作为指令的一部分存放在代码段里,这种操作数称为立即寻址。操作数可以是各种数制下的数。一般常用于给寄存器
4、或存储单元赋初值(即初始化),立即数只能用于源操作数字段,不能用于目的操作数字段。例 4-1 : MOV AX,5 ; ( AX ) 5 十进制形式的立即数 MOV AX,1234H ; (AX ) 1234H 十六进制形式的立即数MOV AL ,11001101B ; (AL) 11001101B 二进制形式的立即数MOV AL , 3; (AL) 33H 字符形式的立即数精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 1 页,共 7 页十六位微机原理及接口技术第2页立即数还有一些比较复杂的情况。如果操作数是由数值和运算符构成的表达式,汇编程序在
5、翻译时会计算出表达式的值,并把结果以立即数形式翻译到机器指令中。比如: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 )
6、=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 存储器操作数寻址内存
7、型寻址方式是指参与操作的数据在内存中,因此必须指明操作数究竟在内存的什么地方,即指出内存的逻辑地址。存储器是分段管理的,要找到操作数,必须指明操作数所在的段(段基址由段寄存器指明)及段内偏移地址(以有效地址EA的形成方式指出) 。1 直接寻址方式特点:指令中指接给出操作数在段内的偏移量,段基址隐含给出或用段前缀指明。该寻址方式适用于处理单个变量。一般操作数存放在数据段,故操作数的物理地址为:物理地址 =(DS ) 16 + EA =(段基址的寄存器) 16 + 偏移地址例 4-3 :以知:(DS )=4000H,1000H=3355H MOV AX,2000H 执行后:(AX ) =3355H
8、 物理地址 =40000H+1000H=41000H EA=1000H,寻址过程如图4-1 所示。存储器精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 2 页,共 7 页十六位微机原理及接口技术第3页 AX 41000H 图 4-1 例 4-3 直接寻址示意图说明:( 1)偏移地址( EA )在指令中直接给出。指令中缺省段寄存器说明,段基址在DS段寄存器中;否则在指令中需对段寄存器加以说明。例如: MOV AX ,ES :2300H ( 2)可用符号地址代替数值地址,例如:MOV AX ,VALUE ;此时, VALUE 为存放操作数单元的符号地址
9、,即变量名,也可写成:MOV AX ,VALUE;两者等价。2 寄存器间接寻址特点:操作数有效地址在基址寄存器BP 、DI 中,而操作数则在存储器中。它适用于表格处理,执行完一条指令后,只需修改寄存器内容就可取出表格中的下一项元素。(1)令中的有效地址(EA )存放在BX ,SI, DI 寄存器中,则操作数在数据段中,即操作数的物理地址为:(BX )物理地址 =16D( DS )+ (SI)(DI)(2)若有效地址存放在BP寄存器,则操作数在堆栈段中,即操作数物理地址为:物理地址 =(SS )16+(BP )(3)可使用段跨越前缀来取得其他段中的数据,如:MOV AX ,ES : BX 注意:
10、 MOV AX ,BX; (AX) ( BX )与上面的 MOV AX , BX 含义不同。例 4-4 :已知:(DS )=1000H, ( BX )=0A00H MOV AX,BX 物理地址 =10000H+0A00H=10A00H 执行后:(AX )=4422H ,如图 4-2 所示。存储器00 20 55 33 3355 代码段数据段精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 3 页,共 7 页十六位微机原理及接口技术第4页10000H AX DS+BX 10A00H 图 4-2 例 4-4 寄存器间接寻址示意图3 寄存器相对寻址其特点:
11、 操作数的有效地址是一个基址寄存器或变址寄存器的内容和指令中指定的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=2
12、1050H 执行后:(AX )=6688H,如图 4-3 所示。该寻址方式可使用段跨越前缀,例如:MOV DL ,ES :STRINGSI 存储器OP 22 44 4422 代码段数据段精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 4 页,共 7 页十六位微机原理及接口技术第5页 20000H DISP AX 21000H 21050H 图 4-3 例 4-5 寄存器相对寻址示意图4 基址变址寻址特点:操作数的有效地址是一个基址寄存器的一个变址寄存器内容之和。(SI)物理地址 =(DS ) 16D+ (BX )+ (DI) SI)物理地址 =(S
13、S ) 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为段寄存器。因此物理地址
14、为:(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 OP OP 00 30 88 66 6688 代码段SI 数据段精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 5 页,共 7 页十六位微机原理及接口技术第6页或 MOV AX ,BUF
15、F+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,
16、表示将AL的内容输出到由(DX) 指出的端口中去。在 16 位 PC机中 ,仅用 A9A0 十条地址线表示I/O 端口 ,所以 DX 间接寻址的范围为01023(即03FFH)。本节小结本节介绍了微型计算机的指令格式、寻址方式。通过本节学习,读者应该熟悉指令的格式,了解指令中各字段的功能;掌握各种寻址方式极其应用,学会有效地址的计算方法;练习1、 给定 BX=874EH ,SI=2A9B ,位移量DISP=8117H,试确定在以下各寻址方式下的有效地址是什么?(1)立即寻址(无)(2)直接寻址(8117)(3)使用 BX 的寄存器寻址(无)(4)使用 BX 的寄存器间接寻址(874EH)2、
17、假定 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 直接寻址(DS)X16+200H(4)MOV AX ,VAL 直接寻址(DS)X16+0100H (5)MOV AX ,BX 寄存器间接寻址(DS)X16+0200H (6)MOV AX ,ES:BX 寄存器间接寻址(ES)X16+0200H (7)MOV AX ,BP 寄存器间接寻址(SS)
18、X16+0200H (8)MOV AX ,SI 寄存器间接寻址(DS)X16+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 寄存器的内容。精选学习资料
19、- - - - - - - - - 名师归纳总结 - - - - - - -第 6 页,共 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 56C2H 精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 7 页,共 7 页