第3章8086指令系统(上)

上传人:876****10 文档编号:141653583 上传时间:2020-08-11 格式:PPT 页数:174 大小:1.86MB
返回 下载 相关 举报
第3章8086指令系统(上)_第1页
第1页 / 共174页
第3章8086指令系统(上)_第2页
第2页 / 共174页
第3章8086指令系统(上)_第3页
第3页 / 共174页
第3章8086指令系统(上)_第4页
第4页 / 共174页
第3章8086指令系统(上)_第5页
第5页 / 共174页
点击查看更多>>
资源描述

《第3章8086指令系统(上)》由会员分享,可在线阅读,更多相关《第3章8086指令系统(上)(174页珍藏版)》请在金锄头文库上搜索。

1、微机原理与接口技术,1,第3章 80 x86指令系统,计算机能识别并执行的基本操作命令称为 计算机指令 计算机所能执行的全部指令的集合称为 指令系统 而程序由按一定顺序排列的指令序列构成。,2,【本章内容提要】,3.1 指令的基本格式,3.2 8086/8088寻址方式,3.3 8086/8088的指令系统,3.4 80 x86的指令扩充(了解内容),3,3.1 指令的基本格式,3.1.1 指令分类 3.1.2 指令格式,4,3.1.1 指令分类,计算机指令是指计算机所能识别并执行的基本操作命令,这些全部操作命令的集合被称为计算机的指令系统。 对于不同类型的微处理器,其指令系统各不相同。808

2、6指令系统是80 x86系列微处理器的基础指令系统,8086后续微处理器均继承了此指令系统,并在此基础上进行了扩充。,5,8086指令系统按功能可以分为六大类,分别是:,数据传送类指令 算术运算类指令 逻辑运算与移位类指令 字符串操作指令 程序控制类指令 处理器控制类指令,6,由于计算机指令实质上均为二进制形式,其缺点是不便于理解和记忆。 为此,人们发明了助记符来辅助记忆和书写指令,这就是汇编指令。,机器指令:指令的二进制代码形式。 如:89D8H 汇编指令:助记符形式的指令。 如:MOV AX,BX,7,3.1.2 指令格式,计算机指令通常由操作码和操作数两部分组成,其格式如下: 操作码 目

3、的操作数 ,源操作数 在8086指令系统中,操作码的长度一般为12个字节,指令的总长度一般为16个字节。,8,我们把一条指令中所包含的二进制代码的位数称为指令字长,它通常是机器字长的一倍、两倍、多倍或半倍。 另外,即使对于同一条指令,由于其操作数寻址方式的不同,其长度也是变化的,这样的指令被称为不定长指令。 反之,如果某些指令长度始终不变,我们则称其为定长指令。,9,操作码:由CPU设计人员定义。每一种操作唯一对应一个操作码。说明计算机要执行哪种操作,如传送、运算、移位、跳转等操作 例:加法操作助记符ADD; 数据传送操作助记符MOV; 比较操作助记符CMP 操作数:可由编程人员采用不同方式给

4、出。 寻址方式:寻找操作数(操作数地址)的方式; 指令格式:指令中对操作码、操作数的编码方式。,10,1. 8086指令中操作数的个数可以有以下几种情况 无操作数指令,例:等待指令 WAIT 单操作数指令,例:加1指令 INC AL 双操作数指令, 例:减法指令 SUB AL,BL 源操作数:后者(BL) 目的操作数:前者(AL),操作数,11,操作数,2、操作数存放地点,可以有以下几种:,立即数:操作数直接包含在指令中。 例:MOV AL,50H,寄存器操作数:操作数存放在寄存器中。 例:INC AL,内存操作数:操作数存放在内存单元中。 例:MOV AL,2000H,I/O操作数:操作数来

5、自I/O端口。 例:IN AL,28H,12,3.1 指令的基本格式,3.2 8086/8088寻址方式,3.3 8086/8088的指令系统,13,3.2 8086/8088寻址方式,在8086/8088指令中,操作数可以存放在存储器、寄存器或指令中。 要执行指令,就要通过操作数存放的地址找到操作数,我们把指令中寻找操作数的方式称为寻址方式。,14,8086/8088的寻址方式,15,8086/8088的寻址方式,16,1立即寻址(Immediate Addressing),指令中直接给出指令的操作数(跟在操作码的后面),取出指令的同时就可以获得操作数,这种寻址方式称为立即寻址,这种操作数称

