微机原理ch3

上传人:ji****n 文档编号:47744174 上传时间:2018-07-04 格式:PDF 页数:46 大小:394.54KB
返回 下载 相关 举报
微机原理ch3_第1页
第1页 / 共46页
微机原理ch3_第2页
第2页 / 共46页
微机原理ch3_第3页
第3页 / 共46页
微机原理ch3_第4页
第4页 / 共46页
微机原理ch3_第5页
第5页 / 共46页
点击查看更多>>
资源描述

《微机原理ch3》由会员分享,可在线阅读,更多相关《微机原理ch3(46页珍藏版)》请在金锄头文库上搜索。

1、微机原理讲义 第三章 8086寻址方式和指令系统 第 1 页 共 45 页 第三章 8086 寻址方式和指令系统 主要内容主要内容主要内容主要内容: 3-1 8086 的寻址方式 3-2 8086 的指令系统 3 3 3 3- - - -1 1 1 1 8086808680868086 的寻址方式的寻址方式的寻址方式的寻址方式 寻址方式:说明操作数所在地址的方法。下面分别介绍各种寻址方式。 一、立即寻址(Immediate Addressing) 在这种寻址方式下,操作数直接包含在指令中,它是一个 8 位或 16 位的常数,也叫立即数。立即寻址方式指令常用来给寄存器赋初值。 例 3-1 MOV

2、 AL,26H 该指令表示将一个 8 位立即数 26H 送到 AL 中。 图 3-1 立即数存放示意图 例 3-2 MOV CX,2A50H 该指令表示将 16 位立即数 2A50H 送到 CX 中。 指令操作码 操作数 机器指令 代码段代码段代码段代码段 26 操作数操作数操作数操作数 26 AX AH AL 微机原理讲义 第三章 8086寻址方式和指令系统 第 2 页 共 45 页 图 3-2 立即数存放示意图 注意:以 AF 开头的数字出现在指令中时,前面一定要加数字 0 以免与其它符号相混淆。例如:MOV AX,0FF00H 二、寄存器寻址方式(Register Addressing)

3、 在这种寻址方式下,操作数包含在寄存器中,由指令指定寄存器的名称。 对 16 位操作数,寄存器可以是 AX,BX,CX,DX,SI,DI,SP 和 BP 等。 对 8 为操作数,用寄存器 AH,AL,BH,BL,CH,CL,DH 和 DL。 例 3-3 MOV DX,AX 假设该指令执行前 AX=3A68H,DX=18C7H,则指令执行后,DX=3A68H,而 AX 的内容不变。 例 3-4 MOV CL,AH 表示将 AH 中的 8 位数据送到 CL 寄存器中。 三、直接寻址方式(Direct Addressing) 1、直接寻址方式 指令中直接给出操作数的 16 位偏移地址,偏移地址也称为

4、有效地址(EA,Effective Address),默认的段寄存器为 DS。 代码段代码段代码段代码段 50 操作数操作数操作数操作数 2A 50 CX CH CL 2A 3A 68 AX 18 C7 DX 3A 68 3A 68 AX 18 C7 CX 3A 微机原理讲义 第三章 8086寻址方式和指令系统 第 3 页 共 45 页 例 3-5 MOV AX,2000H 该指令直接给出了操作数有效地址 EA=2000H,设 DS=3000H,则源操作数的物理地址=32000H。将该地址的一个字送到 AX 中。过程如图 3-3 所示。 图 3-3 直接寻址方式 2、段超越前缀 如果要对代码段

5、、堆栈段或附加段寄存器所指出的存储区进行直接寻址,应在指令中指定段超越前缀。 例 3-6 MOV AX,ES:500H 该指令的源操作数的物理地址等于 16ES+500H 3、符号地址 在汇编语言中还允许用符号地址代替数值地址,实际上就是给存储单元起一个名字,这样,如果与这个单元打交道,只要使用其名字即可,不必记具体数值。 例 3-7 MOV AX,AREA1 执行结果:将从 EA 为 AREA1 的存储单元中取出一个字送到 AX 中。 从指令上看 AREA1 既可以作为符号地址也可以是一个立即数,区分的方法如下: 例 3-8 AREA1 EQU 0867H MOV AX,AREA1 执行结果

