汇编常用指令系统指令系统分析解析

上传人:suns****4568 文档编号:93415725 上传时间:2019-07-21 格式:PPT 页数:126 大小:1.31MB
返回 下载 相关 举报
汇编常用指令系统指令系统分析解析_第1页
第1页 / 共126页
汇编常用指令系统指令系统分析解析_第2页
第2页 / 共126页
汇编常用指令系统指令系统分析解析_第3页
第3页 / 共126页
汇编常用指令系统指令系统分析解析_第4页
第4页 / 共126页
汇编常用指令系统指令系统分析解析_第5页
第5页 / 共126页
点击查看更多>>
资源描述

《汇编常用指令系统指令系统分析解析》由会员分享,可在线阅读,更多相关《汇编常用指令系统指令系统分析解析(126页珍藏版)》请在金锄头文库上搜索。

1、1,第四章 指令系统,4.1 8086/8088指令系统概述 4.2 8086指令系统,2,一、8086/8088指令系统的特点 1.指令系统的兼容性 2. 指令格式的灵活性 3. 寻址方式的多样性 4. 可对多种类型的数据进行处理 5. 可构成多处理机系统,3,二、指令格式,指令:指令是指示计算机完成特定操作的命令 指令系统:指令系统是计算机能够执行全部命令的集合,它取决于计算机的硬件设计。指令系统因机而异,没有通用性。,4,指令格式:,操作码 操作数,操作数,源操作数: 指令加工之前的数据 目的操作数:指令加工之后形成的数据,5,指令中的操作数表征方法:,表征参加操作的数据本身 立即数 表

2、征数据存放的地址,寄存器 存储器,6,操作数类型,1、立即数操作数: 表示参加操作的数据本身,可以是8位或16位 例: MOV AX,1234H ; AX 1234H MOV BL,22H 立即数无法作为目标操作数 立即数可以是无符号或带符号数,其数值应在可取值范围内,7,2、寄存器操作数: 表示参加运算的数存放在指令给出的寄存器中,可以是16位或8位。 例:MOV AX,BX MOV DL,CH,8,3、存储器操作数: 例:MOV AX,1200H MOV AL, 1200H,9,例如: MOV AL,BP 该指令生成的机器码是8A4600H,10,三、寻址方式 计算机可以对存储器、寄存器中

3、的数据进行各种操作,如取数、存数、加运算、减运算等,这就需要找到数据的存放地址,再对其中的数据执行相应的操作,最后将运算结果送往指定的地址单元或寄存器。指令的寻址方式就是寻找指令操作数所在地址的方式,以确定数据的来源和去处。熟练地掌握寻址方式对学习指令系统和汇编语言程序设计具有重要作用。 下面介绍8086/8088的几种寻址方式。,11,1. 立即寻址 指令操作数部分直接给出指令的操作数,它与指令操作码相接,顺序存放在代码段中。立即数有 8位和16位之分。,12,注意: (1) 立即寻址方式只能用于源操作数,主要用于给寄存器赋值。 (2) 立即寻址方式不执行总线周期,执行速度快。,2. 寄存器

4、寻址 操作数放在寄存器内,由指令直接给出某个寄存器的名字,以寄存器的内容作为操作数。 寄存器可以是16位的AX、BX、CX、DX、SI、DI、SP、BP寄存器,也可以是8位的AH、AL、BH、BL、CH、CL、DH、DL寄存器。,13,例2: MOV AX,CX DEC AL 注意: (1) 寄存器寻址方式的指令操作在CPU内部执行,不需要执行总线周期,执行速度快。 (2) 寄存器寻址方式既适用于指令的源操作数,也适用于目的操作数,并且可同时用于源操作数和目的操作数。,14,3. 直接寻址 操作数在存储器中,指令中直接给出操作数所在存储单元的有效地址EA,即段内偏移地址,表示操作数所在存储单元