6、为立即数。 源操作数以8位或16位常数的形式直接出现在指令中。一般用于赋值。,8086/8088的非存储器寻址方式,17,【例3-1】,例: MOV AL,E,指令执行后:,(AL)= 45H,18,19,2寄存器寻址(Register Addressing),操作数存放在某个寄存器内,在指令中直接给出寄存器的名字,这种寻址方式称为寄存器寻址。 源寄存器和目的寄存器的位数必须一致。 例如,MOV CL, BX是一条非法指令。,20,【例3-2】,MOV AX, BX ;源操作数和目的操作数都是寄存器寻址方式,指令执行后,(AX)(BX),BX中的内容不变。 MOV AL, AH ;源操作数和目

7、的操作数都是寄存器寻址方式,指令执行后,;(AL)(AH),AH中的内容不变。 MOV AX, 1234H ;目的操作数是寄存器寻址方式,21,【例】下列程序执行后,(AX)=?,(BX)=? MOV AX,1234H MOV BX,5678H ADD AX,BX,执行:1234HAX,执行后:(AX)=68ACH,(BX)=5678H,5678HBX,(AX)+(BX)AX,22,3、固定寻址(隐含寻址) (Inherent Addressing) 操作数并不直接出现在指令中,而是由操作码隐含地指定为某一固定内容。 例: PUSH DS ;目的操作数隐含为栈顶字单元 POP BX ;源操作数

8、隐含为栈顶字单元 LAHF ;源操作数隐含为标志寄存器低字节 ;目的操作数隐含为寄存器AH,23,4、I/O端口寻址(P84) 仅用于输入/输出指令IN、OUT。 长格式I/O寻址端口地址在8位以内,端口地址直接做操作数。可寻址的I/O空间为256字节。例: IN AX,43H OUT 0FH,AL 短格式I/O寻址端口地址16位,固定使用DX做操作数,DX的值就是该16位端口的地址。可寻址的I/O空间为65536字节。 例: IN AL,DX OUT DX,AX,24,8086/8088的存储器寻址(Memory Addressing)方式,除上述寻址方式外,以下各种寻址方式,操作数都在除代

9、码段之外的存储区中。通过不同的寻址方式,获得操作数地址,从而取得操作数。 操作数的物理地址等于段基址左移4位,再加上偏移地址。下面主要解决的问题是如何得到操作数的偏移地址。在8086/8088里,将操作数的偏移地址又称为有效地址(effective address,即EA),因此以下的各种寻址方式即为求有效地址(EA)的不同途径。,25,8086/8088指令中有效地址(EA)由以下3部分组成: 位移量(displacement):存放在指令中的一个8位或16位的数,但它不是立即数,而是一个地址; 基址(base):存放在基址寄存器(BX、BP)中的内容。它是有效地址中的基址部分,通常用于指向

10、数据段中数组或字符串的首地址。 变址(index):存放在变址寄存器(SI、DI)中的内容。通常用来指向数组中某个元素或字符串的某个字符。有效地址(EA)可以用下列式子表示: EA=基址变址位移量 有效地址BX/BPSI/DI8/16位位移量 段地址对应BP基址寄存器默认是SS,其它默认是DS ;可用段超越前缀改变 根据有效地址中含有的成分不同,分别构成不同的寻址方式,26,1直接寻址(Direct Addressing),操作数存放在存储器中,指令中直接给出操作数所在存储单元的偏移地址,这种寻址方式称为直接寻址。 默认情况下,操作数存放在数据段中。要使用其他段中操作数,则应在指令中增加段前缀

