微机原理第四章_第1页
微机原理第四章_第2页
微机原理第四章_第3页
微机原理第四章_第4页
微机原理第四章_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第第4章章 80 x86指令系统指令系统 每种计算机都有一组指令集供用户使用。这每种计算机都有一组指令集供用户使用。这组指令集就称为计算机的组指令集就称为计算机的指令系统指令系统。指令系统是。指令系统是表征一台计算机性能的重要因素,它的格式与规表征一台计算机性能的重要因素,它的格式与规模将直接影响到机器的硬件结构。模将直接影响到机器的硬件结构。 指令系统中的每一条指令都对应着微处理器指令系统中的每一条指令都对应着微处理器要完成的一种规定的操作,这在设计微处理器时要完成的一种规定的操作,这在设计微处理器时就事先规定好了。就事先规定好了。 指令系统是编写程序的基础,因此很好地掌指令系统是编写程序的

2、基础,因此很好地掌握指令系统的有关知识是后续进一步学习的关键。握指令系统的有关知识是后续进一步学习的关键。8086 8088指令系统指令系统8086808680888088指令系统采用指令系统采用变字长的指令变字长的指令格式格式,不可能用一个简单的规则来描述指令编,不可能用一个简单的规则来描述指令编码格式。通常指令中包含操作码和操作数两部码格式。通常指令中包含操作码和操作数两部分。分。操作码操作码表示计算机执行什么操作,表示计算机执行什么操作,操作数操作数可能指明了参与操作的数的本身,或规定了操可能指明了参与操作的数的本身,或规定了操作数的地址。如何寻找操作数,这就是指令的作数的地址。如何寻找

3、操作数,这就是指令的寻址方式寻址方式,也是由指令编码格式指出。,也是由指令编码格式指出。4.1 8086/80884.1 8086/8088指令编码格式指令编码格式以以80868088指令编码格式为例,其指令由指令编码格式为例,其指令由16个字节组成,它包括操作码(第一字节)、寻址方式个字节组成,它包括操作码(第一字节)、寻址方式(第二字节)和操作数(第三到第六字节)三部分组(第二字节)和操作数(第三到第六字节)三部分组成。成。操作码部分 寻址方式部分操作数部分WDOP7 6 5 4 3 2 1 0017 2寄存器操作数为目的操作数寄存器操作数为源操作数D=1D=000000101001110

4、0101110111ALCLDLBLAHCHDHBHAXCXDXBXSPBPSIDIregW=0 W=1寄存器寻址BX+SI+disp8BX+ DI+disp8BP+SI+disp8BP+DI+disp8SI+disp8DI+disp8BP+disp8BX+disp8BX+SI+disp16BX+ DI+disp16BP+SI+disp16BP+DI+disp16SI+disp16DI+disp16BP+disp16BX+disp16BX+SIBX+ DIBP+SIBP+DISIDI直接地址BX000001010011100101110111ALCLDLBLAHCHDHBHAXCXDXBXSP

5、BPSIDIW=0W=1寄存器寻址mod=11modr / m存储器寻址有效地址的计算公式mod=00mod=01mod=10双操作数指令中各字段定义000000DWmodr/mregDisp-L000000 1 10010011010001000Disp-H00001000例例4.1 写出下面指令的机器语言编码。写出下面指令的机器语言编码。 MOV BXDI6,CL100010DWmodr/mregdisp8100010 0 011111010010010011000 1000 0100 1001 1111 1010例例4.1 写出下面指令的机器语言编码。写出下面指令的机器语言编码。 ADD

6、 AX,BXDI + 08260000 0011 1000 0001 0010 0110 0000 1000 指令中的操作数直接存放在机器代码中,指令中的操作数直接存放在机器代码中,紧跟在操作码之后(操作数作为指令的一紧跟在操作码之后(操作数作为指令的一部分存放在操作码之后的主存单元中)部分存放在操作码之后的主存单元中) 这种操作数被称为这种操作数被称为立即数立即数imm可以是可以是8位数值(位数值(00HFFH)也可以是也可以是16位数值(位数值(0000HFFFFH) 立即数寻址方式常用来给寄存器和存储单立即数寻址方式常用来给寄存器和存储单元赋值,多以常量形式出现元赋值,多以常量形式出现A

7、L操作码字节80H程序存储器指令码操作码字节12H程序存储器AL指令码AH34H12H34H80H80H12H34HMOV AL, 80HMOV AX, 1234H 操作数存放在操作数存放在CPU的内部寄存器的内部寄存器reg中:中: 8位寄存器位寄存器r8: AH、AL、BH、BL、CH、CL、DH、DL 16位寄存器位寄存器r16: AX、BX、CX、DX、SI、DI、BP、SP 4个段寄存器个段寄存器seg: CS、DS、SS、ES 寄存器名表示其内容(操作数)寄存器名表示其内容(操作数)2)寄存器寻址方式)寄存器寻址方式AXCX例如:例如: MOV AX, CX3)存储器寻址方式存储器

