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

下载本文档

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

文档简介

1、第第3 3章章 寻址方式寻址方式 为了取得指令或操作数地址所使用的方法 操作数的寻址:与数据有关的寻址方式 指令的寻址:与转移地址有关的寻址方式 指令寻址顺序寻址跳转寻址寄存器间接寻址方式直接寻址方式数据寻址方式立即数寻址方式寄存器寻址方式基址变址寻址 寄存器相对寻址相对基址变址寻址比例变址寻址*操作数的寻址方式 80X86 指令的格式 操作码 操作数 . 操作数指令例:MOV 指令格式:MOV DST,SRC功能:源操作数的内容传送到目标操作数;源操作数中的内容不变。例:MOV AX,BX MOV 2000H,CL数据传送指令以MOV指令为例说明: l立即寻址 MOV AX , 3069Hl

2、寄存器寻址 MOV AL , BHl直接寻址 MOV AX , 2000H l寄存器间接寻址 MOV AX , BX l寄存器相对寻址 MOV AX , COUNT SI l基址变址寻址 MOV AX , BP DI l相对基址变址寻址 MOV AX , MASK BX SI (1)立即寻址方式 操作数在指令中给出 指令格式:MOV AL,5 MOV AX,3064H MOV AL,A 特点:操作数在代码段中(CS)注意:* 只能用于 SRC 字段 MOV 40H, AL * SRC 和 DST 的字长一致 MOV AH, 3064H 例:指令 MOV AX,Im 的含意是代码段操作码ImLI

3、mH一条指令AHALAX低地址高地址(2)寄存器寻址方式 操作数在指定的寄存器中 MOV AX, BX MOV AL, BH MOV AX, 3064H 特点:操作数在寄存器中,不需访问存储器,速度快。* 字节寄存器只有 AH AL BH BL CH CL DH DL* SRC 和 DST 的字长要一致 MOV AH, BX * CS 不能用 MOV 指令改变 MOV CS, AX (3)直接寻址方式 有效地址EA由指令直接给出 例:MOV AX, 2000H EA=2000H, 假设(DS)=3000H, 那么PA=32000H* 隐含的段为数据段 DS* 可使用段跨越前缀 MOV AX,

4、ES: 2000H偏移地址5030 32000AH AL3050(AX) = 3050H数据段低地址高地址(4)寄存器间接寻址 EA 在基址寄存器(BX/BP) 或变址寄存器(SI/DI) 中(16位寻址) MOV AX, BX PA = 16 (DS) + (BX) MOV AX, ES:BX PA = 16 (ES) + (BX) MOV AX, BP PA = 16 (SS) + (BP) 特点:BX,SI,DI默认段是DS,BP 默认段是SS.* 不允许使用AX、CX、DX 存放 EA MOV AX, CX * SRC 和 DST 的字长一致 MOV DL, BX ; BX指示一个字节

5、单元 MOV DX, BX ; BX指示一个字单元* 适于数组、字符串、表格的处理例:指令 MOV AX,SI 的含意是代码段操作码AHALAXA050DS20000 20000+ 1000 2100021000数据段1000SI例:指令 MOV AX,BP 的含意是代码段操作码AHALAXB062SS30000 30000+ 2000 3200032000数据段2000BP堆栈段 有效地址 =(BX)(BP) 8位(SI) 16位(DI)+位移量(5)寄存器相对寻址方式 指令格式: MOV AX, COUNTSI 或 MOV AX, COUNT+SI假设: (DS)=3000H, (SI)=

6、2000H, COUNT=3000H, 则:PA = 35000H 假设:(35000H)=1234H, 则: (AX)=1234H * 适于数组、字符串、表格的处理例:指令 MOV BX,NUM+DI 的含意是上指令可以写成 MOV BX,DI+NUM 或 MOV BX,NUMDI代码段操作码BHBLBXB062DS30000 30000+ 2000+ 3000 3500035000数据段2000DINUM00 偏移量L30 偏移量HNUM 3000已赋值的变量(6)基址变址寻址方式指令格式: MOV AX, BX DI MOV AX, BX+DI MOV AX, ES:BX SI有效地址

7、=(BX) (SI)(BP) (DI)+* 适于数组、字符串、表格的处理* 必须是一个基址寄存器和一个变址寄存器的组合 MOV AX, BX BP MOV AX, SI DI 在CPU中,通常把BX和BP作为基址寄存器,把SI和DI作为变址寄存器,每一组中各取其一组成一种寻址方法,共有四种。即:EA = (基址寄存器)+ (变址寄存器) 一般情况下,由基址寄存器决定哪个段寄存器作为段指针。 若用BX,则操作数在数据段中。 若用BP,则操作数在堆栈段中。例:指令 MOV AX,BXSI 的含意是上指令可以写成 MOV AX,BX+SI 代码段操作码AHALAXDS30000 30000+ 100

8、0+ 2000 3300033000数据段1000SI2000BX例:指令 MOV AX,BPSI 的含意是上指令可以写成 MOV AX,BP+SI 代码段操作码AHALAXSS40000 40000+ 1000+ 2000 4300043000堆栈段1000SI2000BP(7 )相对基址变址寻址方式 MOV AX, MASK BX SI 或 MOV AX, MASK BX+SI 或 MOV AX, MASK+BX+SI 有效地址 =(BX) (SI) 8位(BP) (DI) 16位+位移量例:指令 MOV AX,MASKBXSI 的含意是上指令可以写成 MOV AX,BX+SI+MASK

9、或 MOV AX,MASKBX+SI代码段操作码AHALAXDS30000 30000+ 1000+ 2000 + 0250 3325033250数据段1000SIMASK50 偏移量L02 偏移量HMASK 02502000BX访问存储器的方式 默认的段寄存器可跨越的段寄存器偏移地址取指令 CS 无 IP堆栈操作 SS 无 SP一般数据访问 DS CS ES SS 有效地址EABP作为基址的寻址 SS CS DS ES BP串操作的源操作数 DS CS ES SS SI串操作的目的操作数 ES 无 DI段寄存器的跨越使用规定(1)段内直接寻址转向的有效地址 = 当前(IP) + 位移量(8bit/16bit) 转向的有效地址与当前IP值之差例: JMP NEAR PTR NEXT 近转移 -32768 +32767 汇编时,位移量为16位 JMP SHORT NEXT 短转移 -128 +127 汇编时,位移量为8位程序的寻址(2) 段内间接寻址(不能用于条件转移) 转向的有效地址是一个寄存器或存储单元的内容。 (可用除立即数以外的任何一种数据寻址方式得到)例: TABLE = 20A1H (BX) = 1256H (SI) = 528

温馨提示

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

评论

0/150

提交评论