寻址方式与指令系统(徐建民)

上传人:aa****6 文档编号:54681836 上传时间:2018-09-17 格式:PPT 页数:84 大小:956KB
返回 下载 相关 举报
寻址方式与指令系统(徐建民)_第1页
第1页 / 共84页
寻址方式与指令系统(徐建民)_第2页
第2页 / 共84页
寻址方式与指令系统(徐建民)_第3页
第3页 / 共84页
寻址方式与指令系统(徐建民)_第4页
第4页 / 共84页
寻址方式与指令系统(徐建民)_第5页
第5页 / 共84页
点击查看更多>>
资源描述

《寻址方式与指令系统(徐建民)》由会员分享,可在线阅读,更多相关《寻址方式与指令系统(徐建民)(84页珍藏版)》请在金锄头文库上搜索。

1、本章内容: 寻址方式; 基本指令系统。,第三章 寻址方式与指令系统,本章要求,教学重点及难点:,寻址方式,指令的使用,1.了解指令寻址的概念,掌握常用的数据寻址方式; 2. 了解指令寻址的方式; 3. 熟悉常用的指令;,计划学时: 8学时,指令的基本格式:,操作数字段可以为0个、一个、二个或三个。对应的称为零地址指令、一地址指令、二地址指令或三地址指令。,3.1 寻址方式,X86汇编指令中,典型二地址指令,例如,MOV指令的格式为:MOV DST, SRC 其中: DST称为目标(目的)操作数;SRC称为源操作数。 执行的操作:(DST)(SRC),寄存器间接寻址方式,直接寻址方式,数 据 寻

2、 址 方 式,立即寻址方式,寄存器寻址方式,基址变址寻址方式,寄存器相对寻址方式,相对基址变址寻址方式,比例变址寻址方式,3.1.1 数据寻址方式,MOV AX, 2000H,MOV AX, BX,MOV AX, 2000H,MOV AX, BX,MOV AX, BXSI,MOV AX, ARRAYBX,MOV AX, ARRAYBXDI,MOV EAX , EBX4*ECXMOV EAX , ARRAY4*ECXMOV AX , EBX2*EDI,1. 立即寻址方式(immediate addressing),操作数直接存放在指令中。,【例】:指令 MOV AL, 5MOV AX, 3064

3、HMOV EBX,12345678H,注意: 该寻址方式只能用在SRC(即源操作数)的寻址上,不能用于DST。 SRC 和 DST 的字长(位数)要一致。,错误的指令:MOV 2000H,AXMOV DL,300HMOV AH,257,【例】:执行指令 MOV AX,5678H,OP,78H,56H,代码段,操作码,立即数,指令执行后,AX的值为5678H,2. 寄存器寻址方式(register addressing),操作数在寄存器中,指令指定寄存器号。,【例】:指令 MOV AL, CLMOV CX, DXMOV EAX,EBX,注意: SRC 和 DST 的字长(位数)要一致。 DST不

4、能为CS(代码段寄存器)。,错误的指令:MOV CS,AXMOV DL,BXMOV SI,EAX,3. 直接寻址方式(direct addressing),EA=偏移量,默认情况: 物理地址=DS10H+EA,允许数据存放在数据段以外的其他段中,此对应在指令中指定段跨越前缀,在计算物理地址时应使用指定的段寄存器。例如,若指令为 MOV AX,ES:VALUE则对应该SRC的物理地址为 ES10H+EA,直接寻址方式举例,【例】: 指令 MOV AX, 2000H ,其中DS=3000H。该指令执行完后,AX的值。,【分析】:EA=2000H从指令中,可以知道,使用的段是数据段,所以该操作数的物

5、理地址为:,3000H10H+2000H=32000H,指令执行完后, AX=3050H,【例】: 指令 MOV AX, 3000H ,其中DS=3000H。该指令执行完后,AX的值。,【分析】:EA=3000H从指令中,可以知道,使用的段是数据段,所以该操作数的物理地址为:,3000H10H+3000H=33000H,指令执行完后, AX=5678H,4. 寄存器间接寻址方式(register indirect addressing),注: R为基址寄存器(BP、BX)或变址寄存器(SI、DI)。,在这种寻址方式中,操作数存放在存储器中,而操作数的偏移地址EA在指令所指定的寄存器中,即寄存器

6、的内容为操作数的偏移地址EA 。,寄存器,指令,EA=(R),物理地址计算(16位寻址时):,指令中指定的寄存器是BX、SI、DI,没有指出段跨越前缀,则操作数默认放在数据段中,所以用DS寄存器的内容作为段地址,即操作数的物理地址(PA)为:PA=DS10H十BX或SI或DI,如果指令指定BP寄存器,则操作数默认放在堆栈段中,段地址在SS中,即操作数的物理地址为:PA=SS10H十BP,与直接寻址方式一样,寄存器间接寻址指令也可指定段跨越前缀来取得其它段中的数据。对于指定段跨越前缀(如使用ES),则操作数的物理地址为:PA=ES10H十BX或SI或DI,【例】: 分析指令 MOV AX,ES:

7、BX MOV AX,BX 执行后AX的值各是多少?已知 DS=2000H, ES=4000H,BX=0300H,(40300H)=0DE10H ,(20300H)=27ABH 【解】: 源操作数对应的物理地址=4000H10H十0300H = 40300H则执行指令后, AX=0DE10H。 源操作数对应的物理地址=2000H10H十0300H = 20300H则执行指令后, AX=27ABH。,【例】: ADD AX,BP 指令执行前:AX=50A0H,BP=0025H, SS=3000H,(30025H)=471AH。源操作数对应的物理地址=SS 10H 十 BP=3000H10H十002