8、寻址方式存储器寻址方式的操作数存放在存储器单存储器寻址方式的操作数存放在存储器单元中。因此,要存取操作数就必须知道其存储元中。因此,要存取操作数就必须知道其存储器的单元地址。在指令中可以直接给出或间接器的单元地址。在指令中可以直接给出或间接给出操作数的地址,以达到存取操作数的目的。给出操作数的地址,以达到存取操作数的目的。指令中给出的地址只是操作数的有效地址指令中给出的地址只是操作数的有效地址(EAEA),并且是放在方括号(),并且是放在方括号(“ ”)中。)中。若要从存储器中存取操作数还须得到实际的地若要从存储器中存取操作数还须得到实际的地址(物理地址)。址(物理地址)。物理地址段基址左移四

9、位有效地址物理地址段基址左移四位有效地址物理地址CSDSSSES 10H + EA物理地址物理地址 10H 有效地址可以由以下三种地址分量组成:有效地址可以由以下三种地址分量组成: 位移量位移量:它是存放在指令中的一个:它是存放在指令中的一个8 8位或位或1616位的数。位的数。 基基 址址:它是存放在基址寄存器:它是存放在基址寄存器BXBX或或BPBP中的内容。中的内容。 变变 址址:它是存放在变址寄存器:它是存放在变址寄存器SISI或或DIDI中的内容。中的内容。 对于某条具体指令,这三个地址分量可有不对于某条具体指令,这三个地址分量可有不同的组合。正是因为这三种地址分量有不同的组同的组合

10、。正是因为这三种地址分量有不同的组合,才使得对存储器操作数的寻址产生了若干种合,才使得对存储器操作数的寻址产生了若干种不同的方式。不同的方式。直接寻址方式直接寻址方式 直接寻址方式的有效地址在指令中直接直接寻址方式的有效地址在指令中直接给出给出 默认的段地址在默认的段地址在DS段寄存器,可使用段寄存器,可使用段超越前缀改变段超越前缀改变 用中括号包含有效地址,表达存储单元用中括号包含有效地址,表达存储单元的内容的内容 MOV AX, 2000H;AXDS:2000H MOV AX, ES: 2000H;AXES:2000HMOV AL, 1064H21064HDS:20 000H20000H2

11、1064HAL操作码641045代代码码段段数数据据段段4545+ 1064HEA 16位 disp 寄存器间接寻址寄存器间接寻址 有效地址存放在基址寄存器有效地址存放在基址寄存器BX、BP或变址寄存或变址寄存器器SI、DI中中 段地址对应段地址对应BX/SI/DI寄存器默认是寄存器默认是DS,对应,对应BP寄存器默认是寄存器默认是SS;可用段超越前缀改变;可用段超越前缀改变5040MAX MOV AX, SI MOV BX, AL30000HDS:30000HSI: 2000H+32000H32000H4050504064HMAL30000HDS:30000HBX: 1000H+31000H

12、31000H64H64HMOV AX, SIMOV BX, ALEA=(BX)(BP)(DI)(SI) 寄存器相对寻址寄存器相对寻址 有效地址是寄存器内容与有符号有效地址是寄存器内容与有符号8位或位或16位位移位位移量之和,寄存器可以是量之和,寄存器可以是BX、BP或或SI、DI 有效地址有效地址BX/BP/SI/DI8/16位位移量位位移量 段地址对应段地址对应BX/SI/DI寄存器默认是寄存器默认是DS,对应,对应BP寄存器默认是寄存器默认是SS;可用段超越前缀改变;可用段超越前缀改变 MOV CL, BX+1064H22064H22064H641045代码段数据段操作码CL4545+ 1