11、(称为段超越),如ES:2000H等。 寻址时,用于存放操作数的存储单元的物理地址为:段地址16(即左移四位)偏移地址。,8086/8088的存储器寻址方式,27,【例3-3】,MOV AX, 2000H ;将DS段偏移量为2000H中内容送入AX寄存器 MOV AX, ES:2000H ;将ES段偏移量为2000H中内容送入AX,28,29,在程序中,直接地址通常用内存变量名来表示,如:MOV BX, VARW,其中,VARW是内存字变量。 例如: MOV AX, BUFFER 表示把BUFFER中存放的数据送入AX寄存器。另外,该指令也可写成如下形式,二者是等效的: MOV AX, BUF

12、FER,试比较下列指令中源操作数的寻址方式(VARW是内存字变量):,30,2. 寄存器间接寻址 (Register Indirect Addressing),操作数在存储器中,操作数的有效地址用SI、DI、BX和BP等四个寄存器之一来指定,称这种寻址方式为寄存器间接寻址。,31,若指令中指定的寄存器是SI、DI和BX,则操作数默认存放在当前数据段DS中; 若指令中指定的寄存器是BP,则操作数默认存放在当前堆栈段SS中 。,32,33,34,【例3-5】,已知:(DS)3000H,(BX)1100H,(31100H)3412H,执行指令: MOV AX, BX 操作数的物理地址为: (DS)1

13、6(BX)3000H161100H31100H 指令执行后(AX)3412H。,35,3寄存器相对寻址(Register Relative Addressing),操作数在存储器中,其有效地址是一个基址寄存器(BX、BP)或变址寄存器(SI、DI)的内容和指令中的8位/16位偏移量之和。这种寻址方式称为寄存器相对寻址。 操作数的物理地址为: 段地址16(寄存器)偏移量。,36,【例3-6】,已知:(DS)3000H,(BX)1000H,COUNT2000H,(33000H)13H,(33001H)24H,执行指令: MOV AX, COUNTBX 操作数的物理地址为: (DS)16(BX)CO

14、UNT 3000H161000H2000H 33000H 指令执行后,(AX)2413H。,37,4基址加变址寻址(Based Indexed Addressing),操作数存放在存储器中,指令中基址寄存器(BX或BP)的内容加上变址寄存器(SI或DI)的内容作为操作数的偏移地址,这种寻址方式称为基址加变址寻址。 操作数的物理地址为:段地址16(基址寄存器)(变址寄存器)。 基址加变址寻址方式可使用段超越前缀, 例如:MOV CL,ES:BXSI,38,【例3-7】,已知:(DS)3000H,(BX)1000H,(DI)2000H,(33000H)13H,(33001H)24H,执行指令: M

15、OV AX, BXDI 或写为 MOV AX, BX+DI 操作数的物理地址为: (DS)16(BX)(DI) 3000H161000H2000H 33000H 指令执行后,(AX)2413H。,39,5相对基址加变址寻址(Relative Based Indexed Addressing),操作数存放在存储器中,指令中基址寄存器(BX或BP)的内容加上变址寄存器(SI或DI)的内容,再加上指令中给出的偏移量作为操作数的偏移地址,这种寻址方式称为相对基址加变址寻址。 操作数的物理地址为: 段地址16(基址寄存器)(变址寄存器)偏移量。,40,操作数EABX或BP值 SI或DI值位移量,例:MO

16、V BX+DI+4,CX 其它等效写法: MOV BX+DI4,CX MOV 4BX+DI,CX MOV BXDI4,CX MOV 4BXDI,CX,41,【例3-8】,已知:(DS)3000H,(BX)1000H,(DI)2000H,COUNT100H,(33100H)12H,(33101H)34H, 指令:MOV AX, COUNTBXDI 操作数的物理地址为: (DS)16COUNT(BX)(DI) 3000H16100H1000H2000H 33100H 指令执行后,(AX)3412H。,42,凡是使用寄存器为BX、SI、DI时,其默认段为DS,使用BP时,默认段为SS。该规定为系统默认状态。当要否定默认状态,到非约定段寻找操作数时,必须用跨段前缀指明操作数的段寄存器名。 汇编格式:段寄存器名:操作数地址。 冒号“:”之前的段寄存器名指明操作数所在的段。 【例 】 MOV AX,DS:BP MOV CX,SS:SI 该例中,DS:,SS:均为跨段前缀,此时默认状态无效,操作数的物理地址

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

当前位置:首页 > 高等教育 > 工学

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