微机原理第3章8086寻址方式和指令系统

上传人:E**** 文档编号:91691050 上传时间:2019-07-01 格式:PPT 页数:115 大小:948.50KB
返回 下载 相关 举报
微机原理第3章8086寻址方式和指令系统_第1页
第1页 / 共115页
微机原理第3章8086寻址方式和指令系统_第2页
第2页 / 共115页
微机原理第3章8086寻址方式和指令系统_第3页
第3页 / 共115页
微机原理第3章8086寻址方式和指令系统_第4页
第4页 / 共115页
微机原理第3章8086寻址方式和指令系统_第5页
第5页 / 共115页
点击查看更多>>
资源描述

《微机原理第3章8086寻址方式和指令系统》由会员分享,可在线阅读,更多相关《微机原理第3章8086寻址方式和指令系统(115页珍藏版)》请在金锄头文库上搜索。

1、第3章 8086的寻址方式和指令系统,3.1 指令格式与寻址方式 3.2 数据传送类指令 3.3 算术运算类指令 3.4 逻辑运算类指令 3.5 字符串操作类指令 3.6 程序控制类指令 3.7 处理器控制类指令,计算机系统是由计算机硬件和计算机软件两部分组成; 指令:让计算机完成某种操作的命令。 指令的集合称作指令系统。 8086指令系统的特点:指令格式灵活、寻址能力强、能处理多种类型的数据、支持多处理器系统结构。 从功能上大致可分为如下六种类型: 数据传送类指令 算术运算类指令 逻辑运算类指令 字符串操作类指令 程序控制指令 处理器控制类指令,3.1 指令格式与寻址方式,3.1.1 指令格

2、式 指令的一般格式: 操作码指示计算机所要执行的操作; 操作数指示指令执行过程中所需要的操作数; 操作数可以有一个、二个或三个,通常称为一地址、 二地址或三地址指令。,一地址指令:即单操作数指令,如移位指令、加1、减1指令等,这就是一地址指令; 双操作数指令:如算术和逻辑运算指令等; 三操作数指令:除给出参加运算的两个操作数外,还指出运算结果的存放地址; 8086的大多数运算型指令采用二地址指令。,3.1.2 寻址方式,与数据有关的寻址方式 1.立即寻址方式 例3-1 MOV AL,7 指令执行后,(AL)= 07H; 例3-2 MOV AX,3064H 指令执行后,(AX)= 3064H;,

3、注意事项: 操作数直接存放在指令中,紧跟在操作码之后,它作为指令的一部分存放在代码段里,这种操作数称为立即数; 立即数可以是8位的或16位的。如果是16 位数,以AF打头的数字出现在指令中时,前面要加0,以免与其他符号相混; 立即寻址方式常用于给寄存器赋初值,并且只能用于源操作数字段,不能用于目的操作数字段; 不能直接给段寄存器和标志寄存器赋予立即数。 例如: MOV DS,1234H是一条错误指令,2寄存器寻址方式 例3-3 MOV AX,BX 指令执行前(AX)= 1234H,(BX)= 5678H; 指令执行后(AX)= 5678H,(BX)保持不变。,注意事项: 对于16位操作数,寄存

4、器可以是AX、BX、CX、DX、SI、DI、SP、BP、CS、DS、ES和SS; 对于8位操作数,寄存器可以是AL、AH、BL、BH、CL、CH、DL、DH; 源寄存器和目的寄存器的位数必须一致; 例如:MOV CL,BX是一条错误指令。,3直接寻址方式 在这种寻址方式中,操作数的物理地址计算如下: 物理地址 = (DS)16+EA 操作示意图如下:,例3-4 MOV AX,2000H 如果(DS)= 3000H,则执行情况如图3-4所示。 最后的执行结果为(AX)= 3050H。,4寄存器间接寻址方式 这种寻址方式通过基址寄存器BX、BP或变址寄存器SI、DI来保存操作数的有效地址EA。 如