13、064H21000HBX: 1000HDS:20000H20000HEA=(BX)(BP)(DI)(SI)+8位 disp16位 disp 基址加变址寻址方式基址加变址寻址方式 有效地址由基址寄存器(有效地址由基址寄存器(BX或或BP)的)的内容加上变址寄存器(内容加上变址寄存器(SI或或DI)的内)的内容构成:容构成:有效地址有效地址BX/BPSI/DI 段地址对应段地址对应BX基址寄存器默认是基址寄存器默认是DS,对应对应BP基址寄存器默认是基址寄存器默认是SS;可用段;可用段超越前缀改变超越前缀改变MOV AH, BPSI56HMAH40000HSS:40000HBP: 2000H+43

14、200H43200HSI: 1200H56H56HEA=(BX)(BP)+(DI)(SI) 基址加变址相对寻址基址加变址相对寻址 有效地址是基址寄存器(有效地址是基址寄存器(BX/BP)、)、变址寄存器(变址寄存器(SI/DI)与一个)与一个8位或位或16位位移量之和:位位移量之和:有效地址有效地址BX/BPSI/DI8/16位位移位位移量量 段地址对应段地址对应BX基址寄存器默认是基址寄存器默认是DS,对应对应BP基址寄存器默认是基址寄存器默认是SS;可用段;可用段超越前缀改变超越前缀改变MOV BX+DI+1234H, AHEA=(BX)(BP)+(DI)(SI)+8位 disp16位 d

15、isp3412代码段数据段操作码45AH40000HDS:40000HBX: 0200H+DI: 0010H1234H454541444H41444H4)I/O端口寻址方式端口寻址方式 直接端口寻址方式直接端口寻址方式IN AL, 21H21HAL操作码21H代码段8001H02HI/O接口8080 间接端口寻址方式间接端口寻址方式 MOV DX, 1234H OUT DX, AL0001H0002HI/O接口80AL1234DX1234H80802.2.地址的寻址方式地址的寻址方式地址的寻址方式其实是程序转移地址的寻地址的寻址方式其实是程序转移地址的寻址方式,也就是找出程序转移的地址号,而不

16、址方式,也就是找出程序转移的地址号,而不是操作数。是操作数。转移地址可以在段内(称段内转移),也转移地址可以在段内(称段内转移),也可以跨段(称段间转移)。寻求转移地址的方可以跨段(称段间转移)。寻求转移地址的方法有以下四种:法有以下四种:1 1)段内直接寻址)段内直接寻址转移的地址是当前转移的地址是当前IPIP内容和指令规定的内容和指令规定的8 8位或位或1616位位移量之和。位位移量之和。当位移量是当位移量是8 8位时,称为位时,称为短程转移,短程转移,通常通常在目标地址前加操作符在目标地址前加操作符SHORTSHORT;位移量是;位移量是1616位时位时称为称为近程转移,近程转移,在目标

17、地址前加操作符在目标地址前加操作符NEAR NEAR PTRPTR。这种寻址方式适用于条件转移或无条件转这种寻址方式适用于条件转移或无条件转移类指令。但条件转移只有移类指令。但条件转移只有8 8位位移量的短程位位移量的短程转移。转移。+当前IPEA有效转移地址opcode位移量PM(CS) 10H + EA位移量 例:例:JMP SHORT ALPHAJMP SHORT ALPHA 本例指令是一无条件转移本例指令是一无条件转移指令,指令采用了段内直接寻指令,指令采用了段内直接寻址方式。符号地址址方式。符号地址ALPHAALPHA代表代表位移量。设位移量。设ALPHAALPHA20H20H,开始

18、,开始执行该指令时,执行该指令时,(CS)(CS)1500H1500H,(IP)(IP)3200H3200H,于是该指令在,于是该指令在存储器中的起始地址为:存储器中的起始地址为:15000H15000H3200H3200H18200H18200HOP20H存储器存储器150001820018201182021822020H当前代码段首之当前代码段首之JMP SHORT ALPHA转移地址转移地址而转移有效地址为:而转移有效地址为: EAEA当前当前(IP)(IP)ALPHAALPHA3200H3200H20H20H3220H3220H转移物理地址为:转移物理地址为: PAPA15000H15