6、:将 0867H 立即数送往 AX 中。 四、寄存器间接寻址方式 12 34 AX AH AL 3000 2000 32000 DS 10H + 32000 12 34 数据段数据段数据段数据段 20 00 操作数操作数操作数操作数 代码段代码段代码段代码段 微机原理讲义 第三章 8086寻址方式和指令系统 第 4 页 共 45 页 指令中给出的寄存器中的值不是操作数本身,而是操作数的有效地址,这种寻址方式称为寄存器间接寻址。与寄存器寻址的区别是加X。 例 3-9 MOV BX,SI 设 DS=1000H,SI=2000H ,(12000H)=318BH 指令中也可以指定段超越前缀来从默认段以

7、外的段中取数据,例如: MOV BX,DS:BP MOV AX,ES:SI 操作数的物理地址:16DS+BP,16ES+SI。 图 3-4 寄存器间接寻址方式 五、寄存器相对寻址 操作数的有效地址是一个基址或变址寄存器的内容与指令中指定的 8 位或 16 位位移量之和。 例 3-10 MOV BX,COUNTSI 设:DS=3000H,SI=2000H,位移量 COUNT=4000H,(36000H)=5678H 则:物理地址=16DS+SI+COUNT =30000H+2000H+4000H =36000H 指令执行过程如图 3-5 所示,结果 BX=5678H。 也可写成:MOV BX,C

8、OUNT+SI 31 8B BX BH BL 1000 2000 12000 DS 10H + SI 12000 31 8B 数据段数据段数据段数据段 20 00 操作数操作数操作数操作数 代码段代码段代码段代码段 微机原理讲义 第三章 8086寻址方式和指令系统 第 5 页 共 45 页 图 3-5 寄存器相对寻址方式 六、基址变址寻址方式 操作数的有效地址是一个基址寄存器(BX 或 BP)和一个变址寄存器(SI 和 DI)的内容之和,两个寄存器均是指定的。 若:基址寄存器为 BX,段址寄存器 DS, 则:物理地址=16DS+BX+SI 或 =16DS+BX+DI 若:基址寄存器为 BP,段

9、址寄存器 SS, 则:物理地址=16SS+BP+SI 或 =16SS+BP+DI 例 3-11 MOV AX,BXSI(或BX+SI) 设:DS=3000H,BX=1200H,SI=0500H,(31700H) =ABCDH, 则:物理地址=31700H。 56 78 BX BH BL 36000 56 78 数据段数据段数据段数据段 40 00 操作数操作数操作数操作数 代码段代码段代码段代码段 3000 2000 36000 DS 10H + COUNT 4000 SI 微机原理讲义 第三章 8086寻址方式和指令系统 第 6 页 共 45 页 图 3-6 基址加变址寻址方式 七、相对基址

10、变址寻址方式 操作数的有效地址是一个基址寄存器和一个变址寄存器的内容,再加上指令中指定的位移量之和。 若:基址寄存器为 BX,段址寄存器 DS, 则:物理地址=16DS+BX+SI+8 或 16 位位移量 或 =16DS+BX+DI+8 或 16 位位移量 若:基址寄存器为 BP,段址寄存器 SS, 则:物理地址=16SS+BP+SI+8 或 16 位位移量 或 =16SS+BP+DI+8 或 16 位位移量 例 3-12 MOV AX,MASKBXSI 设: DS=2000H, BX=1500H, SI=0300H, MASK= 0200H,(21A00H)=26BFH, 则: 物理地址=2