5、果指令中使用的寄存器是SI、DI和BX,则操作数在数据段中; 如果指令中使用的寄存器是BP,则操作数在堆栈段中; 指令中也可以指定段跨越前缀来取得其他段中的数据。 操作示意图如下:,例3-5 MOV AX,BX 如果(DS)= 2000H,(BX)= 1000H, 则物理地址 = 20000H + 1000H = 21000H; 执行情况如图3-6所示,最后的执行结果为(AX)= 50A0H。,5寄存器相对寻址方式 这种寻址方式通过基址寄存器BX、BP或变址寄存器SI、DI与一个8位或16位移量相加形成有效地址,计算物理地址的缺省段仍然是SI、DI和BX为DS,BP为SS。,例3-6 MOV

6、AX,COUNTSI ,其中COUNT为16位位移量的符号地址。 如果 (DS)= 3000H,(SI)= 2000H,COUNT = 3000H 则物理地址 = 30000H + 2000H + 3000H = 35000H 最后的执行结果是(AX)= 1234H 指令执行情况如下所示:,6基址变址寻址方式 操作数的有效地址EA是一个基址寄存器(BP或BX)和一个变址寄存器(SI或DI)的内容之和; 如基址寄存器为BX时,与DS形成的物理地址指向数据段; 如基址寄存器为BP时,与SS形成的物理地址指向堆栈段;,例3-7 MOV AX,BXDI 如 (DS)= 2100H,(BX)=0158H

7、,(DI)=10A5H 则 EA = 0158H +10A5H = 11FDH 物理地址 = 21000H +11FDH = 221FDH 最后的执行结果是(AX)= 1234H。 指令执行情况如下所示:,7相对基址变址寻址方式 这种寻址方式与基址变址寻址方式类似,不同的是基址加变址再加上一个8位或16位位移量形成操作数的有效地址EA。缺省段的使用仍然是DS与BX组合,SS与BP组合。,例3-8 MOV AX,MASKBXSI 如(DS)=3000H,(BX)=2000H,(SI)=1000H,MASK = 0250H 则物理地址 = 30000H + 2000H + 1000H + 0250

8、H = 33250H 指令执行情况如图3-12所示,最后的执行结果是(AX)= 1234H。,与转移地址有关的寻址方式 表示转向地址的寻址方式包括:段内直接寻址、段内间接寻址、段间直接寻址、段间间接寻址。 SHORT转移:称为短转移,位移量用一个字节(8位)来表示; NEAR转移:称为近转移,位移量用16位表示,因为程序控制仍然在当前代码段,所以只修改IP的值,CS的值不变; FAR转移:称为远转移,因为程序控制超出了当前代码段,所以CS和IP都必须修改为新的值。,1段内直接寻址:在指令中直接指出转向地址。 如:JMP SHORT NEXT JMP NEAR PTR AGAIN 其中,NEXT

9、和AGAIN均为转向的符号地址。,例3-9 段内直接寻址方式 1280:000D EB04 JMP SHORT NEXT IP当前值 1280:000F 1280:0011 1280:0013 0207 NEXT:ADD AL,BX 注意: CPU在执行JMP指令时,IP的值为000F; JMP SHORT NEXT指令的机器语言为EB04,EB为操作码,04为位移量; 转向的有效地址应为:000F + 0004 = 0013 ; 0013正是标号NEXT的地址。JMP指令执行后,将IP寄存器修改为0013,代码段寄存器CS不变。,2段内间接寻址:在指令中用数据寻址方式(除立即寻址方式外)间接