19、000H3220H3220H18220H18220H执行完这条指令后,执行完这条指令后,IPIP的内容变成的内容变成3220H(3220H(不再是不再是3200H)3200H),CPUCPU将转移到存储单元地址将转移到存储单元地址18220H18220H中去取指令来执行。中去取指令来执行。2)段内间接寻址方式段内间接寻址方式程序转移的地址存放在寄存器或存储器单元程序转移的地址存放在寄存器或存储器单元中。指令执行使用寄存器或存储器单元的内容来中。指令执行使用寄存器或存储器单元的内容来更新更新IPIP的内容。的内容。寄存器IPDMIP例如:例如:JMP BXJMP WORD PTR ADDRJMP

20、 WORD PTR BX+ARRY 例:例:JMP WORD PTR BETAJMP WORD PTR BETA 本指令是无条件转移指令,可使本指令是无条件转移指令,可使程序转移到根据程序转移到根据BETABETA指示的内存单元中指示的内存单元中取出的偏移地址开始执行指令。指令采取出的偏移地址开始执行指令。指令采用的是段内间接寻址方式。指令的操作用的是段内间接寻址方式。指令的操作数地址是一个符号地址数地址是一个符号地址BETABETA,所以可用,所以可用数据寻址方式中的直接寻址方式得到存数据寻址方式中的直接寻址方式得到存储转移偏移地址的内存单元地址。设当储转移偏移地址的内存单元地址。设当前前(

21、CS)(CS)0120H,(IP)0120H,(IP)2400H,BETA2400H,BETA0100H,(DS)0100H,(DS)2000H,(20100H)2000H,(20100H)00H00H,(20101H)(20101H)27H27H,则存储转移偏移地址,则存储转移偏移地址的内存单元地址为:的内存单元地址为: (DS)(DS)左移左移4 4位位+BETA+BETA20000H+0100H20000H+0100H 20100H20100H又又(20100H)(20100H)00H,(20101H)00H,(20101H)27H,27H,即转即转移物理地址为:移物理地址为: PAPA

22、01200H+2700H01200H+2700H03900H03900H执行完这条指令后,执行完这条指令后,IPIP的内容变成的内容变成2700H2700H,CPUCPU将转移到存储单元将转移到存储单元03900H03900H去去执行程序。执行程序。OPOP00H存储器0120003600036010360203900当前代码段首址JMP WORD PTR BETA转移地址00H27H01H200002010020101数据区首地址036032700HIP3)段间直接寻址方式段间直接寻址方式这种寻址方式是指令码中直接给出这种寻址方式是指令码中直接给出1616位的位的段地址和段地址和1616位的

23、偏移地址用来更新当前的位的偏移地址用来更新当前的CSCS和和IPIP内容。内容。opcodePM段地址偏移量IPCSOP00H40H存储器2000021000210012100230000当前代码段首址JMP FAR PTR GAMMA转移代码段首地址00H34000转移地址2100330H21004 例:例:JMP FAR PTR GAMMAJMP FAR PTR GAMMA 本例指令为无条件转移本例指令为无条件转移指令,采用段间直接寻址方指令,采用段间直接寻址方式。设当前式。设当前(CS)(CS)2000H2000H (IP) (IP)1000H1000H GAMMA GAMMA3000:

24、40003000:4000则本指令的起始地址为:则本指令的起始地址为: 20000H+1000H20000H+1000H21000H21000H转移物理地址为:转移物理地址为: PAPA30000H+4000H30000H+4000H34000H34000H 执行完这条指令后,执行完这条指令后,CSCS的内容变成的内容变成3000H3000H,IPIP的内容的内容变成变成4000H4000H,从而程序转移到,从而程序转移到存储单元存储单元34000H34000H开始执行。开始执行。4 4)段间间接寻址方式)段间间接寻址方式这种寻址方式是由指令中给出的存储器寻这种寻址方式是由指令中给出的存储器寻址方式求出存放转移地址的四个连续存储单元址方式求出存放转移地址的四个连续存储单元的地址。指令操作是将存储器的前两个单元的的地址。指令操作是将存储器的前两个单元的内容送给内容送给IPIP,后两个单元的内容送给,后两个单元的内容送给CSCS。DMCSIP段基址偏移量 例:例:JMP DWORD PTR DELTABXJMP DWORD PTR DELTABX 本例指令是无条件转移指令,采用段间间接寻址方本例指令是无条件转移指令,采用段间间接寻址方式。式。 设当前设当前(CS)(CS)1000H,(IP)1000

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论