5、距离段首址的字节数。有效地址是一个无符号的16位二进制数。 例3:MOV AH,2100H ;将DS段中2100H单元的内 容送给AH MOV AX,2100H ;将DS段中2100H单元的内 容送给AL ;2101H单元的 内容送给AH。 MOV 1000H,AH ; DS:1000H(AH),15,DS=3000H MOV AX,2000H,16,注意: (1) 直接寻址方式的操作数所在存储单元的段地址一般在数据段寄存器DS中。 (2) 如果操作数在其他段,则需要在指令中用段超越前缀指出相应的段寄存器名。,例4:MOV AH, ES 2000H 将附加段寄存器ES的内容乘16,再加上200

6、0H作为操作数所在存储单元的地址,取出该存储单元的内容送到寄存器AH中。,17,4. 寄存器间接寻址 操作数在存储器中,指令中寄存器的内容作为操作数所在存储单元的有效地址EA(偏移地址)。寄存器仅限于BX、BP,SI、DI。 当使用BX、SI、DI时,操作数所在存储单元的段地址存在数据段寄存器DS中 当使用BP时,操作数所在存储单元的段地址存在堆栈段寄存器SS中。,18,MOV BX,SI,19,例5:已知: DS=2100H,DI=2000H 指令: MOV AX,DI 解: 物理地址=16DS+DI =162100H+2000H=23000H 指令执行结果是将23000H和23001H单元

7、的内容送入寄存器AX中。 注意: 1. 只有SI,DI,BX,BP 可作为间址寄存器。 2. 若操作数所在存储单元不在数据段DS中,需要在指令中用段超越前缀表明其所在段的段名。,20,5. 基址寻址 操作数在存储器内,指令中寄存器(BX或BP)的内容与指令指定的位移量之和作为操作数所在存储单元的有效地址EA(偏移地址)。 使用BX时,段地址为DS的内容; 使用BP时,段地址为SS的内容。,21,例6: SS=2000H,BP=1000H,COUNT=2000H (16位偏移量) 指令: MOV AX,COUNTBP 解:物理地址=16SS+BP+16位偏移量 =20000H+1000H+200

8、0H=23000H 指令执行结果是将23000H和23001H单元的内容送入寄存器AX中。 MOV BL,2BX 或 MOV BL,BX+2 ;(DS:BX+2)BL,22,6. 变址寻址 操作数在存储器内,指令将变址寄存器SI、DI内容与指令指定的位移量之和作为操作数所在存储单元的有效地址EA(偏移地址)。段地址规定为DS的内容。,例7:DS=3000H,SI=1000H,COUNT=2000H 指令: MOV AX,COUNTSI 解:物理地址=16DS+SI+16位偏移量 =30000H+1000H+2000H=33000H 指令执行结果是将33000H和33001H单元的内容送入寄存器

9、AX中。,23,MOV AX,2DI;AX (DS:(DI)+2) MOV AX,DI+2;AX (DS:(DI)+2) MOV BX,COUNT SI,24,7. 基址加变址寻址 操作数在存储器内。指令将基址寄存器BX、BP与变址寄存器SI、DI的内容之和再加上偏移量(8位或16位),得到操作数所在存储单元的有效地址EA。 当使用BX时,段寄存器为DS。 当使用BP时,段寄存器为SS。,25,例8:已知: DS=2000H,BX=1000H, SI=0500H,MK=1120H 指令: MOV AX, MKBXSI 解: 物理地址=20000H1000H0500H 1120H =22620H

10、 指令执行结果是 将22620H、22621H单元 的内容送入寄存器AX中。,26,MOV AX,BXSI,27,8.字符串寻址 用于字符串操作指令。规定变址寄存器SI中的内容是源数据串的段内偏移地址,而变址寄存器DI中的内容是目标数据串的段内偏移地址。 源数据串的段地址规定是数据段DS,目标数据串的段地址规定是附加段ES。指令执行后SI和DI的内容自动增量(或减量),增(或减)值为1或2。 例 : MOVSB 执行后: DISI SISI1 DIDI1,28,9. I/O端口寻址 寻找输入输出设备的端口地址,可分为直接端口寻 址和间接端口寻址。 直接端口寻址:由指令直接给出I/O设备的端口地

