第二章 寻址方式_第1页
第二章 寻址方式_第2页
第二章 寻址方式_第3页
第二章 寻址方式_第4页
第二章 寻址方式_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2.1 寄存器寻址寄存器寻址2.2 寄存器间接寻址寄存器间接寻址2.3 变址寻址变址寻址2.4 基址加变址寻址基址加变址寻址2.5 立即寻址立即寻址2.6 直接寻址直接寻址2.7 跨段的有关问题跨段的有关问题2.8 综合举例综合举例第二章第二章 寻址方式寻址方式寻址方式寻址方式:即寻找操作数存放地址的方式。:即寻找操作数存放地址的方式。特点:特点:操作数存放在指令指明的寄存器中。操作数存放在指令指明的寄存器中。汇编格式:汇编格式:R 其中其中R表示寄存器名。表示寄存器名。图形表示:图形表示: 2.1 寄存器寻址寄存器寻址【例例2.12.1】下列程序执行后,下列程序执行后,(AX)=?,(?,(

2、BX)=? MOV AX,1234H MOV BX,5678H ADD AX,BX 图形表示:图形表示: 执行:执行:1234HAX 5678HBX (AX)+(BX)AX 执行后:执行后:(AX)=68ACH,(,(BX)=5678H注意:注意: 1、源操作数和目的操作数类型必须一致、源操作数和目的操作数类型必须一致 2、通常用累加器、通常用累加器AX存放运算结果存放运算结果适用于:适用于:经常存取的操作数适于寄存器寻址。经常存取的操作数适于寄存器寻址。特点:特点:操作数存放在存储器中,而操作数的偏移操作数存放在存储器中,而操作数的偏移地址地址EAEA存放在指令指名的寄存器中。存放在指令指名

3、的寄存器中。汇编格式:汇编格式:RR图形表示:图形表示:2.2 寄存器间接寻址寄存器间接寻址偏移地址偏移地址EA计算方法如下:计算方法如下:EA=SISI作间址寄存器。作间址寄存器。 DI DI作间址寄存器。作间址寄存器。BX BX作间址寄存器。作间址寄存器。BP BP作间址寄存器。作间址寄存器。执行指令:执行指令:MOV AX ,BP 执行后:(执行后:(AX)=?,(BP)=?,(SS)=?,(20030H)=?图形表示如下:图形表示如下: 【例例2.2】寄存器和存储器内容分别为:(寄存器和存储器内容分别为:(AX)=0,(BP)=0030H,(,(SS)=2000H,(,(20030H)

4、=1234H执行:执行:(SS)左移)左移4位位+(BP)AX执行后:执行后:(AX)=1234H,其它不变,其它不变注意:注意:只有寄存器只有寄存器SI、DI、BP、BX能作为间址寻能作为间址寻址寄存器,其中址寄存器,其中BX、DI、SI间址寻址的操作数对间址寻址的操作数对应当前数据段应当前数据段DS,BP间址寻址的操作数对应堆间址寻址的操作数对应堆栈段栈段SS。适用于:适用于:适用于在存储区占用一片连续存储单元,适用于在存储区占用一片连续存储单元,而只为存储区首址给出变量名的情况,如数组、而只为存储区首址给出变量名的情况,如数组、字符串的操作。字符串的操作。特点:特点:操作数存放在存储器中

5、,而操作数的偏移地操作数存放在存储器中,而操作数的偏移地址址EAEA是指令中指名的寄存器的内容与指令中给出是指令中指名的寄存器的内容与指令中给出的位移量之和。的位移量之和。汇编格式:汇编格式:XRXR(X X表示表示位移量位移量,是,是8 8位或位或1616位二进位二进制补码表示的有符号数)制补码表示的有符号数)图形表示如下:图形表示如下:2.3 变址寻址变址寻址偏移地址偏移地址EA计算方法如下:计算方法如下:【例例2.32.3】设执行前设执行前:(:(AX)=0040H,(,(BX)=0030H,(,(DS)=2000H,(,(20036H)=0050H 执行指执行指令:令:ADD 6BX,

6、AX执行后:执行后:(AX)=?,(,(BX)=?,(,(DS)=?,(20036H)=?图形表示如下:图形表示如下:执行:执行:(20036H)+(AX) 20036H执行后:执行后:(AX)=0040H,(,(BX)=0030H,(,(DS) =2000H,(,(20036H)=0090H 注意:注意:只有寄存器只有寄存器SI、DI、BP、BX能作为间址寻能作为间址寻址寄存器,其中址寄存器,其中BX、DI、SI间址寻址的操作数对间址寻址的操作数对应当前数据段应当前数据段DS,BP间址寻址的操作数对应堆间址寻址的操作数对应堆栈段栈段SS。适用于:适用于:适用于在存储区占用一片连续存储单元,适

7、用于在存储区占用一片连续存储单元,而只为存储区首址给出变量名的情况,如数组、而只为存储区首址给出变量名的情况,如数组、字符串的操作。字符串的操作。特点:特点:操作数在存储器中,操作数的偏移地址操作数在存储器中,操作数的偏移地址EAEA是指是指令中指定的基址寄存器内容、变址寄存器内容和位令中指定的基址寄存器内容、变址寄存器内容和位移量移量X X三项之和。三项之和。汇编格式:汇编格式:X BR+IRX BR+IR图形表示:图形表示:2.4 基址加变址寻址基址加变址寻址操作数偏移地址操作数偏移地址EA计算方法如下计算方法如下【例例2.32.3】设设 (DS ) = 2100H,(,(BX)= 015

8、8H,(DI)= 10A5H,(,(221FDH)=1234H执行指执行指令:令:MOV AX, BXDI 执行后:执行后:(AX)=?,(,(BX)=?,(,(DS)=?,(DI)=?,(?,( 221FD H)=?执行:执行:(DS)左移)左移4位位+(BX)+(DI) AX 即(即(221FDH) AX执行后:执行后:(AX)=1234H,其它不变,其它不变注意:注意:1、基址寄存器只能是、基址寄存器只能是BP、BX,变址寄存器只能是,变址寄存器只能是 DI、SI;2、基址寄存器、基址寄存器BX对应当前数据段对应当前数据段DS,基址寄存器,基址寄存器 BP对应堆栈段对应堆栈段SS。适用于

9、:适用于:适用于在存储区占用一片连续存储单元,而适用于在存储区占用一片连续存储单元,而只为存储区首址给出变量名的情况,如数组、字符只为存储区首址给出变量名的情况,如数组、字符串的操作。串的操作。特点:特点:操作数直接放在指令中,即存放在操作码的操作数直接放在指令中,即存放在操作码的下一单元,是一个下一单元,是一个8 8位或位或1616位二进制补码表示的有位二进制补码表示的有符号数。符号数。汇编格式:汇编格式:n n(n n为立即操作数,是用为立即操作数,是用8 8位或位或1616位二位二进制补码表示的有符号数)进制补码表示的有符号数)图形表示:图形表示: 2.5 立即寻址立即寻址【例例2.5】

10、MOV AX, 10执行后(执行后(AX)=?分析:分析:该例中源操作数为立即寻址方式,立即数为该例中源操作数为立即寻址方式,立即数为10,存放在指令的下一单元。,存放在指令的下一单元。图形表示:图形表示:执行:执行:10AX执行后:执行后:(AX)=000AH 注意:注意:立即寻址只能用于源操作数寻址立即寻址只能用于源操作数寻址适用于:适用于:主要用于给寄存器或存储器赋初值,也可主要用于给寄存器或存储器赋初值,也可与寄存器操作数或存储器操作数进行算术逻辑运与寄存器操作数或存储器操作数进行算术逻辑运算。算。特点:特点:操作数存放在存储器中,操作数的偏移地址紧跟操作数存放在存储器中,操作数的偏移

11、地址紧跟在操作码后面。在操作码后面。汇编格式:汇编格式:含有变量的地址表达式。含有变量的地址表达式。 段寄存器名:段寄存器名:EA EA 。图形表示:图形表示:2.6 直接寻址直接寻址【例例2.6】寄存器和存储器内容为寄存器和存储器内容为:(AX)=1212H,BUF为数据段定义的变量,其偏移地址是为数据段定义的变量,其偏移地址是2000H,(DS)=3000H,(,(32000H)=4545H。执行指令执行指令:MOV AX ,BUF执行后:(执行后:(AX)=?图形表示:图形表示:执行:执行:(BUF的的EA+(DS)左移)左移4位)位)AX 即(即(32000H)AX执行后:执行后:(A

12、X)=4545H注意:注意:当用常量给出操作数的偏移地址时,其前必当用常量给出操作数的偏移地址时,其前必须写明相应的段寄存器名。须写明相应的段寄存器名。 如:如:MOV AX, 2000H与与MOV AX, 2000H适用于:适用于:处理单个变量处理单个变量思考:思考:这六种寻址方式中,哪些寻址方式机器运行这六种寻址方式中,哪些寻址方式机器运行的速度和效率高?为什么?的速度和效率高?为什么?等价等价思考题思考题1、(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100H)=12H, (20101H)=34H,(20102H)=56H,(20103H)=78H, (212

13、00H)=2AH,(21201H)=4CH,(21202H)=B7H, (21203H)=65H,试说明下列各条指令的寻址方式及执行完,试说明下列各条指令的寻址方式及执行完成后成后AX寄存器的内容。寄存器的内容。 (1)MOV AX,1200H (2)MOV AX,BX (3)MOV AX,DS:1200H (4)MOV AX,BX (5)MOV AX,1100BX (6)MOV AX,BXSI (7)MOV AX,1100BXSI(AX)=1200H(AX)=0100H(AX)=4C2AH(AX)=3412H(AX)=4C2AH(AX)=7856H(AX)=65B7H2、写出把首地址为、写出

14、把首地址为BLOCK的字数组的第的字数组的第6个字送个字送到到DX寄存器的指令,并分别用寄存器间接寻址、寄存器的指令,并分别用寄存器间接寻址、变址寻址和基址加变址寻址完成。变址寻址和基址加变址寻址完成。寄存器间接寻址寄存器间接寻址:MOV BX, OFFSET BLOCK+0AH MOV DX, BX 变址寻址变址寻址: MOV BX, 0AH MOV DX, BLOCKBX基址加变址寻址基址加变址寻址:MOV BX, OFFSET BLOCK MOV SI, OAH MOV DX, BXSI默认状态:默认状态:BPBP 对应对应 SSSS段段 BX BX 对应对应 DSDS段段问题:问题:如

15、何否定默认状态?如何否定默认状态?解决方法:解决方法:用跨段前缀指明操作数所在段的段寄存用跨段前缀指明操作数所在段的段寄存器名。器名。跨段前缀汇编格式:跨段前缀汇编格式:段寄存器名段寄存器名:操作数地址。操作数地址。2.7跨段相关问题跨段相关问题【例例2.7】 MOV MOVAXAX,DSDS:BP BP MOV MOVCXCX,SSSS:SI SI 分析:分析:该例中,该例中,DSDS:,:,SSSS:均为跨段前缀,此时默:均为跨段前缀,此时默认状态无效,操作数的物理地址认状态无效,操作数的物理地址PAPA由段寄存器内由段寄存器内容左移容左移4 4位加偏移位加偏移EAEA形成。上述形成。上述

16、2 2条指令的源操作条指令的源操作数物理地址分别为:数物理地址分别为: PA1 =PA1 =(DSDS)左移)左移4 4位位+BP+BP PA2 = PA2 =(SSSS)左移)左移4 4位位+SI+SISTACK SEGMENT STACK DB 200 DUP(0)STACK ENDSDATA SEGMENT BUF1 DB 20,21,22,23,24,25,26,27,28,29,30,31 BUF2 DB 12 DUP(0)DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK2.8 综合举例综合举例START: MOV AX,DATA MOV DS,AX MOV SI,OFFSET BUF1 MOV DI,OFFSET BUF2 MOV CX,12LOOPA: MOV AL,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论