汇编语言程序设计第三章

上传人:s9****2 文档编号:577895898 上传时间:2024-08-23 格式:PPT 页数:20 大小:295.41KB
返回 下载 相关 举报
汇编语言程序设计第三章_第1页
第1页 / 共20页
汇编语言程序设计第三章_第2页
第2页 / 共20页
汇编语言程序设计第三章_第3页
第3页 / 共20页
汇编语言程序设计第三章_第4页
第4页 / 共20页
汇编语言程序设计第三章_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《汇编语言程序设计第三章》由会员分享,可在线阅读,更多相关《汇编语言程序设计第三章(20页珍藏版)》请在金锄头文库上搜索。

1、第三章第三章 实指令寻址指令系统实指令寻址指令系统3.1 指令的基本寻址方式指令的基本寻址方式3.1.1 指令的基本格式(1)l指令一般由操作码OP、寻址方式(Addressing Mode)和一个或多个操作数OD等字段组成。l按操作数个数划分,可表示为:OP 操作数OP 目的操作数,源操作数 ;至少一个操作数是寄存器OP ;操作数隐含 例如: INC AX ;AX+1AX SUB BX,CX ;BX-CX BX CLC ;0 CF3.1.1 指令的基本格式指令的基本格式(2)l寻址方式用来说明操作数的偏移地址EA(Effective Address)的形成方式。偏移地址也称为有效地址, 指的

2、是相对于段起始地址的位移。 段寄存器存放段的起始地址0000H0001H0002H EA2000H PA20000H20001H20002H3.1.1 指令的基本格式指令的基本格式(3)BXBPSIDI即EA由三顶组成,分别是DISP(位移量),基址寄存器,以及变址寄存器。每一项都可以为空,但是每一项的值最多出现一次。于是可以存在DISP , BX, BP, SI , DI , DISPBXSI等。 错误的EA构成: DISPBXBP 或 SIDI例如:设BX=2000H, SI=1000H,则0F000HBXSI的有效地址=0F000H+2000H+1000H=2000H(12000H是错误

3、的,因为溢出了)对于内存操作数的寻址方式,可以用以下式子概括: EADISP3.1.1 指令的基本格式指令的基本格式(4)l存储器单元的物理地址 PA=段寄存器的值*24+偏移地址 其中PA为20位的地址,段地址及偏移地址为16位。l以BP来寻址PA,默认的段寄存器是SS;以BX,SI,DI来寻址PA,默认采用DS。可以采用段超越来指定需要段存器。DS可被CS,SS,ES,FS,GS超越;SS能被CS,DS,ES,FS,GS超越。 3.1.1 指令的基本格式指令的基本格式(5)例如:设FIVE的段地址是4000H,存放在DS中,EA=10H , 则 FIVE DB 5 MOV AL,FIVE

4、变量FIVE的PA=DS*24+EA=40000H+10H=40010H设FIVE的段地址已经存放在ES中,则通过段超越前缀可以改变默认指定的段寄存器。 MOV AL, ES:FIVE ;PA=ES*24+EA3.1.2 数据寻址方式数据寻址方式l1、立即寻址、立即寻址 操作数直接放在指令中,又称为立即数寻址。 如:MOV AX, 2018H MOV CL,96H 存储器段码段OP18H20H指令AXAHAL2、寄存器寻址、寄存器寻址操作数存放在寄存器中。例如:MOV DX,AX VAR DW ? MOV VAR, AX 注意:如果两个操作数都是寄存器,则类型(长度)必须一致。 MOV DX,

5、AL ;错误,AL是8位,DX则是16位,类型不一致。 3、直接寻址、直接寻址 指令操作码OP后面直接给出操作数的16位偏移地址EA。 偏移地址可以是数值地址或符号地址。 直接寻址给出地址的默认段寄存器是数据段寄存器(DS)。 例如: MOV AX, 3020H 或者: VAR DW 86 MOV AX,VAR 段超越形式: MOV AX,ES:3020H DS=4000H3020H3021H数据段3022H74HFAH301FH4.寄存器间接寻址寄存器间接寻址 操作数的偏移地址存放在基址或变址寄存器中。基址寄存器:BX,BP变址寄存器:SI,DI例如: 设SI=1800H , DS=3000

