【精品】寻址方式与指令系统(可编辑.ppt
《【精品】寻址方式与指令系统(可编辑.ppt》由会员分享,可在线阅读,更多相关《【精品】寻址方式与指令系统(可编辑.ppt(128页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、寻址方式与指令系统8086/8088指令系统的寻址方式指令系统的寻址方式 所所谓谓寻寻址址方方式式就就是是寻寻找找操操作作数数存存放放地地址址(位位置置)的的方方法法。在在8086/80888086/8088系系统统中中操操作作数数存存放的位置有以下放的位置有以下4 4种:种:操操作作数数包包含含在在指指令令字字节节中中。即即指指令令格格式式中中操操作作数数部部分分就就是是操操作作数数本本身身。这这种种操操作作数数叫叫立即数操作数立即数操作数。操操作作数数存存放放在在CPUCPU的的某某个个内内部部寄寄存存器器中中。这种操作数叫这种操作数叫寄存器操作数寄存器操作数。操操作作数数在在内内存存的的
2、数数据据区区中中。这这种种操操作作数数叫叫存储器操作数存储器操作数。操操作作数数来来自自或或送送到到I/OI/O端端口口。这这种种操操作作数叫数叫I/OI/O操作数操作数。在在8086/80888086/8088系系统统中中,操操作作数数又又可可分分为为两两大大类类:数数据据操操作作数数和和地地址址操操作作数数。因因此此,寻寻址址方方式也分为式也分为数据寻址方式数据寻址方式和和地址寻址方式地址寻址方式两大类两大类。1.数据的寻址方式数据的寻址方式对于数据操作数,有四种形式:对于数据操作数,有四种形式:无操作数无操作数 单单操操作作数数:可可以以是是源源操操作作数数,也也可可以以是是目的操作数。
3、目的操作数。双操作数:一个是源操作数,一个是目的操作数。隐含操作数:可能隐含一个操作数(源或目的),也可能隐含两个操作数。源操作数:在操作过程中其值不变的操作数。(可以提供数据的操作数)目的操作数:在操作后可被操作结果代替的操作数。(可以接收数据的操作数)1)立即数寻址方式例如:MOVAL,80HMOVAX,1234HAL操作码字节80H程序存储器指令码操作码字节12H程序存储器AL指令码AH34H12H34H80H80H12H34HMOVAL,80HMOVAX,1234H有效地址可以由以下三种地址分量组成:位移量:它是存放在指令中的一个8位或16位的带符号数。基 址:它是存放在基址寄存器BX
4、或BP中的内容。变 址:它是存放在变址寄存器SI或DI中的内容。对于某条具体指令,这三个地址分量可有不同的组合。正是因为这三种地址分量有不同的组合,才使得对存储器操作数的寻址产生了若干种不同的方式。直接寻址方式MOVAL,1064HDS:20000H20000H21064H21064HAL操作码641045代码段数据段4545+1064HEAEA 1616位位dispdisp50MAL505040MAX寄存器间接寻址MOVAX,SIMOVBX,AL30000HDS:30000HSI:2000H+32000H32000H4050504030000HDS:30000HBX:1000H+31000H
5、31000H50MOVAX,SIMOVBX,ALEA=EA=(BX)(BX)(DI)(DI)(SI)(SI)寄存器相对寻址22064H22064H641045代码段数据段操作码CL4545+1064H21000HBX:1000HDS:20000H20000HEA=(BX)(BP)(DI)(SI)+8位disp16位dispMOVCL,BX+1064H 基址加变址寻址方式基址加变址寻址方式MOVAH,BPSIMOVAH,BPSI56HMAH40000H40000HSSSS:400040000 0H HBP:2000H+43200H43200HSI:1200H56H56HEA=EA=(BX)(BX
6、)(BP)(BP)+(DI)(DI)(SI)(SI)基址加变址相对寻址MOVBX+DI+1234H,AHEA=(BX)(BP)+(DI)(SI)+8位disp16位disp3412代码段数据段操作码45AH40000HDS:40000HBX:0200H+DI:0010H1234H454541444H41444H4)I/O端口寻址方式 直接端口寻址方式INAL,21H21HAL操作码21H代码段8001H02HI/O接口8080间接端口寻址方式OUTDX,AL0001H0002HI/O接口80AL1234DX1234H8080指出下列指令中,源操作数及目的操作数的寻指出下列指令中,源操作数及目的
7、操作数的寻址方式址方式SUB BX,BP+35 MOV AX,2030H SCASB IN AL,40H MOV DI+BX,AX ADD AX,50HDI MOV AL,1300H MUL BL 已知(已知(DS)=1000H,(,(SI)=0200H,(,(BX)=0100H,(,(10100H)=11H,(,(10101H)=22H,(10600H)=33H,(,(10601H)=44H,(10300H)=55H,(,(10301H)=66H,(10302H)=77H,(,(10303H)=88H,试分析下列,试分析下列各条指令执行完后各条指令执行完后AX寄存器的内容。寄存器的内容。MO
8、V AX,2500H (AX)=MOV AX,300H (AX)=MOV AX,BX (AX)=MOV AX,500HBX (AX)=MOV AX,BXSI (AX)=MOV AX,BX+SI+2 (AX)=设(设(DS)=1000H,(,(ES)=2000H,(,(SS)=3000H,(,(SI)=0080H,(,(BX)=02D0H,(,(BP)=0060H,试指出下列指令的源操,试指出下列指令的源操作数字段是什么寻址方式?它的物理地址是作数字段是什么寻址方式?它的物理地址是多少?多少?MOV AX,0CBHMOV AX,100HMOV AX,BX MOV AX,BP MOV AX,BP+
9、50MOV AX,BXSI2.地址的寻址方式地址的寻址方式其时是程序转移地址的寻址方式,也就是找出程序转移的地址号,而不是操作数。转移地址可以在段内(称段内转移),也可以跨段(称段间转移)。寻求转移地址的方法有以下四种:1)段内直接寻址转移的地址是当前IP内容和指令规定的8位或16位位移量之和。当位移量是8位时,称为短程转移;位移量是16位时称为近程转移。这种寻址方式适用于条件转移或无条件转移类指令。但条件转移只有8位位移量的短程转移。+当前IPEA有效转移地址opcode位移量PM(CS)10H+EA位移量 例:例:JMP SHORT ALPHAJMP SHORT ALPHA本例指令是一无条
10、件转移本例指令是一无条件转移指令指令,指令采用了段内直接寻指令采用了段内直接寻址方式。符号地址址方式。符号地址ALPHAALPHA代表代表位移量。设位移量。设ALPHAALPHA20H,20H,开始开始执行该指令时,执行该指令时,(CS)(CS)1500H1500H,(IP)(IP)3200H3200H,于是该指令,于是该指令在存储器中的起始地址为:在存储器中的起始地址为:15000H 15000H3200H3200H18200H18200HOPOP20H20H存储器存储器15000H15000H18200H18200H18201H18201H18202H18202H18222H18222H2
11、0H20H当前代码段首地址当前代码段首地址JMPSHORTALPHAJMPSHORTALPHA转移地址转移地址而转移有效地址为:而转移有效地址为:EA EA当前当前(IP)(IP)ALPHAALPHA3202H3202H20H20H3222H3222H转移物理地址为:转移物理地址为:PA PA15000H15000H3222H3222H18222H18222H执行完这条指令后,执行完这条指令后,IPIP的内容变成的内容变成3222H(3222H(不再是不再是3202H)3202H),CPUCPU将转移到存储单元地址将转移到存储单元地址18222H18222H中去取指令来执行。中去取指令来执行。
12、2)段内间接寻址方式程序转移的地址存放在寄存器或存储器单元中。指令执行使用寄存器或存储器单元的内容来更新IP的内容。寄存器寄存器IPIPDMDMIPIP例如:例如:JMPBXJMPBXJMPWORDPTRADDRJMPWORDPTRADDRJMPWORDPTRBX+ARRYJMPWORDPTRBX+ARRY 例:例:JMP WORD PTR BETAJMP WORD PTR BETA 本指令是无条件转移指令,可使本指令是无条件转移指令,可使程序转移到根据程序转移到根据BETABETA指示的内存单元中指示的内存单元中取出的偏移地址开始执行指令。指令采取出的偏移地址开始执行指令。指令采用的是段内间
13、接寻址方式。指令的操作用的是段内间接寻址方式。指令的操作数地址是一个符号地址数地址是一个符号地址BETABETA,所以可用,所以可用数据寻址方式中的直接寻址方式得到存数据寻址方式中的直接寻址方式得到存储转移偏移地址的内存单元地址。设当储转移偏移地址的内存单元地址。设当前前(CS)(CS)0120H,(IP)0120H,(IP)2400H,BETA2400H,BETA0100H,(DS)0100H,(DS)2000H,(20100H)2000H,(20100H)00H00H,(20101H)(20101H)27H27H,则存储转移偏移地址,则存储转移偏移地址的内存单元地址为:的内存单元地址为:(
14、DS)(DS)左移左移4 4位位+BETA+BETA20000H+0100H20000H+0100H 20100H20100H又又(20100H)(20100H)00H,(20101H)00H,(20101H)27H,27H,即转即转移物理地址为:移物理地址为:PA PA01200H+2700H01200H+2700H03900H03900H执行完这条指令后,执行完这条指令后,IPIP的内容变成的内容变成2700H2700H,CPUCPU将转移到存储单元将转移到存储单元03900H03900H去去执行程序。执行程序。OPOPOPOP00H00H存储器存储器0120001200036000360
15、0036010360103602036020390003900当前代码段首址当前代码段首址JMPWORDPTRBETAJMPWORDPTRBETA转移地址转移地址00H00H27H27H01H01H200002000020100201002010120101数据区首地址数据区首地址03603036032700H2700HIPIP3)段间直接寻址方式这种寻址方式是指令码中直接给出16位的段地址和16位的偏移地址用来更新当前的CS和IP内容。opcodePM段地址偏移量IPCSOPOP00H00H40H40H存储器存储器200002000021000210002100121001210022100
16、23000030000当前代码段首址当前代码段首址JMPFARPTRGAMMAJMPFARPTRGAMMA转移代码段首地址转移代码段首地址00H00H3400034000转移地址转移地址210032100330H30H2100421004 例:例:例:例:JMP FAR PTR GAMMAJMP FAR PTR GAMMAJMP FAR PTR GAMMAJMP FAR PTR GAMMA 本例指令为无条件转移本例指令为无条件转移指令,采用段间直接寻址方指令,采用段间直接寻址方式。设当前式。设当前(CS)(CS)2000H2000H (IP)(IP)1000H1000H GAMMA GAMMA
17、3000:40003000:4000则本指令的起始地址为:则本指令的起始地址为:20000H+1000H 20000H+1000H21000H21000H转移物理地址为:转移物理地址为:PA PA30000H+4000H30000H+4000H34000H34000H 执行完这条指令后,执行完这条指令后,CSCS的内容变成的内容变成3000H3000H,IPIP的内容的内容变成变成4000H4000H,从而程序转移到,从而程序转移到存储单元存储单元34000H34000H开始执行。开始执行。4)段间间接寻址方式 这种寻址方式是由指令码的寻址方式字节求出存放转移地址的连续两个字的地址。其低位字地
18、址单元中存放的是偏移地址,高位字地址单元中存放的是转移段地址。DMDMCSCSIPIP段地址段地址偏移量偏移量 例:例:JMP DWORD PTR DELTABXJMP DWORD PTR DELTABX 本例指令是无条件转移指令,采用段间间接寻址方本例指令是无条件转移指令,采用段间间接寻址方式。式。设当前设当前(CS)(CS)1000H,(IP)1000H,(IP)0100H,(DS)0100H,(DS)2000H2000H,(BX)(BX)3000H,DELTA3000H,DELTA0040H,(23040H)0040H,(23040H)00H,(23041H)00H,(23041H)50
19、H,(23042H)50H,(23042H)00H,(23043H)00H,(23043H)30H30H,则间接存储地,则间接存储地址按寄存器相对寻址为:址按寄存器相对寻址为:(DS)(DS)左移左移4 4位位+(BX)+DELTA+(BX)+DELTA20000H+3000H+0040H20000H+3000H+0040H 23040H23040H于是,可得转移地址为:于是,可得转移地址为:3000H:5000H 3000H:5000H即转移物理地址为:即转移物理地址为:PA PA30000H+5000H30000H+5000H35000H35000H 执行本指令后,执行本指令后,CSCS的
20、内容和的内容和IPIP的内容分别变成的内容分别变成3000H3000H和和5000H5000H,程序转移到存储单元,程序转移到存储单元35000H35000H开始执行。开始执行。OPOPOPOP40H40H存储器存储器10000100001010010100101011010110102101023000030000当前代码段首地址当前代码段首地址JMPDWORDPTRDELTABXJMPDWORDPTRDELTABX转移代码段首地址转移代码段首地址00H00H3500035000转移地址转移地址101031010300H00H50H50H230402304023041230412304223
21、04200H00H230432304330H30H2000020000数据段首地址数据段首地址IPIPCSCS5000H5000H3000H3000H指令执行前:指令执行前:(CS)=1000H(CS)=1000H(IP)=0100H(IP)=0100H(DS)=2000H(DS)=2000H(BX)=3000H(BX)=3000HDELTA=0040HDELTA=0040H指令执行后:指令执行后:(CS)=3000H(CS)=3000H(IP)=5000H(IP)=5000HopcodeopcodePMPM段地址段地址偏移量偏移量IPIPCSCSDMDMCSCSIPIP段基址段基址偏移量偏移
22、量段间间接寻址方式段间直接寻址方式段间直接和间接寻址的区别8086/8088指令编码格式 通常在指令格式中包含操作码和操作数两大部分。其中:操作码表示计算机执行什么操作,操作数指明参与操作的对象,或规定操作对象的地址(即操作对象的存放位置)。如何寻找操作数(即操作对象),这就是指令的寻址方式,它是由指令编码格式指出的。操作码操作码操作数操作数 80868088指令系统采用变字长的指令编码格式,其指令可由16个字节组成,它包括操作码(第一字节),寻址方式(第二字节),位移量、立即数(第三到第六字节)三部分组成。其中,寻址方式、位移量、立即数为操作数部分。opcodemodregr/mdispda
23、ta操作码操作码寻址方式寻址方式位移量位移量立即数立即数操作数操作数opcodeopcodeopcodeopcodeModMod字节字节opcodeopcodeModMod字节字节opcodeopcodeModMod字节字节opcodeopcodeModMod字节字节opcodeopcodeModMod字节字节Data/dispData/dispdisp(disp(低低)Data/disp(Data/disp(低低)Data/disp(Data/disp(高高)disp(disp(高高)disp(disp(低低)disp(disp(高高)DataDataData(Data(低低)Data(Da
24、ta(高高)操作码部分操作数部分一字节指令二字节指令三字节指令四字节指令五字节指令disp(disp(低低)/)/Data(Data(低低)disp(disp(高高)/)/Data(Data(高高)Data(Data(低低)Data(Data(高高)modmodregregr/mr/mWDOPCODE76 543 2100172目的操作数源操作数源操作数目的操作数D=1D=0000001010011100101110111ALALCLCLDLDLBLBLAHAHCHCHDHDHBHBHAXAXCXCXDXDXBXBXSPSPBPBPSISIDIDIregW=0 W=1寄存器寻址BX+SI+di
25、sp8BX+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+DISIDIdisp16BX000001010011100101110111ALALCLCLDLDLBLBLAHAHCHCHDHDHBHBHAXAXCXCXDXDXBXBXSPSPBPBPSISIDIDIW=0W=1寄存器寻址mod=11modr/m存储器寻址
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 精品 寻址 方式 指令系统 编辑
限制150内