汇编材料+第3章+80x86的指令系统和寻址方式

上传人:xh****66 文档编号:61660119 上传时间:2018-12-08 格式:PPT 页数:136 大小:608.50KB
返回 下载 相关 举报
汇编材料+第3章+80x86的指令系统和寻址方式_第1页
第1页 / 共136页
汇编材料+第3章+80x86的指令系统和寻址方式_第2页
第2页 / 共136页
汇编材料+第3章+80x86的指令系统和寻址方式_第3页
第3页 / 共136页
汇编材料+第3章+80x86的指令系统和寻址方式_第4页
第4页 / 共136页
汇编材料+第3章+80x86的指令系统和寻址方式_第5页
第5页 / 共136页
点击查看更多>>
资源描述

《汇编材料+第3章+80x86的指令系统和寻址方式》由会员分享,可在线阅读,更多相关《汇编材料+第3章+80x86的指令系统和寻址方式(136页珍藏版)》请在金锄头文库上搜索。

1、第三章 80X86的指令系统和寻址方式,难重点 重点理解8086常用指令的功能,熟悉80X86的各种寻址方式, 指令系统 一组指令的集合,指令, 寻址方式 与数据有关的寻址方式 与转移地址有关的寻址方式,1. 8086的寻址方式,与数据有关的寻址方式:以 MOV 指令为例 (MOV指令格式:MOV reg/mem,SRC) 立即寻址 MOV AX , 3069H 寄存器寻址 MOV AL , BH 直接寻址 MOV AX , 2000H 寄存器间接寻址 MOV AX , BX 寄存器相对寻址 MOV AX , COUNT SI 基址变址寻址 MOV AX , BP DI 相对基址变址寻址 MO

2、V AX , MASK BX SI ,存储器寻址,(1) 立即寻址方式:操作数直接在指令中给出,即操作数随指令存放于代码段中。 指令格式: MOV AL, 5 MOV AX, 3064H MOV AL, A MOV AX,1946H 注意: * 只能用于 SRC 字段 MOV 40H, AL * SRC 和 DST 的字长一致 MOV AH, 3064H *此方式不能对段寄存器和标志寄存器赋值。,(2) 寄存器寻址方式:操作数存于寄存器中,指令中指定寄存器号。 MOV AX, CX MOV AL, BH MOV AX, 3064H 注意: * 字节寄存器只有 AH AL BH BL CH CL

3、 DH DL * SRC 和 DST 的字长一致 MOV AH, BX * CS 不能用 MOV 指令改变 MOV CS, AX ,(3) 直接寻址方式:操作数存放于存储单元中,该存储单元的16位偏移地址(EA)紧跟在操作码之后,直接包含在指令中,存放在代码段中。 例:MOV AX, 2000H EA=2000H, 假设(DS)=3000H, 那么PA=32000H,50,30,32000,AH AL,30,50,(AX) = 3050H,例:MOV BX, 1000H,注意: * 隐含的段为数据段 DS * 若操作数不在数据段而是在其他段(如附加段)中,则可使用段跨越前缀 MOV AX, E

4、S: 2000H * 操作数地址也可由变量(符号地址)表示, 但要注意变量的属性 VALUE DB 10(在数据段中定义) MOV AH, VALUE MOV AX, VALUE MOV AX, WORD PTR VALUE ,例:MOV AX, 3000H,低地址,高地址,CS段,操作码,00H,30H,34H,12H,34H,12H,AX,DS段,50000,53000,DS,5000,0,3000,53000,+,(4)寄存器间接寻址:操作数存于存储单元中,该存储单元的EA存放在基址寄存器BX、BP或变址寄存器SI、DI中。 MOV AX, BX PA = 16d (DS) + (BX)

5、 MOV AX, ES:BX PA = 16d (ES) + (BX) MOV AX, BP PA = 16d (SS) + (BP) 例: MOV CX, DI,注意: * 用BX存放EA时,隐含的段为数据段;而用BP时,则隐含的段为堆栈段,同样可以使用段跨越前缀。 * 不允许使用AX、CX、DX 存放 EA MOV AX, CX * SRC 和 DST 的字长一致 MOV DL, BX ; BX指示一个字节单元 MOV DX, BX ; BX指示一个字单元 * 适于数组、字符串、表格的处理,低地址,高地址,CS段,操作码,34H,12H,34H,12H,AX,SS段,70000,73000

