3-8086指令系统及编程应用-1.ppt
《3-8086指令系统及编程应用-1.ppt》由会员分享,可在线阅读,更多相关《3-8086指令系统及编程应用-1.ppt(224页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第三章第三章 8086 指令系统及编程应用指令系统及编程应用n n 8086的的寻址方式寻址方式(重点重点)存储器寻址、非存储器寻址存储器寻址、非存储器寻址存储器寻址、非存储器寻址存储器寻址、非存储器寻址n n 8086的指令系统(的指令系统(重点重点)数据传送、算术运算、逻辑和移位、串操作、数据传送、算术运算、逻辑和移位、串操作、数据传送、算术运算、逻辑和移位、串操作、数据传送、算术运算、逻辑和移位、串操作、控制转移、控制转移、控制转移、控制转移、处理器控制处理器控制处理器控制处理器控制 n n 编程应用编程应用第一节第一节 8086的的寻址方式寻址方式一、基本概念一、基本概念1、指令系统概
2、念、指令系统概念计算机通过执行指令序列来解决问题,每种计算机都有一组计算机通过执行指令序列来解决问题,每种计算机都有一组指令集提供用户使用,这组指令集提供用户使用,这组指令集就称为计算机的指令系统指令集就称为计算机的指令系统。2、指令组成指令组成计算机中指令由计算机中指令由操作码字段操作码字段和和操作数字段操作数字段两部分组成。两部分组成。操作码字段操作码字段-指示计算机要指示计算机要执行的操作执行的操作,操作数字段操作数字段-指出在指令执行操作过程中所需要的操作数;指出在指令执行操作过程中所需要的操作数;操作数本身操作数本身;操作数地址或是地址的一部分;操作数地址或是地址的一部分;指向操作数
3、指向操作数地址的指针。地址的指针。3、指令的一般格式、指令的一般格式:操作码字段操作码字段:在机器里只需对某种操作指定确定的二进制代码。在机器里只需对某种操作指定确定的二进制代码。通常用指令的第一个字节表示,不够可以占第二个字节中通常用指令的第一个字节表示,不够可以占第二个字节中的的3位。位。操作数字段操作数字段:操作数字段可以有一个操作数字段可以有一个,二个或三个地址指令。二个或三个地址指令。例:例:INCCXADDAX,BX4、操作数的存放、操作数的存放操作数的存放不外乎三种情况:操作数的存放不外乎三种情况:()()操作数包含在指令中操作数包含在指令中例:例:MOVAL,08H-立即数立即
4、数()()操作数包含在的一个内部寄存器中操作数包含在的一个内部寄存器中例:例:INCCX-寄存器寻址寄存器寻址()操作数在内存数据区()操作数在内存数据区操作数字段包含着此操作数字段包含着此操作数的内存地址操作数的内存地址。内存地址由两部分组成:内存地址由两部分组成:段的基地址段的基地址段内偏移量段内偏移量有效地址(有效地址(EffectiveAddress)段内偏移量段内偏移量为适应各种数据结构的需要,可以为适应各种数据结构的需要,可以有几个部分有几个部分组成组成,所以也把它称为,所以也把它称为有效地址有效地址。EA根据不同寻址方式由不同的构成。根据不同寻址方式由不同的构成。寻址方式寻址方式
5、如何寻找内存操作数。如何寻找内存操作数。不同寻址方式实质上是构成它段内的偏移量的方法不同不同寻址方式实质上是构成它段内的偏移量的方法不同。二、操作数的寻址方式二、操作数的寻址方式(一)立即寻址(一)立即寻址非存储器寻址非存储器寻址(二)寄存器寻址方式(二)寄存器寻址方式(三)直接寻址(三)直接寻址(四)寄存器间接寻址方式四)寄存器间接寻址方式(五)寄存器相对寻址方式(变址寻址)五)寄存器相对寻址方式(变址寻址)存储器寻址存储器寻址(六)基址变址寻址方式(六)基址变址寻址方式(七)相对基址变址寻址方式七)相对基址变址寻址方式端口寻址方式在指令中介绍端口寻址方式在指令中介绍(一)(一)立即寻址立即
6、寻址操作数直接存放在指令中,紧跟在操作码之后操作数直接存放在指令中,紧跟在操作码之后,作为指令,作为指令的一部分,存放在代码段里,这种操作数称为立即数。的一部分,存放在代码段里,这种操作数称为立即数。立即数可以是立即数可以是位位或或16位位的。的。16位立即数:高位字节放在高地址位立即数:高位字节放在高地址,低位字节放在低地址低位字节放在低地址。使用场合:使用场合:经常用于给寄存器赋初值。经常用于给寄存器赋初值。注意:只能用于源操作数字段注意:只能用于源操作数字段,不能用于目的操作数字段。,不能用于目的操作数字段。例:例:MOVAL,05H指令执行后指令执行后:(AL)=05H例:例:MOVA
7、X,3064H指令执行后指令执行后:(AX)=3064H立即寻址方式立即寻址方式(二二)寄存器寻址方式寄存器寻址方式操作数在寄存器中,指令指定寄存器号。操作数在寄存器中,指令指定寄存器号。对于位操作数,寄存器可以是对于位操作数,寄存器可以是:,,,。以及段寄存器。以及段寄存器。对于位操作数,寄存器可以是对于位操作数,寄存器可以是:,。不需要访问存储器的不需要访问存储器的运算速度较高运算速度较高。例:例:指令执行前指令执行前:(AX)3064(SS)1234 MOVSS,AX指令执行后指令执行后:(SS)3064H(AX)保持不变。保持不变。指令执行前:指令执行前:指令执行后指令执行后:寄存器寻
8、址方式寄存器寻址方式(三)直接寻址(三)直接寻址操作数操作数地址的位偏移量地址的位偏移量,直接包含在指令中,但操,直接包含在指令中,但操作数一般存放在数据段中,必须先求出操作数的物理地址,作数一般存放在数据段中,必须先求出操作数的物理地址,然后再访问存储器才能取得操作数。然后再访问存储器才能取得操作数。物理地址物理地址:PA16d(DS)+EAIBMPC机允许数据存放在数据段以外的其它段中。此时机允许数据存放在数据段以外的其它段中。此时应在指令中应在指令中指定段跨越(可以是指定段跨越(可以是CS,SS,ES)。)。例:例:MOVAX,3100H(DS)=6000H,(63100H)=3050H
9、则则:(AX)=3050HMOVAX,VALUE或或MOVAX,VALUEVALUE有效操作数单元的有效操作数单元的符号地址。符号地址。如:如:VALUE在附加段中,在附加段中,则应指定段跨越。则应指定段跨越。MOVAX,ES:VALUE或或MOVAX,ES:VALUE直接寻址方式直接寻址方式注意:注意:(1)直接寻址方式适用于处理单个变量。)直接寻址方式适用于处理单个变量。(2)直接寻址方式)直接寻址方式隐含的段寄存器是隐含的段寄存器是DS,段段跨跨越越,即即允允许许使使用用CS、SS、ES作作为为段段寄寄存存器器,必必须须在在指指令中特别标明。令中特别标明。(3)IBMPC机机中中规规定定
10、双双操操作作数数指指令令必必须须有有一一个个操操作作数数使使用用寄寄存存器器方式,这就是常常先要把一个变量送到寄存器去的原因。方式,这就是常常先要把一个变量送到寄存器去的原因。例:要处理某存放在存储器里的变量,可以用直接寻址方式例:要处理某存放在存储器里的变量,可以用直接寻址方式把变量先取到一个寄存器中再作处理。把变量先取到一个寄存器中再作处理。(四四)寄存器间接寻址方式寄存器间接寻址方式操作数在存储器中操作数在存储器中,操作数地址的操作数地址的16位偏移量包含在:位偏移量包含在:BP、BX、SI、DI中。中。1、若选择、若选择SI、DI、BX作为间接寻址作为间接寻址操作数一般在现行数据段区域
11、中,用操作数一般在现行数据段区域中,用(DS)作为段地址。作为段地址。即操作数物理地址为:即操作数物理地址为:物理地址物理地址PA=16d(DS)+(BX)物理地址物理地址PA=16d(DS)+(SI)物理地址物理地址PA=16d(DS)+(DI)例:例:MOVBX,DI(DS)=6000H(DI)=2000HPA=62000H(62000H)=50A0H(BX)=50A0H寄存器间接寻址方式寄存器间接寻址方式MOVBX,DI2、若选择、若选择BP寄存器作为间接寻址寄存器作为间接寻址操作数在堆栈段区域中,用操作数在堆栈段区域中,用SS寄存器的内容作为段地址。寄存器的内容作为段地址。操作数物理地
12、址操作数物理地址:PA=16d(SS)+(BP)例:例:MOVBP,AX执行前:执行前:(SS)=1000H,(BP)=3000H,(AX)=1234H执行后:执行后:PA=13000H(13000H)=1234H寄存器间接寻址方式寄存器间接寻址方式MOVBP,AX3、用、用SI、DI、BX、BP作为间接寻址允许段跨越作为间接寻址允许段跨越指令中可以指定段跨越前缀来取得其他段中的数据。指令中可以指定段跨越前缀来取得其他段中的数据。例:例:MOVES:DI,AXMOVDX,DS:BP这种寻址方法可以用于表格处理。这种寻址方法可以用于表格处理。(五五)寄存器相对寻址方式(变址寻址)寄存器相对寻址方
13、式(变址寻址)操作数的操作数的有效地址是一个基址或变址寄存器的内容和指令中指有效地址是一个基址或变址寄存器的内容和指令中指定的定的8位或位或16位位移量之和。位位移量之和。8086/8088CPU中有中有两个变址寄存器两个变址寄存器:源变址寄存器源变址寄存器SI;目的变址寄存器目的变址寄存器DI。操作数一般在内存的数据段中,但操作数一般在内存的数据段中,但允许段跨越允许段跨越。形成物理地址有二种方式:形成物理地址有二种方式:例:例:MOVAX,COUNTBP或或MOVAX,COUNT+BP或或MOVAX,COUNT+BPCOUNT为为16位位移量。位位移量。指令执行前指令执行前:(SS)=50
14、00H,(BP)=3000H,COUNT=2040H,(AX)=1234H指令执行后指令执行后:EA=5040HPA=55040H(55040H)=5548H(AX)=5548H寄存器相对寻址方式寄存器相对寻址方式MOVAX,COUNTBP用途:这种寻址方式同样用于用途:这种寻址方式同样用于表格处理表格处理。表格首地址表格首地址COUNT修改基址或变址寄存器来取得表格中的值。修改基址或变址寄存器来取得表格中的值。例:某数据表的首地址为例:某数据表的首地址为COUNT欲读取表中第欲读取表中第10个数据个数据,存放到(存放到(AL)中。中。第第10个数据的有效地址个数据的有效地址:EA=COUNT
15、+9MOVSI,09HMOVAL,SI+COUNT*直接变址寻址方式也可以直接变址寻址方式也可以使用段跨越前缀使用段跨越前缀MOVDL,ES:STRINGSI(六六)基址变址寻址方式基址变址寻址方式操作数的操作数的有效地址是一个基址寄存器和一个变址寄存器的有效地址是一个基址寄存器和一个变址寄存器的内容之和内容之和,基址寄存器名和变址寄存器名均有指令指定。,基址寄存器名和变址寄存器名均有指令指定。除有段跨越前缀之外,形成物理地址有二种方式:除有段跨越前缀之外,形成物理地址有二种方式:例:例:MOVAX,BXSI或或MOVAX,BX+SI执行指令前执行指令前:(DS)=3200H,(BX)=045
16、6H,(SI)=1094H(334EAH)=4567H执行指令后执行指令后:EA=14EAHPA=334EAH(AX)=4567H基址加变址寻址方式基址加变址寻址方式MOVAX,BX+SI用途:用途:这种寻址方式同样适用于数组或表格处理。这种寻址方式同样适用于数组或表格处理。表格首地址表格首地址基址寄存器中基址寄存器中,用变址寄存器来访问数组中的元素。用变址寄存器来访问数组中的元素。二个寄存器都能修改,二个寄存器都能修改,所以比直接变址方式更灵。所以比直接变址方式更灵。使用段跨越前缀格式使用段跨越前缀格式:MOVAX,ES:BXSI(七)相对基址变址寻址方式(七)相对基址变址寻址方式操作数操作
17、数有效地址是一个基址寄存器和一个变址寄存器的有效地址是一个基址寄存器和一个变址寄存器的内容和内容和8位或位或16位位移量之和位位移量之和。形成物理地址有二种方式:形成物理地址有二种方式:例:例:MOVAX,MASKBXDIMOVAX,MASKBX+DIMOVAX,MASX+BX+DI执行指令前执行指令前:(DS)=3000H(BX)=1346H(DI)=0500HMASK=1234H(32A7AH)=4050H执行指令后执行指令后:EA=2A7AHPA=32A7AH(AX)=4050H相对基址加变址相对基址加变址MOVAX,MASK+BX+DI用途用途:这种寻址方式为这种寻址方式为堆栈处理堆栈
18、处理提供方便:提供方便:(BP)栈顶(一般栈顶(一般BP可指向栈顶)可指向栈顶)从栈顶到数组的首地址可以用位移量表示从栈顶到数组的首地址可以用位移量表示(MASK).变址寄存器(变址寄存器(SI)或(或(DI)指向数组中某个元素。指向数组中某个元素。第二节第二节8086的指令系统的指令系统8086的指令系统中共有的指令系统中共有92种基本指令。种基本指令。可以分成可以分成6个功能组:个功能组:1数据传送数据传送2算术运算算术运算3逻辑运算和移位指令逻辑运算和移位指令4串操作串操作5控制转移控制转移6处理器控制处理器控制8086指令助记符表指令助记符表8086指令助记符表(续)指令助记符表(续)
19、一一 数据传送指令数据传送指令功能:功能:负责把负责把数据数据、地址地址或或立即数立即数传传送到送到寄存器或存储单元寄存器或存储单元。特点:特点:它是计算机最基本、最重要的一种操作,使用比例最高。它是计算机最基本、最重要的一种操作,使用比例最高。种类:种类:通用传送指令:通用传送指令:通用传送指令:通用传送指令:MOVMOV,PUSHPUSH,POPPOP,XCHG,XLATXCHG,XLAT。输入输出指令输入输出指令输入输出指令输入输出指令:IN,OUTIN,OUT。目的地址传送指令目的地址传送指令目的地址传送指令目的地址传送指令:LEA,LDS,LESLEA,LDS,LES 标志传送指令标
20、志传送指令标志传送指令标志传送指令:LAHF,SAHF,PUSHF,POPFLAHF,SAHF,PUSHF,POPF除除SAHF和和POPF指令外,对标志位没有影响指令外,对标志位没有影响。(一)通用传送指令(一)通用传送指令(一)通用传送指令(一)通用传送指令通用传送指令(除了通用传送指令(除了通用传送指令(除了通用传送指令(除了XCHGXCHG以外)是唯一允许以段寄存器以外)是唯一允许以段寄存器以外)是唯一允许以段寄存器以外)是唯一允许以段寄存器为操作数指令。为操作数指令。为操作数指令。为操作数指令。通用传送指令包括:通用传送指令包括:1、MOV2、PUSHPOP3、XCHG4、XLAT1
21、MOV dest,src;(dest)(src)目的目的源源目的目的源源功能:功能:功能:功能:把一个字节把一个字节(B)或一个字(或一个字(W)操作数由源传送至目的。操作数由源传送至目的。实现实现:寄存器寄存器寄存器寄存器/存储器之间;存储器之间;立即数立即数寄存器寄存器/存储器存储器寄存器寄存器/存储器存储器段寄存器之间的数据传送。段寄存器之间的数据传送。通用数据传送指令能实现:通用数据传送指令能实现:CPU内部寄存器之间的数据的任意传送内部寄存器之间的数据的任意传送(除了码段寄存器(除了码段寄存器CS和指令指针和指令指针IP以外)。以外)。段寄存器之间不能传送。段寄存器之间不能传送。段寄
22、存器之间不能传送。段寄存器之间不能传送。例:例:MOVDL,CH;8位寄存器位寄存器8位寄存器位寄存器MOVAX,DX;16位寄存器位寄存器16位寄存器位寄存器MOVSI,BPMOVDS,BX;通用寄存器通用寄存器段段寄存器寄存器MOVAX,CS;段段寄存器寄存器通用寄存器通用寄存器立即数传送至立即数传送至CPU内部通用寄存器组内部通用寄存器组(AX、BX、CX、DX、BP、SP、SI、DI)。)。用于给寄存器赋初值。用于给寄存器赋初值。不能直接给段寄存器赋值(立即数)不能直接给段寄存器赋值(立即数)不能直接给段寄存器赋值(立即数)不能直接给段寄存器赋值(立即数)例:例:MOVCL,04H;立
23、即数立即数8位位寄存器寄存器 MOVAX,03FFH;立即数立即数16位位寄存器寄存器为什么加为什么加为什么加为什么加WORDPTRWORDPTR,BYTEPTRBYTEPTR?MOVWORDPTRSI,057BH;立即数立即数存储器存储器MOVBYTEPTRMEM,5;立即数立即数存储器存储器CPU内部寄存器(除内部寄存器(除CS和和IP外)外)与存储器(所有寻址方式)之间数据传送。与存储器(所有寻址方式)之间数据传送。可以实现一字节或一个字的传送。可以实现一字节或一个字的传送。存储单元之间不能直接传送存储单元之间不能直接传送存储单元之间不能直接传送存储单元之间不能直接传送 例:例:MOVM
24、EM,AX;累加器累加器存储器存储器,直接寻址直接寻址MOVMEM,DS;段寄存器段寄存器存储器,存储器,直接寻址直接寻址MOVDISPBX,CX;寄存器寄存器存储器,存储器,变址寻址变址寻址MOVAX,DISPSI;存储器存储器累加器,累加器,变址寻址变址寻址MOVDS,MEM;存储器存储器段寄存器,段寄存器,直接寻址直接寻址MOVCX,DISPBXSI;存储器存储器累加器,累加器,相对基址加变址相对基址加变址 注意注意注意注意:(1 1)不能用一条)不能用一条)不能用一条)不能用一条MOVMOV指令实现以下传送。指令实现以下传送。指令实现以下传送。指令实现以下传送。j存储单元之间的传送存储
25、单元之间的传送存储单元之间的传送存储单元之间的传送MOVMEM2,MEM1错。错。MOVAX,MEM1MOVMEM2,AX对。对。kk 立即数送段寄存器立即数送段寄存器立即数送段寄存器立即数送段寄存器例例:MOVDS,2000H错。错。MOVAX,2000HMOVDS,AX对。对。l段寄存器之间的传送段寄存器之间的传送段寄存器之间的传送段寄存器之间的传送MOVES,DS;错错MOVAX,DSMOVES,AX;对对。注意注意注意注意CSCS和和和和IPIP的使用的使用的使用的使用CSCS和和和和IPIP不能作为目标操作数,不能作为目标操作数,不能作为目标操作数,不能作为目标操作数,CSCS可以作
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 8086 指令系统 编程 应用
限制150内