11、址。 它规定端口地址为8位,能寻址256 个端口 间接端口寻址:由DX给出I/O设备的端口地址。由于DX 是16位,因此间接端口寻址能寻址多达64K 个端口。,例:IN AL,20H ;将地址为20H的外设内容读入AL中 OUT DX,AL;AL中内容输出给以DX的内容为地址 的外设,29,10、 隐含寻址 指令隐含了的一个或两个操作数的地址,即操作数在默认的地址中。 例: AAA; 对AL中的内容进行十进制加法调整,并 把调整后的结果放入AH和AL中。这条指令的隐含操作数是AH和AL。,30,例:设BX=0158H, DI=10A5H, 位移量=1B57H, DS=2100H,求各寻址方式下

12、的有效地址和物理地址。 1)直接寻址 MOV AX,1B57H 有效地址=1B57H 物理地址=21000H+1B57H=22B57H 2)寄存器间接寻址 MOV AX, BX 有效地址=0158H 物理地址=21000H+0158H=21158H 3)基址寻址 MOV AX, BX+1B57H 有效地址=0158H+1B57H=1CAFH 物理地址=21000H+1CAFH=22CAFH 4)变址寻址 MOV AX,DI+1B57H EA=10A5H+1B57H=2BFCH 物理地址=21000H+2BFCH=23BFCH 5)基址加变址寻址 MOV AX,BX+DI+1B57H EA= 0

13、158H+10A5H+1B57H=2D54H 物理地址=21000H+2D54H=23D54H,31,4.2 8086的指令系统,指令系统包括九大类、133种基本指令,通过寻址方式的变化与数据形式(字节、字型)的组合,可构成上千条指令。指令系统按功能分为数据传送类、算术运算类、逻辑运算与移位类、串操作类、控制转移类、处理机控制、输入输出、中断等,本节将分别说明。,32,4.2.1数据传送指令 数据传送类指令实现CPU内部寄存器之间、CPU与存储器之间、CPU与I/O端口之间的数据传送。 1. 通用数据传送指令 包括 MOV、进栈、出栈指令、交换指令和换码指令。 (1)一般数据传送指令 MOV(

14、8位/16位) 格式:MOV OP目,OP源 功能: OP源 OP目 要求:OP目 可以是寄存器(除CS外)、存储器 OP源可以是寄存器、存储器和立即数,33,34,例: MOV AL,BL ; BL寄存器的内容送AL MOV SP,2AC0H ; 立即数2AC0H送SP MOV DI,AX ; AX中的16位数送DI和DI+1单元 MOV SI,ES:BP ; 附加段中BP所指向的两个单 元的内容送SI寄存器 MOV WORD PTR SI,6070H,35,注意: MOV指令的两个操作数(源、目的)均可采用不同的寻址方式。 源操作数和目的操作数的类型必须一致 不允许把立即数作目的操作数,也

15、不允许向段寄存器送立即数。 不允许在段寄存器之间、存储器单元之间传送数据。 CS、IP寄存器不能用作目的操作数。 MOV CS,AX 一般传送指令不影响标志位。,36,例:判断下列指令正确与否: MOV AL, BL MOV CX, BX MOV BX, DL MOV DX, 34H MOV DS, 1234H MOV ES, AX MOV CS, BX MOV SI, CX MOV DI, SI MOV 2000H, AX, , 类型不一致, 类型不一致 , 类型不一致 立即数不能送段寄存器, 类型不一致 立即数不能送段寄存器 , 类型不一致 立即数不能送段寄存器 CS不能作目的操作数, 类型不一致 立即数不能送段寄存器 CS不能作目的操作数 , 类型不一致 立即数不能送段寄存器 CS不能作目的操作数 不能同时为存储器操作数, 类型不一致 立即数不能送段寄存器 CS不能作目的操作数 不能同时为存储器操作数 目的不能为立即数,37,(2) 堆栈操作指令 堆栈:是按“后进先出”原则工作的一段存储器区域。堆栈

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

当前位置:首页 > 大杂烩/其它

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