6、,SS,7000,0,3000,73000,+,例:MOV AX, BP,BP,有效地址 =,(BX) (BP) 8位 (SI) 16位 (DI),+,位移量,(5) 寄存器相对寻址方式:操作数的EA是一个基址寄存器(BX,BP)或变址寄存器(SI,DI)的内容和指令中指定的8位或16位位移量之和。实际上是在寄存器间接寻址的基础上加了一个8位或16位的位移量。因此,该方式与寄存器间接寻址方式类似。,指令格式: MOV AX, COUNTSI 或 MOV AX, COUNT+SI 假设 (DS)=4000H, (SI)=0100H,COUNT=2000H, 则: PA = 42100H 假设(4

7、2100H)=0050H, 那么 (AX)=0050H * 适于数组、字符串、表格的处理 * 这个COUNT在使用前要在前面定义,它是一个符号地址。,低地址,高地址,CS段,操作码,00H,15H,34H,12H,34H,12H,AX,FS段,70000,73500,BX,1500,73500,+,例:MOV DX, BX+1500,DS,7000,0,2000,(6) 基址变址寻址方式:EA是一个基址寄存器(BX,BP)和一个变址寄存器(SI,DI)的内容之和。两个寄存器号均在指令中指定。 指令格式: MOV AX, BX DI MOV AX, BX+DI MOV AX, ES:BX SI

8、MOV AX, BX SI,注意: * 使用BX时,隐含的段为数据段;使用BP时,则为堆栈段 * 适于数组、字符串、表格的处理 * 必须是一个基址寄存器和一个变址寄存器的组合 MOV AX, BX BP MOV AX, SI DI ,( 7 ) 相对基址变址寻址方式:操作数的EA是一个基址寄存器和一个变址寄存器的内容和一个8位或16位位移量之和。实际上就是在基址变址寻址方式的基础上加了一个8位或16位的位移量,因此两者类似。 MOV AX, MASK BX SI 或 MOV AX, MASK BX+SI 或 MOV AX, MASK+BX+SI 例: MOV AX , ARRAYBXSI,课堂

9、练习:已知(DS)2000H,(BX)0100H,(SI)0002H,(20100H)12H, (20101H)34H,(20102H)56H, (20103H)78H(21200H)2AH, (21201H)4CH,(21202H)B7H, (21203H)65H 问:试指出下列寻址方式,其物理地址值是多少?当执行了下列指令后AX寄存器中的值是多少? 1、MOV AX,1200H 2、MOV AX,BX 3、MOV AX,1200H 4、MOV AX,BX 5、MOV AX,1100BX 6、MOV AX,BXSI 7、MOV AX,1100BXSI,访问存储器的方式,默认的 段寄存器,可跨

10、越的 段寄存器,偏移地址,取指令 CS 无 IP 堆栈操作 SS 无 SP 一般数据访问 DS CS ES SS 有效地址EA BP作为基址的寻址 SS CS DS ES BP 串操作的源操作数 DS CS ES SS SI 串操作的目的操作数 ES 无 DI,段 寄 存 器 的 使 用 规 定,例:编写一段显示字符串STRING的程序 DATA SEGMENT STRING DB HAPPY NEW YEAR! , 0DH , 0AH , $ COUNT DW 17 DATA ENDS ( 1 ) 直接寻址 mov dl, string mov ah, 2 int 21h ; 显示字符H m

11、ov dl, string+1 mov ah, 2 int 21h ; 显示字符A : :,( 2 ) 寄存器间接寻址 mov cx, count ; mov cx, 17 mov bx, offset string ; string的偏址 bx Next : mov dl, bx mov ah, 2 int 21h ; 显示一个字符 inc bx loop next ; 循环指令 ( 3 ) 寄存器相对寻址 mov cx, count ; mov cx, 17 mov si, 0 Next : mov dl, stringsi ; mov dl, string+si mov ah, 2 in

12、t 21h ; 显示一个字符 inc si loop next ; 循环指令,( 4 ) 基址变址寻址 mov cx, count ; mov cx, 17 mov bx, offset string ; string的偏址 bx mov si, 0 Next : mov dl, bx si ; mov dl, bx+si mov ah, 2 int 21h ; 显示一个字符 inc si loop next ; 循环指令 ( 5 ) DOS 显示字符串功能 mov dx, offset string ; string的偏址 dx ; lea dx, string mov ah, 9 int

13、21h ; 显示一串字符,与转移地址有关的寻址方式:,段内寻址 段内直接寻址 JMP NEAR PTR NEXT 段内间接寻址 JMP TABLE BX 段间寻址 段间直接寻址 JMP FAR PTR NEXT 段间间接寻址 JMP DWORD PTR BX ,前面介绍的与数据有关的寻址方式最终确定的是一个数据的地址,而这里介绍的与转移地址有关的寻址方式最终确定一条指令的地址。顺序执行的指令地址是由指令指针寄存器IP自动增量形成的,而程序转移的地址必须由转移类指令和CALL指令指出。,(1) 段内直接寻址,转向的有效地址 = 当前(IP) + 位移量(8bit/16bit),注意:位移量是有符号数,例: JMP NEAR PTR NEXT 近转移 -32768 +32767 JMP SHORT NEXT 短转移 -128 +127,(2) 段内间接寻址 转向的有效地址是一个寄存器或存储单元的内容。 (可用除立即数以外的任何一种数据寻址方式得到) 例:TABLE=20A1H (BX)=1256H (SI)=528EH (DS)=2000H (232F8H)=3280H (264E4H)=2450H 则: JMP BX ; (IP)=1256H JMP TABLEBX JMP WORD

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

当前位置:首页 > 生活休闲 > 科普知识

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