8、5H=30025H执行指令:(30025H)+ AX =471AH+50A0H=97BAH则指令执行完后,AX=97BAH。,5.寄存器相对寻址方式(register relative addressing),其中:R为基址寄存器或变址寄存器。D为偏移量。,允许使用的寄存器及对应的段与寄存器间接寻址方式的要求一样!注意:对于8位位移量,计算时要扩展到16位(带符号)。即:对于00H-7FH的数,扩展成16位带符号数时,高8位直接填零,为:0000H-007FH;若为8XH以上的数,扩展后为0FF8XH。,物理地址的计算,【例】 分析指令 MOV AX,DISPDI (或写成MOV AX,DI+

9、DISP) 执行后,AX的值。已知 DS=4000H,DI=2000H,DISP=1000H;设指令执行前: AX=7C69H,(43000H)=55H,(43001H)=66H。 【解】 计算有效地址EA:EA=2000H+1000H=3000H对应物理地址=DS10H+EA=40000H+3000H=43000H。指令执行后:AX=6655H,(43000H)=55H,(43001H)=66H, DS=4000H,DI=2000H。这种寻址方式也适用于数组、表格的处理,也特别适合于循环等编程中选择的寻址方式。,【例】: MOV AX,COUNTSI (可写为 MOV AX,COUNT+SI

10、)设 DS=3000H,SI=2000H,COUNT=3000H则操作数的物理地址为:PA =DS 10H +SI+COUNT=3000H10H+2000H+3000H=35000H则指令执行后,AX=1234H。,6. 基址变址寻址方式(Based indexed addressing),操作数的有效地址是一个基址寄存器和一个变址寄存器的内容之和。两个寄存器均由指令指定。,EA=(RB)+(RI) RB为基址寄存器,RI为变址寄存器.,+,操作数,存储器,EA,其有效地址为,合法的指令用法:MOV AX, BX DIMOV AX, BX+DIMOV AX, ES:BX SI,错误的指令格式:

11、MOV AX,SIDIMOV CX,BXBP, 适于数组、字符串、表格的处理。,其物理地址为,PA=段基址10H + EA,【例】分析指令MOV DX,BP+DI ( MOV DX,BPDI)指令执行结果。设SS=3000H,DS=2000H,BP=2000H,DI=0500H;指令执行前:DX=1234H,(32500H)=78H, (32501H)=56H 【解】:源操作数有效地址:EA=BP+DI=2000H+0500H=2500H;源操作数的物理地址PA=SS10H+EA=30000H+2500H=32500H。指令执行后:DX=5678H, SS=3000H,DS=2000H,(32

12、500H)=78H,(32501H)=56H,BP=2000H,DI=0500H。注:该寻址方式允许使用段超越前缀.【例】 MOV AX,SS:BX+SI,7. 相对基址变址寻址方式 ( relative based indexed addressing),操作数的有效地址是一个基址寄存器与一个变址寄存器及位移量之和。,EA=(RB)+(RI)+D RB为基址寄存器,RI为变址寄存器,D为位移量。,基地址,+,操作数,段地址,基址寄存器,段寄存器,存储器,指 令,+,基址寄存器,EA,变址寄存器,位移量,变址值,变址寄存器,物理地址表示:若无段前缀,使用BX时,默认使用段寄存器为DS,使用BP

13、时,默认使用的段寄存器为BP。,【例】:MOV AX,MASKBXSI (或:MOV AX,MASKBX+SI 或 MOV AX,MASK+BX+SI )如(DS)=3000H,(BX)=2000H,(SI) =1000H,MASK=0250H,(33250H)=1234H。则 EA =MASK+(BX)+(SI) =0250H+2000H+1000H=3250HPA=3000H10H+EA =33250H指令执行完后, (AX)=1234H,OP,OP,00,30,34,12,30000,33250,数据段,代码段,操作码,MASK,【例】指令: MOV AX,DISPBXSI或 MOV A

14、X,DISPBX+SI 或 MOV AX,BX+SI+DISP三种写法都是一样的,汇编程序都能识别。如DS=4000H,BX=3000H,SI=2000H,DISP=0600H,执行前:AX=673AH,(45600H)=83H,(45601H)=6AH 【解】 源操作数的有效地址 EA=BX+SI+DISP=3000H+2000H+0600H=5600H ;其物理地址PA=DS10H+EA=40000H+5600H=45600H。指令执行后, (AX)=6A83H,程 序 寻 址 方 式,直接程序寻址,远转移(段间转移 ),含义:CS和IP的值都发生变化,近转移(段内转移 ),含义:CS的值

15、不改变,只改变IP的值,例:JMP BEGINJMP NEAR PTR PROG,例:JMP FAR PTR NEXT,相对程序寻址,短转移,近转移,位移量是1个字节,位移量是2个字节,EA=IP+位移量,间接程序寻址,例:JMP SHORT PROG3,例:JMP NEAR PTR PROG2,EA=R+mem,例:JMP AXJMP NEAR PTR BX,3.1.2 程序存储器寻址方式,用途:确定转移指令和子程序调用指令的转向地址 分类:直接、相对和间接。,目标转移地址中的有效地址是当前IP寄存器内容和指令中指定的8位或16位位移量之和。计算公式为:IP目标=IP当前+DISP 当前IP总是指向下一条指令的首地址。 1当位移量为8位时,称为短转移,指令格式为:JMP SHORT DISP 其转移范围相对于当前IP: -128 +127 2当位移量为16位时,称为近转移,指令格式为:JMP NEAR PTR DISP 其转移范围相对于当前IP: -32768 +32767,段内直接寻址(Intrasegment direct addressing),

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号