11、1A00H AB CD AX AH AL 31700 AB CD 数据段数据段数据段数据段 操作数操作数操作数操作数 操作数操作数操作数操作数 代码段代码段代码段代码段 3000 1200 DS 10H BX 0500 SI 微机原理讲义 第三章 8086寻址方式和指令系统 第 7 页 共 45 页 图 3-7 相对基址加变址寻址方式 有关带方括号的表达式必须遵循下列规则: (1)表示直接寻址,如:2000H; (2)BX,BP 不允许同时出现在 中;SI,DI 也不允许同时出现在 中。 (3)下面几种写法都是等价的 6BXSI,BX+6SI,BX+SI+6 (4)若BP,则隐含使用 SS 来

12、提供基地址。 八、其它方式 1、隐含寻址 指令中不指明操作数,但有隐含规定的寻址方式。 例如: DDA, 它的含义对 AL 中数据进行十进制数调整, 结果保留在 AL 中。 还有 MUL DL。 2、I/O 端口寻址 8086 有直接端口和间接端口两种寻址方式。 在直接端口寻址方式中,端口地址由指令直接提供一个 8 位立即数。 例 3-13 IN AL,63H 在间接端口寻址方式中,被寻址的端口号由寄存器 DX 提供,这种寻址方式能访问 64K 个I/O 端口。 例 3-14 MOV DX,213H IN AL,DX 26 BF AX AH AL 2000 0300 21A00 DS 10H

13、+ MASK 0200 SI 1500 BX 21A00 26 BF 数据段数据段数据段数据段 02 00 操作数操作数操作数操作数 代码段代码段代码段代码段 操作数操作数操作数操作数 微机原理讲义 第三章 8086寻址方式和指令系统 第 8 页 共 45 页 3、转移类指令寻址 这类指令的寻址方式,将在本章后面再介绍。 3333- - - -2 2 2 2 8086808680868086 的指令系统的指令系统的指令系统的指令系统 按功能分类,8086 的指令共有六大类。 一、数据传送指令 数据传送指令共 14 条,列于表 3-3 中。 1、通用数据传送指令 (1) MOV 指令 指令格式:

14、 MOV 目的操作数,源操作数 指令功能:将源操作数传送到目的操作数。 图 3-8 是 MOV 指令允许传送数据的的路径。 操作数的要求: 可以是寄存器、存储器、立即数; 按功能分类 数据传送指令 算术运算指令 逻辑运算和移位指令 字符串处理指令 控制转移指令 处理器控制指令 出栈,并送入标志寄存器 POPF 输出 OUT 标志寄存器入栈指令 PUSHF 输入 IN AH内容装入标志寄存器低字节 SAHF 输入输出指令 标志寄存器低字节装入AH LAHF 表转换 XLAT 标志传送指令 交换字或字节 XCHG 装入附加段寄存器 LES 出栈指令 POP 装入数据段寄存器 LDS 入栈指令 PU

15、SH 装入有效地址 LEA 字节或字传送 MOV 地址目标传送指令 通用数据传送指令 表3-3 数据传送指令 微机原理讲义 第三章 8086寻址方式和指令系统 第 9 页 共 45 页 IP 不能作为操作数,立即数和 CS 寄存器不能作为目的操作数; 两个操作数不能同时为存储单元或者段寄存器。 图 3-8 MOV 指令允许传送数据的的路径 例 3-15 MOV AL,B; B 的 ASCII 码(42H)AL。 例 3-16 MOV AX,DATA MOV DS,AX 注意:16 位立即数不能被直接送到 DS(段寄存器)中,必须先送到 AX 中,再传到 DS 中。在程序开头放进这两条指令之后,DS 便指向了当前的数据段,对数据段中的数据进行存取的时候就不需要考虑段地址了。 数据段的定义: DATA SEGMENT AREA1 DB 14H,3BH AREA2 DB 3 DUP(0) ARRAY DW 3100H,01A6H STRING DB GOOD DATA ENDS 数据在内存单元中的存放情况如下: 通用寄存器通用寄存器通用寄存器通用寄存器 AX AH BX AL CX BH DX B

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

当前位置:首页 > 生活休闲 > 社会民生

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