汇编材料 第3章 80X86的指系统和寻址方式.ppt
《汇编材料 第3章 80X86的指系统和寻址方式.ppt》由会员分享,可在线阅读,更多相关《汇编材料 第3章 80X86的指系统和寻址方式.ppt(136页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第三章 80X86的指令系统和寻址方式难重点难重点重点理解8086常用指令的功能,熟悉80X86的各种寻址方式 指令系统指令系统 一组指令的集合一组指令的集合 操作码操作码 操作数操作数 .操作操作数数指令指令 寻址方式寻址方式 与数据有关的寻址方式与数据有关的寻址方式 与转移地址有关的寻址方式与转移地址有关的寻址方式1.8086的寻址方式的寻址方式与数据有关的寻址方式与数据有关的寻址方式:以以 MOV 指令为例指令为例(MOVMOV指令格式:指令格式:MOV MOV reg/mem,SRCreg/mem,SRC)立即寻址立即寻址 MOV AX,3069H寄存器寻址寄存器寻址 MOV AL,B
2、H直接寻址直接寻址 MOV AX,2000H 寄存器间接寻址寄存器间接寻址 MOV AX,BX 寄存器相对寻址寄存器相对寻址 MOV AX,COUNT SI 基址变址寻址基址变址寻址 MOV AX,BP DI 相对基址变址寻址相对基址变址寻址 MOV AX,MASK BX SI 存储器寻址存储器寻址(1)立即寻址方式:操作数直接在指令中给出,即操立即寻址方式:操作数直接在指令中给出,即操作数随指令存放于代码段中。作数随指令存放于代码段中。指令格式:MOVAL,5MOVAX,3064HMOVAL,AMOVAX,1946H注意:注意:*只能用于只能用于SRC字段字段MOV40H,AL*SRC和和D
3、ST的字长一致的字长一致MOVAH,3064H*此方式不能对段寄存器和标志寄存器赋值。此方式不能对段寄存器和标志寄存器赋值。(2)寄存器寻址方式:操作数存于寄存器中,指令寄存器寻址方式:操作数存于寄存器中,指令中指定寄存器号。中指定寄存器号。MOVAX,CXMOVAL,BHMOVAX,3064H注意:注意:*字节寄存器只有字节寄存器只有AHALBHBLCHCLDHDL*SRC和和DST的字长一致的字长一致MOVAH,BX*CS不能用不能用MOV指令改变指令改变MOVCS,AX(3)直接寻址方式:操作数存放于存储单元中,该存直接寻址方式:操作数存放于存储单元中,该存储单元的储单元的16位偏移地址
4、(位偏移地址(EA)紧跟在操作码之后,直紧跟在操作码之后,直接包含在指令中,存放在代码段中。接包含在指令中,存放在代码段中。例例:MOV AX,2000H EA=2000H,假设假设(DS)=3000H,那么那么PA=32000H5030 32000AH AL3050(AX)=3050H例:例:MOV BX,1000H注意:注意:*隐含的段为数据段隐含的段为数据段DS*若若操作数不在数据段而是在其他段(如附加段)中,操作数不在数据段而是在其他段(如附加段)中,则则可使用段跨越前缀可使用段跨越前缀MOVAX,ES:2000H*操作数地址也可由变量(符号地址)表示操作数地址也可由变量(符号地址)表
5、示,但要但要注意变量的属性注意变量的属性VALUEDB10(在(在数据段中定义)数据段中定义)MOVAH,VALUE MOVAX,VALUE MOVAX,WORDPTRVALUE 例:MOV AX,3000H低地址低地址高地址高地址CS段段操作码操作码00H30H34H12H34H12HAXDS段段5000053000DS5000 0300053000+(4)寄存器间接寻址:操作数存于存储单元中,该存)寄存器间接寻址:操作数存于存储单元中,该存储单元的储单元的EA存放在基址寄存器存放在基址寄存器BX、BP或变址寄存或变址寄存器器SI、DI中。中。MOVAX,BXPA=16d(DS)+(BX)M
6、OVAX,ES:BXPA=16d(ES)+(BX)MOVAX,BPPA=16d(SS)+(BP)例:例:MOVCX,DI注意:注意:*用用BX存放存放EA时,隐含的段为数据段;而用时,隐含的段为数据段;而用BP时,时,则隐含的段为堆栈段,同样可以使用段跨越前缀。则隐含的段为堆栈段,同样可以使用段跨越前缀。*不允许使用不允许使用AX、CX、DX存放存放EAMOVAX,CX*SRC和和DST的字长一致的字长一致MOVDL,BX;BX指示一个字节单元指示一个字节单元MOVDX,BX;BX指示一个字单元指示一个字单元*适于数组、字符串、表格的处理适于数组、字符串、表格的处理低地址低地址高地址高地址CS
7、段段操作码操作码34H12H34H12HAXSS段段7000073000SS7000 0300073000+例:例:MOV AX,BPBP 有效地址有效地址=(BX)(BP)8位位(SI)16位位(DI)+位移量位移量(5)寄存器相对寻址方式:操作数的寄存器相对寻址方式:操作数的EA是一个基址是一个基址寄存器(寄存器(BX,BP)或变址寄存器(或变址寄存器(SI,DI)的内容的内容和指令中指定的和指令中指定的8位或位或16位位移量之和。实际上是在位位移量之和。实际上是在寄存器间接寻址的基础上加了一个寄存器间接寻址的基础上加了一个8位或位或16位的位移位的位移量。因此,该方式与寄存器间接寻址方式
8、类似。量。因此,该方式与寄存器间接寻址方式类似。指令格式指令格式:MOV AX,COUNTSI MOV AX,COUNTSI 或或 MOV AX,COUNT+SIMOV AX,COUNT+SI假设假设(DS)=(DS)=4 4000H,000H,(SI)=(SI)=010100H,COUNT=00H,COUNT=2 2000H000H,则则:PA=PA=42142100H00H假设假设(42142100H)=00H)=00500050H,H,那那么么 (AX)=(AX)=00500050H H*适于数组、字符串、表格的处理适于数组、字符串、表格的处理*这个这个COUNT在使用前要在前面定义,它
9、是一个在使用前要在前面定义,它是一个符号地址。符号地址。低地址低地址高地址高地址CS段段操作码操作码00H15H34H12H34H12HAXFS段段7000073500BX150073500+例:例:MOV DX,BX+1500DS7000 02000(6)基址变址寻址方式:基址变址寻址方式:EA是一个基址寄存器是一个基址寄存器(BX,BP)和一个变址寄存器(和一个变址寄存器(SI,DI)的内容的内容之和。两个寄存器号均在指令中指定。之和。两个寄存器号均在指令中指定。指令格式:指令格式:MOV AX,BX DIMOV AX,BX DI MOV AX,BX+DI MOV AX,BX+DI MOV
10、 AX,ES:BX SI MOV AX,ES:BX SI MOV AX,BX SIMOV AX,BX SI有效地址有效地址=(BX)(SI)(BP)(DI)+注意:注意:*使用使用BX时,隐含的段为数据段;使用时,隐含的段为数据段;使用BP时,则时,则为堆栈段为堆栈段*适于数组、字符串、表格的处理适于数组、字符串、表格的处理*必须是一个基址寄存器和一个变址寄存器的组合必须是一个基址寄存器和一个变址寄存器的组合MOVAX,BXBP MOVAX,SIDI(7)相对基址变址寻址方式:操作数的相对基址变址寻址方式:操作数的EA是一个基是一个基址寄存器和一个变址寄存器的内容和一个址寄存器和一个变址寄存器
11、的内容和一个8位或位或16位位位移量之和。实际上就是在基址变址寻址方式的基础位移量之和。实际上就是在基址变址寻址方式的基础上加了一个上加了一个8位或位或16位的位移量,因此两者类似。位的位移量,因此两者类似。MOV AX,MASK BX SI 或或 MOV AX,MASK BX+SI 或或 MOV AX,MASK+BX+SI例:例:MOV AX,ARRAYBXSI 有效地址有效地址=(BX)(SI)8位位(BP)(DI)16位位+位移量位移量课堂练习:已知(课堂练习:已知(DS)2000H,(,(BX)0100H,(,(SI)0002H,(,(20100H)12H,(20101H)34H,(,
12、(20102H)56H,(20103H)78H.(21200H)2AH,(21201H)4CH,(,(21202H)B7H,(21203H)65H问:试指出下列寻址方式,其物理地址值是多少?当问:试指出下列寻址方式,其物理地址值是多少?当执行了下列指令后执行了下列指令后AX寄存器中的值是多少?寄存器中的值是多少?1、MOVAX,1200H2、MOVAX,BX3、MOVAX,1200H4、MOVAX,BX5、MOVAX,1100BX6、MOVAX,BXSI7、MOVAX,1100BXSI访问存储器的方式访问存储器的方式 默认的默认的段寄存器段寄存器可可跨越的跨越的段寄存器段寄存器偏移地址偏移地址
13、取取指令指令 CS 无无 IP堆栈操作堆栈操作 SS 无无 SP一般数据访问一般数据访问 DS CS ES SS 有效地址有效地址EABP作为基址的寻址作为基址的寻址 SS CS DS ES BP串操作的源操作数串操作的源操作数 DS CS ES SS SI串操作的目的操作数串操作的目的操作数 ES 无无 DI段段 寄寄 存存 器器 的的 使使 用用 规规 定定例例:编写一段显示字符串编写一段显示字符串STRING的程序的程序DATA SEGMENTDATA SEGMENT STRING DB HAPPY NEW YEAR!,0DH,0AH,$STRING DB HAPPY NEW YEAR!
14、,0DH,0AH,$COUNT DW 17 COUNT DW 17 DATA ENDS DATA ENDS(1)直接寻址直接寻址 movmov dl,string dl,string movmov ah,2 ah,2 intint 21h ;21h ;显示字符显示字符 HH movmov dl,string+1 dl,string+1 movmov ah,2 ah,2 intint 21h ;21h ;显示字符显示字符 AA :(2)寄存器间接寻址寄存器间接寻址movmov cxcx,count ;,count ;movmov cxcx,17 ,17 movmov bxbx,offset st
15、ring;string,offset string;string的偏址的偏址 bxbxNext:Next:movmov dl,dl,bxbx movmov ah,2 ah,2 intint 21h ;21h ;显示一个字符显示一个字符 inc inc bxbx loop next ;loop next ;循环指令循环指令(3)寄存器相对寻址寄存器相对寻址movmov cxcx,count ;,count ;movmov cxcx,17 ,17 movmov si si,0 ,0 Next:Next:movmov dl,dl,stringsistringsi ;movmov dl,dl,stri
16、ng+sistring+si movmov ah,2 ah,2 intint 21h ;21h ;显示一个字符显示一个字符 inc inc si si loop next ;loop next ;循环指令循环指令(4)基址变址寻址基址变址寻址movmov cxcx,count ;,count ;movmov cxcx,17 ,17 movmov bxbx,offset string;string,offset string;string的偏址的偏址 bxbx movmov si si,0,0Next:Next:movmov dl,dl,bxbx si si ;movmov dl,dl,bx+s
17、ibx+si movmov ah,2 ah,2 intint 21h ;21h ;显示一个字符显示一个字符 inc inc si si loop next ;loop next ;循环指令循环指令(5)DOS显示字符串功能显示字符串功能movmov dxdx,offset string ;string,offset string ;string的偏址的偏址 dxdx ;lea ;lea dxdx,string,string movmov ah,9 ah,9 intint 21h ;21h ;显示一串字符显示一串字符与转移地址有关的寻址方式:与转移地址有关的寻址方式:段内寻址段内寻址 段内直接寻
18、址段内直接寻址 JMP NEAR PTR NEXT 段内间接寻址段内间接寻址 JMP TABLE BX 段间寻址段间寻址 段间直接寻址段间直接寻址 JMP FAR PTR NEXT 段间间接寻址段间间接寻址 JMP DWORD PTR BX 前面介前面介绍的与数据有关的的与数据有关的寻址方式最址方式最终确定的是一确定的是一个数据的地址,而个数据的地址,而这里介里介绍的与的与转移地址有关的移地址有关的寻址方式最址方式最终确定一条指令的地址。确定一条指令的地址。顺序序执行的指令行的指令地址是由指令指地址是由指令指针寄存器寄存器IP自自动增量形成的,而程增量形成的,而程序序转移的地址必移的地址必须由
19、由转移移类指令和指令和CALL指令指出指令指出。(1)段内直接寻址段内直接寻址转向的有效地址转向的有效地址=当前当前(IP)+位移量位移量(8bit/16bit)注意:位移量是有符号数注意:位移量是有符号数例例:JMP NEAR PTR NEXT 近转移近转移 -32768 +32767 JMP SHORT NEXT 短转移短转移 -128 +127 (2)段内间接寻址段内间接寻址 转向的有效地址是一个寄存器或存储单元的内容。转向的有效地址是一个寄存器或存储单元的内容。(可用除立即数以外的任何一种数据寻址方式得到可用除立即数以外的任何一种数据寻址方式得到)例:例:TABLE=20ATABLE=
20、20A1 1H (BX)=1256H (SI)=528EHH (BX)=1256H (SI)=528EH(DS)=2000H (232F8H)=3280H (264E4H)=2450H(DS)=2000H (232F8H)=3280H (264E4H)=2450H则则:JMPBX;(IP)=1256HJMPTABLEBXJMPWORD PTRTABLEBX;(IP)=3280HJMPBXSIJMPWORD PTRBXSI;(IP)=2450H例:例:JMPARRAYBX段内段内转移只修改转移只修改IP而不修改而不修改CS;但是段间转移则不仅要修改但是段间转移则不仅要修改IP而且要修改而且要修改
21、CS。code1 segmentcode1 segment jmpjmp far far ptrptr next next code1 endscode1 endscode2 segment code2 segment next:next:.code2 endscode2 ends(3)段间直接寻址段间直接寻址 用指令中提供的转向段地址和偏移地址取代用指令中提供的转向段地址和偏移地址取代CS 和和 IP 例例:(4)段间间接寻址段间间接寻址 用存储器中的两个相继字的内容取代用存储器中的两个相继字的内容取代CS和和IP(存储单元的地址可用存储器寻址方式得到存储单元的地址可用存储器寻址方式得到)例
22、:例:JMPDWORD PTRINTERS+BXPA=(DS)PA=(DS)2 24 4+(BX)+INTERS+(BX)+INTERS (PA+1,PA)IP (PA+1,PA)IP (PA+3,PA+2)CS (PA+3,PA+2)CS例:例:JMP DWORD PTR BX第第3章章 练习练习Page 107 3.1 3.3 3.5 3.7 3.11 2.8086的指令系统的指令系统 数据传送指令数据传送指令 算术指令算术指令 逻辑指令逻辑指令 串处理指令串处理指令(放到第五章讲)(放到第五章讲)控制转移指令控制转移指令(放到第五章讲)(放到第五章讲)处理机控制与杂项操作指令处理机控制与
23、杂项操作指令重点关注:重点关注:指令的汇编格式指令的汇编格式标号标号:指令助记符指令助记符目的操作数目的操作数,源操作数源操作数;注释;注释指令的基本功能指令的基本功能该指令能够实现何种操作。通常该指令能够实现何种操作。通常指令助记符就是指令功能的英文单词或其缩写形式指令助记符就是指令功能的英文单词或其缩写形式指令支持的寻址方式指令支持的寻址方式该指令中的操作数可以采用该指令中的操作数可以采用何种寻址方式何种寻址方式指令的执行对标志位的影响指令的执行对标志位的影响该指令执行后是否对该指令执行后是否对各个标志位有影响,以及如何影响各个标志位有影响,以及如何影响指令的特殊要求指令的特殊要求该指令其
24、他需要特别注意的地方,该指令其他需要特别注意的地方,如指令执行时的约定设置、必须预置的参数、隐含使如指令执行时的约定设置、必须预置的参数、隐含使用的寄存器等用的寄存器等在使用指令时必须注意的问题:在使用指令时必须注意的问题:n在单操作数的指令中,如果操作数是存储器寻址,在单操作数的指令中,如果操作数是存储器寻址,则一般需指明操作数的类型。则一般需指明操作数的类型。qINC2000H INCBYTEPTR2000HINCARRAY;ARRAY在数据段有定义在数据段有定义n在双操作数的指令中,两个操作数不能全为存在双操作数的指令中,两个操作数不能全为存储器寻址;两个操作数一般不能是段寄存器储器寻址
25、;两个操作数一般不能是段寄存器(除(除MOV指令外,在指令外,在MOV指令中指令中CS也不能做也不能做为目的操作数);目的操作数不能是立即数、为目的操作数);目的操作数不能是立即数、CS;两个操作数的类型必须保持一致。;两个操作数的类型必须保持一致。qMOVARRAY,BX qADDAX,DS qMOVCS,AX qADD1234H,BX qADDAX,ARRAY(ARRAY是字节数据是字节数据)qMOV2000H,34H 数据传送指令:数据传送指令:通用数据传送指令通用数据传送指令MOV、PUSH、POP、XCHG 累加器专用传送指令累加器专用传送指令IN和和OUT(放到第八章讲)、(放到第
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编材料 第3章 80X86的指系统和寻址方式 汇编 材料 80 X86 系统 寻址 方式
限制150内