微机原理与接口技术(徐惠民)第3章.ppt
《微机原理与接口技术(徐惠民)第3章.ppt》由会员分享,可在线阅读,更多相关《微机原理与接口技术(徐惠民)第3章.ppt(91页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、微机原理与接口技术微机原理与接口技术第三章第三章8088/8086的指令系统的指令系统 第三章 8088/8086的指令系统主要内容各种寻址方式各种寻址方式8086/8088的指令系统的指令系统指令系统:一台计算机所能识别和执行的全部指令系统:一台计算机所能识别和执行的全部指令的集合。指令的集合。指令的组成指令的组成:操作码操作码说明计算机要执行哪种操作,如传送、运算、说明计算机要执行哪种操作,如传送、运算、移位、跳转等操作,它是指令中不可缺少的组成部移位、跳转等操作,它是指令中不可缺少的组成部分。分。操作数操作数是指令执行的参与者,即各种操作的对象。是指令执行的参与者,即各种操作的对象。有些
2、指令不需要操作数,通常的指令都有一个或两有些指令不需要操作数,通常的指令都有一个或两个操作数,也有个别指令有个操作数,也有个别指令有3个甚至个甚至4个操作数。个操作数。操作码操作码操作数操作数指令的表示:指令的表示:二进制代码二进制代码0000001011001111B(机器指令机器指令)助记符助记符ADDCL,BH(汇编指令汇编指令)3.18086/8088的寻址方式的寻址方式根据指令内容确定操作数地址的过程,称为根据指令内容确定操作数地址的过程,称为寻址寻址。根据寻址计算所得到的操作数地址叫做操作数的根据寻址计算所得到的操作数地址叫做操作数的有有效地址效地址(EA),也就是段内偏移地址。有
3、效地址还需也就是段内偏移地址。有效地址还需要与相应的段基地址组合才是要与相应的段基地址组合才是20位的位的物理地址物理地址(PA),该工作由该工作由CPU完成。完成。操作数的来源:(操作数的来源:(1)直接包含在指令中;)直接包含在指令中;(2)在)在CPU的某寄存器中;的某寄存器中;(3)在内存中。)在内存中。3.18086/8088的寻址方式的寻址方式寻址方式有寻址方式有:1、立即寻址、立即寻址 这种寻址的操作数直接放在指令中。这种寻址的操作数直接放在指令中。不需要访问存储器。不需要访问存储器。例:例:MOVAL,34HMOVAX,1234H 需要注意在需要注意在16位操作时,两个位操作时
4、,两个字节字节数据的高低位存储位置。立即数只能数据的高低位存储位置。立即数只能是源操作数。立即寻址主要用来给寄是源操作数。立即寻址主要用来给寄存器或存储单元赋初值。存器或存储单元赋初值。AX12H34HAHAL注意:在注意:在8086/8088的汇编指令中,逗号前的操作数为目的汇编指令中,逗号前的操作数为目的操作数,逗号后的操作数为源操作数。的操作数,逗号后的操作数为源操作数。3.18086/8088的寻址方式的寻址方式2、寄存器寻址、寄存器寻址操作数就放在操作数就放在CPU的内部寄存器中,的内部寄存器中,AX、BX、CX、DX、DI、SI、SP、BP、DS、ES和和SS,不需要访问存储器。,
5、不需要访问存储器。例:例:INCCXMOVAX,BX若执行前若执行前AX=30A6H,BX=69EDH,CX=40D9H则执行后则执行后AX=69EDH,BX内容不变内容不变CX=40DAH3.18086/8088的寻址方式的寻址方式3、直接寻址、直接寻址有效地址(偏移地址有效地址(偏移地址EA)由指令直接给出,有效)由指令直接给出,有效地址只包含位移量地址只包含位移量。例:例:MOVAX,2000H默认的段寄存器是默认的段寄存器是DS,也可以在指令中使用也可以在指令中使用段超越前缀来指定段寄存器。段超越前缀来指定段寄存器。例:例:MOVAL,ES:2000H有效地址有效地址EA=2000H,
6、在指令中直接给出。在指令中直接给出。物理地址物理地址PA=(ES)10H+2000H3.18086/8088的寻址方式的寻址方式4、寄存器间接寻址、寄存器间接寻址操作数的地址在对应的寄存器中称为操作数的地址在对应的寄存器中称为寄存器间接寻址。寄存器间接寻址。EA取自取自基址寄存器基址寄存器BX,BP或或变址寄存器变址寄存器SI,DI 中的一个,操作数在有效地址对应的存储单元中。中的一个,操作数在有效地址对应的存储单元中。以以SI,DI,BX间接寻址间接寻址:默认默认操作数在操作数在数据段数据段DS中中以以BP间接寻址间接寻址:默认默认操作数在操作数在堆栈段堆栈段SS中中(可与可与DS等其他等其
7、他段寄存器形成段超越)段寄存器形成段超越)例例:MOVAX,BX若(若(DS)=1492H,(,(BX)=2000H则则EA=(BX)=2000H物理地址物理地址PA=14920H+2000H=16920H,执行(执行(AX)=(16920H)3.18086/8088的寻址方式的寻址方式5、变址寻址、变址寻址在寄存器间接寻址的基础上再加一个在寄存器间接寻址的基础上再加一个1616位的偏移量。位的偏移量。例:例:MOV AXMOV AX,SI+COUNT SI+COUNT 或或 MOV AX,COUNTSIMOV AX,COUNTSI若若COUNT=3000HCOUNT=3000H,(DSDS)
8、=3000H=3000H(SISI)=2000H=2000H,则物理地址则物理地址=35000H=35000HEA=3000H+2000H =5000HPA=30000H+5000H =35000H3.18086/8088的寻址方式的寻址方式、基址加、基址加变址寻址变址寻址EAEA=基址寄存器(基址寄存器(BXBX或或BPBP)变址寄存器(变址寄存器(SISI或或DIDI)1616位偏移量位偏移量若用若用BX:BX:默认操作数在数据段默认操作数在数据段DSDS中中 若用若用BP:BP:默认操作数在堆栈段默认操作数在堆栈段SSSS中中例:例:MOVAX,BX+DI+63.18086/8088的寻
9、址方式的寻址方式寻址方式的书写格式寻址方式的书写格式1、在方括号内部允许有一个或两个寄存器的名字,、在方括号内部允许有一个或两个寄存器的名字,如果一对方括号内部有基址寄存器和变址寄存器,如果一对方括号内部有基址寄存器和变址寄存器,使用使用“”作为连接。作为连接。2、在方括号内部允许有位移量,使用或、在方括号内部允许有位移量,使用或号作为号作为连接符号。连接符号。3、在方括号外部允许有位移量,可以在左边或右边。、在方括号外部允许有位移量,可以在左边或右边。MOVAX,BX+SI+6MOVAX,BX+SI6 MOVAX,6BX+SI MOVAX,BXSI6 MOVAX,BX+6SI3.28086/
10、8088的指令系统的指令系统Intel 8086/8088Intel 8086/8088指令系统共有指令系统共有117117条基本指条基本指令,可分成令,可分成6 6个功能组个功能组:数据传送类指令数据传送类指令 算术运算类指令算术运算类指令 逻辑运算类指令逻辑运算类指令 串操作类指令串操作类指令 控制转移类指令控制转移类指令 处理器控制类指令处理器控制类指令3.2.1数据传送指令数据传送指令1数据传送数据传送MOV指令指令一般格式一般格式:MOVOPRD1,OPRD2MOV是操作码,是操作码,OPRD1和和OPRD2分别是目的分别是目的操作数和源操作数。操作数和源操作数。功能:功能:完成数据
11、传送完成数据传送具体来说,一条具体来说,一条MOV数据传送指令能实现:数据传送指令能实现:CPU内部寄存器之间数据的任意传送内部寄存器之间数据的任意传送(除了代码除了代码段寄存器段寄存器CS和指令指针和指令指针IP以外以外)。MOVAL,BL;字节传送字节传送MOVCX,BX;字传送字传送MOVDS,BX3.2.1数据传送指令数据传送指令立即数传送至立即数传送至CPU内部的通用寄存器组内部的通用寄存器组(即即AX、BX、CX、DX、BP、SP、SI、DI),MOVCL,4MOVAX,03FFHMOVSI,057BHCPU内部寄存器内部寄存器(除了除了CS和和IP以外以外)与存储器与存储器(所有
12、寻址所有寻址方式方式)之间的数据传送。之间的数据传送。MOVAL,2000HMOVAX,SIMOVDI,CXMOVSI,BLOCKBPMOVDS,DATASI+BXMOVDESTBP+DI,ES3.2.1数据传送指令数据传送指令能实现用立即数给存储单元赋值能实现用立即数给存储单元赋值MOVBYTEPTR2000H,25HMOVWORDPTRSI,35H立即数立即数段寄存器段寄存器 DS ES SS DS ES SS通用寄存器通用寄存器AX BX CX DXAX BX CX DXBP SP SI DIBP SP SI DI存存储储器器3.2.1数据传送指令数据传送指令对于对于MOV 指令应注意几
13、个问题:指令应注意几个问题:MOVMOV传送指令中,不允许对传送指令中,不允许对CSCS和和IPIP进行操作;进行操作;两个存储器操作数之间不允许直接进行信息传送;两个存储器操作数之间不允许直接进行信息传送;如我们需要把地址如我们需要把地址(即段内的地址偏移量即段内的地址偏移量)为为2000H2000H的的存储单元的内容,传送至同一段内的地址为存储单元的内容,传送至同一段内的地址为3000H3000H的的存储单元中去,存储单元中去,MOVMOV指令不能直接完成这样的传送,指令不能直接完成这样的传送,但我们可以但我们可以CPUCPU内部寄存器为桥梁来完成这样的传送:内部寄存器为桥梁来完成这样的传
14、送:MOV ALMOV AL,2000H;2000H;MOV 3000H MOV 3000H,ALAL3.2.1数据传送指令数据传送指令 两个段寄存器之间不能直接传送信息,也不允两个段寄存器之间不能直接传送信息,也不允许用立即寻址方式为段寄存器赋初值;许用立即寻址方式为段寄存器赋初值;(X)(X)MOV DS,100H;MOV DS,100H;(X)(X)MOV DS,ES;MOV DS,ES;目的操作数,不能用立即寻址方式。目的操作数,不能用立即寻址方式。MOVMOV指令不影响标志位指令不影响标志位3.2.1数据传送指令数据传送指令2堆栈指令堆栈指令堆栈:就是一个按后进先出堆栈:就是一个按后
15、进先出(LIFO)的原则组的原则组织的一般内存区域即堆栈段。用织的一般内存区域即堆栈段。用SS指指示段地址。堆栈指针示段地址。堆栈指针SP总是指向栈总是指向栈顶(最后压入的数的地址)。顶(最后压入的数的地址)。SP的初的初值规定了所用堆栈的大小(堆栈的深值规定了所用堆栈的大小(堆栈的深度),一个度),一个 栈的深度最大为栈的深度最大为64kB。堆栈用途堆栈用途:临时存放数据临时存放数据传递参数传递参数保存和恢复寄存器保存和恢复寄存器LIFO3.2.1数据传送指令数据传送指令入栈指令入栈指令PUSH一般格式:一般格式:PUSHOPRD源操作数可以是源操作数可以是CPU内部的内部的16位通用寄存器
16、、段寄位通用寄存器、段寄存器(存器(CS除外)和内存操作数(所有寻址方式)。除外)和内存操作数(所有寻址方式)。入栈操作对象必须是入栈操作对象必须是16位数。位数。功能:功能:将数据压入堆栈将数据压入堆栈执行步骤为:执行步骤为:SP=SP-1;SP=操作数高操作数高8位;位;SP=SP-1;SP=操作数低操作数低8位位3.2.1数据传送指令数据传送指令例:例:PUSHBX执行过程为:执行过程为:SP=SP-1,SP=BH;SP=SP-1,SP=BL 3.2.1数据传送指令数据传送指令(2)出栈指令出栈指令POP一般格式:一般格式:POPOPRD目的操作数可以是目的操作数可以是CPU内部的内部的
17、16位通用寄存器、段位通用寄存器、段寄存器(寄存器(CS除外)和内存操作数(所有寻址方式)。除外)和内存操作数(所有寻址方式)。出栈操作对象必须是出栈操作对象必须是16位数。位数。功能:功能:将数据弹出堆栈将数据弹出堆栈执行步骤为:执行步骤为:操作数低操作数低8位位=SP;SP=SP1;操作数高操作数高8位位=SP;SP=SP+1;3.2.1数据传送指令数据传送指令3交换指令交换指令XCHG一般格式:一般格式:XCHGOPRD1,OPRD2功能:功能:完成数据交换。把一个字节或一个字的源操完成数据交换。把一个字节或一个字的源操作数与目作数与目的操作数相交换。交换能在的操作数相交换。交换能在通用
18、寄存器之通用寄存器之间、通用寄存器与存储器之间进行间、通用寄存器与存储器之间进行。但段寄存器和。但段寄存器和立即数不能作为一个操作数;立即数不能作为一个操作数;不能在存储器与存储不能在存储器与存储器之间对换数据器之间对换数据。例:例:XCHGAL,CLXCHGAX,DIXCHGBX,SIXCHGAX,2000HXCHGDATASI,DH3.2.1数据传送指令数据传送指令4累加器专用传送指令累加器专用传送指令 输入输出指令输入输出指令IN,OUTIN,OUTIN指令一般格式:指令一般格式:INAL,n;ALnINAX,n;AXn+1nINAL,DX;ALDXINAX,DX;AXDX+1DX功能:
19、功能:从从I/O端口输入数据至端口输入数据至AL或或AX.输入指令允许把一个字节或一个字输入指令允许把一个字节或一个字由一个输入端口传送到由一个输入端口传送到AL或或AX中。若端中。若端口地址超过口地址超过255时,则必须用时,则必须用DX保存端保存端口地址,这样用口地址,这样用DX作端口寻址最多可寻作端口寻址最多可寻找找64K个端口。个端口。80868086/8088/8088通过输通过输入输出指令与外设入输出指令与外设进行数据交换;呈进行数据交换;呈现给程序员的外设现给程序员的外设是端口(是端口(PortPort)即)即I/OI/O地址。地址。80888088的对外数据的对外数据线为线为8
20、 8位,只有字节位,只有字节传送指令传送指令。1616位位输入输出指输入输出指令中的端口地址只令中的端口地址只能取偶数能取偶数。3.2.1数据传送指令数据传送指令OUT指令一般格式:指令一般格式:OUTn,AL;ALnOUTn,AX;AXn+1nOUTDX,AL;ALDXOUTDX,AX;AXDX+1DX功能:功能:将将AL或或AX的内容输出至的内容输出至I/O端口。端口。该指令将该指令将AL或或AX中的内容传送到一个中的内容传送到一个输出端口。端口寻址方式与输出端口。端口寻址方式与IN指令相同。指令相同。3.2.1数据传送指令数据传送指令(2)查表转换指令)查表转换指令格式:格式:XLAT
21、XLAT 功能:功能:完成一个字节的查表转换:完成一个字节的查表转换:AL=AL=(DSDS)1616(BXBX)+(ALAL)要求:要求:寄存器寄存器ALAL的内容作为一个的内容作为一个256256字节的表的下标字节的表的下标;表的基地址在表的基地址在BXBX中,中,转换后的结果存放在转换后的结果存放在ALAL中。中。3.2.1数据传送指令数据传送指令例例:设设(DSDS)=A000H,=A000H,(BXBX)=0010H,=0010H,表表的的起起始始地地址址为为A0010HA0010H,表表中中放放数数字字0-90-9的的ASCIIASCII码码 MOVMOVBXBX,0010H001
22、0H MOV MOVALAL,06H06H XLAT XLAT 执行该程序后,(执行该程序后,(ALAL)=36H=36H本指令可用在数制转换、本指令可用在数制转换、函数表查表、函数表查表、代码转换等场合。代码转换等场合。A000A000:0010001030H30H31H31HA000A000:0016001636H36H3.2.1数据传送指令数据传送指令5地址传送指令(有三条地址传送指令)地址传送指令(有三条地址传送指令)LEA(Load Effective Address)LEA(Load Effective Address)一般格式:一般格式:LEA OPRD1LEA OPRD1,OP
23、RD2OPRD2功能:功能:把源操作数把源操作数OPRD2OPRD2的地址偏移量传送至目的的地址偏移量传送至目的 操作数操作数OPRD1OPRD1。要求:要求:源操作数必须是一个内存操作数,源操作数必须是一个内存操作数,目的操目的操作数必须是一个作数必须是一个1616位的通用寄存器。这条指令位的通用寄存器。这条指令通常用来建立串操作指令所须的寄存器指针。通常用来建立串操作指令所须的寄存器指针。例:例:LEA BXLEA BX,2000H2000H;把;把2000H2000H单元的偏移地址单元的偏移地址送到送到BX BX,即,即BX=2000HBX=2000H3.2.1数据传送指令数据传送指令L
24、DS(LoadpointerintoDS)一般格式:一般格式:LDSOPRD1,OPRD2功能:功能:完成一个地址指针的传送。地址指针完成一个地址指针的传送。地址指针包括段地址部分和偏移量部分。指令将段包括段地址部分和偏移量部分。指令将段地址送入地址送入DS,偏移量部分送入一个偏移量部分送入一个16位位的指针寄存器或变址寄存器。的指针寄存器或变址寄存器。要求:源操作数是一个内存操作数,目的操要求:源操作数是一个内存操作数,目的操作数是一个通用寄存器或变址寄存器。作数是一个通用寄存器或变址寄存器。3.2.1数据传送指令数据传送指令例:例:LDSSI,BX;其中;其中(BX)=2000H;本指令将
25、把本指令将把BX所指的所指的32位地址指针位地址指针的段地址部分送入的段地址部分送入DS,偏移量部分送入偏移量部分送入SI。DS:200020200169200273200320DS=0B10H,执行执行LDSSI,BXSI=6920HDS=2073H3.2.1数据传送指令数据传送指令LES(LoadpointerintoES)一般格式:一般格式:LESOPRD1,OPRD2这条指令除将地址指针的段地址部分送入这条指令除将地址指针的段地址部分送入ES外,与外,与LDS类似。类似。例如:例如:LESDI,BX3.2.1数据传送指令数据传送指令6标志寄存器传送(有四条标志传送指令)标志寄存器传送(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 接口 技术 惠民
限制150内