6、H , 则MOV AX, SI ;则EA=1800H, DS=3000H, PA=31800H31800H31801HDS=3000H30000HSI5AH12HAHAL5.寄存器相对寻址寄存器相对寻址l操作数的偏移地址EA是指令中8位或16位位移量(DISP8,16)加上基址寄存器或变址寄存器的内容之和。即EA=BXBP SI DI+DISP8,16 例如:设COUNT=2000H, SI=06H, DS=4000H, 则 COUNT DW 5,6,3,7,8 MOV AX, COUNTSI op0020代码段DS40000COUNT 42000 42001 42002 42003 4200

7、4 420055060307080 42006 42007 42008 42009SI=6数据段AHALAX6.基址变址寻址基址变址寻址l操作数的偏移地址EA是由指令说明的一个基址寄存器和一个变址寄存器的内容之和。 EA=BXBP+SI DI 如:BX=100H, SI=80H, DS=4000H MOV AX,BXSI PA=?7.相对基址变址寻址相对基址变址寻址l操作数的偏移地址是指令中一个8位或16位的偏移量加上基址寄存器和变址寄存器的内容之和。即: EA=BX BP+SI DI+DISP8,16 如:设COUNT=0140H, BX=600H, SI=10H, DS=2000H MOV

8、 AX,COUNTBXSI PA=? 练习练习l已经DS=2000H,SS=2001H, BP=0F3H, SI=2,内存单元的值如图所示。给出下列指令的源操数的寻址方式,以及执行后AX的值。(1)MOV AX,1200H (2) MOV AX,BX (3) MOV AX,BX (4) MOV AX,1BX (5) MOV AX,BXSI (6) MOV AX,BPSI (7) MOV AX, DS:11HBPSI (8) MOV AX, 0FFFFHBXSI 10B7H107CH6534H12H20107H20106H20105H20104H20103H20102H20101H20100H3

9、.14 程序转移寻址程序转移寻址(1)l寻址方式通常用来计算操作数的地址,也有少数指令为了形成程序转移地址(如无条件转移指令JMP, 调用指令CALL等)。l程序正常顺序执行,每取出一条指令执行IP+nIP, n为取出指令的字节数,然后形成下一条指令的地址。PA=CS24+IPl程序跳转时,此时需要算出EA并修改IP,段间跳转时需要修改CS。程序转移寻址程序转移寻址(2)代码段10000H10001H10002H10003H10004H指令1指令2当前取出执行的指令的地址为:10000HIP指向下一条指令的地址,IP=00H+02=02H10000H10001H10002H10003H1000

10、4H代码段指令1指令2JMP 08H10007H10008H10009H指令NIP=08H1、段内直接寻址、段内直接寻址l转移偏移地址EA是指令中8位或16位位移量(DISP8,16)与指令指针IP当前内容之和,然后送入IP。即EA=IP+DISP8,16IP 当位移量是8位时,EA形成一个转移范围在-128 127之间的短距离。位移量是16位时,则形成转移范围在64KB之间近距离。例如: JMP NLAB JMP SHORT SLAB JE SLAB NLAB: ADD AX,BX SLAB: MOV DX,CX SLAB: INC SI (近跳转)(短跳转)(短跳转)、段内间接寻址、段内间

11、接寻址l转移偏移地址EA如果指定是16位的寄存器,则把寄存器的内容IP。例如:JMP BX ; EA=BX, EA IPlEA如果指向是存储器的一个字类型地址,则把该地址指向的内存单元的内容IP。例如:JMP NLABBX 或 JMP word ptr NLABBX ;EA=NLAB+BX,(EA) IP 3、段间直接寻址、段间直接寻址l用指令提供的EAIP,同时用指令提供的转移段地址CS。例如:CALL FAR PTR NEXTLAB ;FAR PTR表示段间转移操作符 4、段间间接寻址、段间间接寻址l根据存储器的数据寻址方式获得内存中的两个字数据,第一字的内容作为转移的偏移地址IP,另一个字内容CS。 例如: JMP FAR PTR BX ;EA=BX, (EA) IP, (EA+2) CS JMP DWORD PTR BX

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 研究生课件

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