10、地指出转向地址。 如: JMP BX JMP NEAR PTR BX JMP TABLESI,假设: (DS)= 3000H,(BX)= 1234H,(SI)= 269DH,位移量 = 45FFH,(338D1H)= 73FAH,(35833H)= 6E3CH 例3-10 JMP BX 则执行该指令后(IP)= 1234H 例3-11 JMP BXSI 则指令执行后(IP)=(16 (DS)+(BX)+(SI) =(30000H + 1234H + 269DH) =(338D1H)= 73FAH,例3-12 JMP TABLEBX 则指令执行后(IP)=(16 (DS)+(BX)+位移量) =

11、(30000H + 1234H + 45FFH) =(35833H)= 6E3CH,假设: (DS)= 3000H,(BX)= 1234H,(SI)= 269DH,位移量 = 45FFH,(338D1H)= 73FAH,(35833H)= 6E3CH 例3-10 JMP BX 则执行该指令后(IP)= 1234H 例3-11 JMP BXSI 则指令执行后(IP)=(16 (DS)+(BX)+(SI) =(30000H + 1234H + 269DH) =(338D1H)= 73FAH,3段间直接寻址:指令中直接给出转向地址,不同的是,在符号地址之前要加上表示段间远转移的操作符FAR PTR。

12、 如: JMP FAR PTR OUTLABLE,4段间间接寻址:用相继两个字的内容装入IP和CS来达到段间的转移目的,但这两个字的存储器地址是通过指令中的数据寻址方式(除立即寻址方式和寄存器寻址方式外)来取得的。 如:JMP DWORD PTR SI JMP DWORD PTR TABLE+BX,3.2 数据传送类指令,3.2.1 通用数据传送指令 1MOV dst,src ; 执行操作:(dst) (src) 功能:将源操作数(字节或字)传送到目的地址。 注意: 目的操作数dst和源操作数src不能同时用存储器寻址方式; 目的操作数dst不能是CS,也不能用立即数方式; 目的操作数dst和

13、源操作数src不允许同时为段寄存器; MOV指令不影响标志位。,补充: 例 MOV AL,B ;传送字符的ASCII码 例 MOV AX,DATA MOV DS,AX ;DATA是一个段地址变量 例 MOV DX,OFFSET ARRAY 将ARRAY的偏移地址送到DX寄存器 例 MOV AL,AREA1 ;将AREA1的内容送入AL MOV AREA2,AL ;再将内容传送到AREA2中 例 MOV AX,TABLEBPDI 将地址16SS+BP+DI+TABLE的字存储单元的内容送进AX。,2 PUSH src ;进栈指令 执行操作: (SP) (SP)2 (SP) (src) 3 POP

14、 dst ;出栈指令 执行操作: (dst) (SP) (SP) (SP)+2 注意: PUSH和POP指令只能是字操作,存取字数据后,SP的修改必须是2或2; PUSH和POP指令不能使用立即数方式; POP指令的dst不允许是CS寄存器; PUSH和POP指令都不影响标志位。 PUSH指令在程序中常用来暂存某些数据,而POP指令又可将这些数据恢复。,例 设SS=2000H,SP=40H,BX=3120H,AX=25FEH,依次执行下列指令:PUSH BX ,PUSH AX ,POP BX 。堆栈中数据和SP变化如下图所示。,例3-13 假设(DS)=1000H, (SS)=4000H, (

15、SP)=100H, (BX)=2100H, (12100H)=00A8H, 指出连续执行下列各条指令后,有关寄存器、存储单元以及堆栈的情况。 PUSH DS PUSH BX PUSH BX POP DI POP WORD PTR DI+2 POP DS,执行结果: (SP)=0FA+2=0FCH;(SP)=0FC+2=0FEH; (SP)=0FE+2=100H;(DI)=00A8H;(100AAH)=2100H (DS)=1000H,4XCHG opr1,opr2 ;交换指令 执行操作:(opr1) (opr2) XCHG指令使两个操作数opr1,和opr2互相交换,其中一个操作数必须在寄存器

16、中,另一个操作数可以在寄存器或存储器中。 注意: 不允许使用段寄存器 不影响标志位 例 设AX=2000H, DS=3000H, BX=1800H,(31A00H)=1995H, 执行:XCHG AX,BX+200H 执行后: AX=1995H, (31A00H)=2000H,例3-14 已知(AX)=1234H, (BX)=26D5H, (SI)=0036H, (DS)=1000H, (1270BH)=472AH, 写出下列指令执行的结果。 XCHG AH,AL 执行前: (AH)=12H, (AL)=34H; 执行后: (AH)=34H, (AL)=12H; XCHG AX,BX+SI 执行前: (AX)=1234H, (1270BH)=472AH 执行后: (AX)=472AH, (1270BH)=1234H,3.2.2 累加器专用传送指令 指令只限于使用累加器(ac:AX

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

当前位置:首页 > 高等教育 > 大学课件

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