微机原理与接口技术 教学课件 ppt 作者 周国运 微机原理与接口技术3

上传人:E**** 文档编号:89500999 上传时间:2019-05-26 格式:PPT 页数:47 大小:267KB
返回 下载 相关 举报
微机原理与接口技术 教学课件 ppt 作者 周国运 微机原理与接口技术3_第1页
第1页 / 共47页
微机原理与接口技术 教学课件 ppt 作者 周国运 微机原理与接口技术3_第2页
第2页 / 共47页
微机原理与接口技术 教学课件 ppt 作者 周国运 微机原理与接口技术3_第3页
第3页 / 共47页
微机原理与接口技术 教学课件 ppt 作者 周国运 微机原理与接口技术3_第4页
第4页 / 共47页
微机原理与接口技术 教学课件 ppt 作者 周国运 微机原理与接口技术3_第5页
第5页 / 共47页
点击查看更多>>
资源描述

《微机原理与接口技术 教学课件 ppt 作者 周国运 微机原理与接口技术3》由会员分享,可在线阅读,更多相关《微机原理与接口技术 教学课件 ppt 作者 周国运 微机原理与接口技术3(47页珍藏版)》请在金锄头文库上搜索。

1、微机原理与接口技术 第3章 指令系统,主编:周国运 机械工业出版社 2011.9,本章内容 3.1 寻址方式 3.2 8086指令系统 3.3 80286及以上扩充的指令,3.1 寻址方式,3.1 寻址方式,操作数是指令的处理对象。指定操作数或操作数存放位置的方法称为寻址方式。对80x86CPU,其寻址方式可以分为三种类型、共七种寻址方式。 立即寻址 寄存器寻址 存储器寻址 直接寻址方式 寄存器间接寻址方式 寄存器相对寻址方式 基址加变址寻址方式 相对基址加变址寻址方式,3.1 寻址方式,一、立即寻址: 操作数作为指令的一部分而直接写在指令之中,这种操作数称为立即数,这种寻址方式也就称为立即数

2、寻址方式。 实际上就是把要用到的数据直接以常数的形式在指令中给出。例如: MOV AX, 6789H ADD AX, 1234H 这种寻址方式要求数据必须在编程的时候就明确,不能修改。,3.1 寻址方式,另外注意: 立即数可以是8位、16位或32位。 如果立即数为16位或32位,那么,它将按“高高低低”的原则进行存储,所谓“高高低低”是指,数据的高位存放在高地址中,数据的低位存放在低地址中。 8086是16位芯片,在8086系统中指令直接给出的立即数最多是16位,如果是32位的,则必须要用到两次类似的指令。例如,两个32位数据相加的实现如下: ADD AX,1234H ADC DX,5678H

3、,3.1 寻址方式,二、寄存器寻址方式: 指令所要的操作数事先已存储在某寄存器中,或把目标操作数存入寄存器中,或者源操作数和目标操作数都是寄存器,称为寄存器寻址。例如: MOV AX , BX IP寄存器不能直接使用外,段寄存器的使用也有相应的限制。 由于寄存器在CPU中,使用寄存器寻址方式的指令具有较快的执行速度。所以提倡应尽可能地使用寄存器寻址方式。,3.1 寻址方式,三、存储器寻址 共有五种寻址方式: 直接寻址 寄存器间接寻址 寄存器相对寻址 基址加变址寻址 相对基址加变址寻址,3.1 寻址方式,1直接寻址方式 在指令中直接给出该操作数的段地址和有效地址,从而使8086的BIU部件能够利

4、用其地址加法器得到实际物理地址,找到该操作数。 MOV AX,DS:2000H 很多指令都有默认的存放数据的段,例如上面的指令可以简写成: MOV AX,2000H MOV AX,DS:2000H MOV AX,ES:2000H,3.1 寻址方式,2寄存器间接寻址方式 操作数在存储器中,操作数的有效地址用SI、DI、BX和BP等四个寄存器之一来指定。 MOV AX,DS:BX 在不使用段超越前缀的情况下,有下列规定: 若有效地址用SI、DI和BX等之一来指定,则其缺省的段寄存器为DS; 若有效地址用BP来指定,则其缺省的段寄存器为SS(即堆栈段)。,3.1 寻址方式,3寄存器相对寻址方式 操作

5、数在存储器中,其有效地址是一个基址寄存器(BX、BP)或变址寄存器(SI、DI)的内容和指令中的8位/16位偏移量(即相对值)之和。 MOV BX,SI+100H 指令中给出的8位/16位偏移量用补码表示。在计算有效地址时,如果偏移量是8位,则进行符号扩展成16位。当求和之后所得的有效地址超过0FFFFH(一个段的大小),则取其64K的模。,3.1 寻址方式,4基址加变址寻址方式 操作数在存储器中,其有效地址是一个基址寄存器(BX、BP)和一个变址寄存器(SI、DI)的内容之和。例如: MOV BX,BX+DI MOV BX,BX+SI MOV BX,BP+DI MOV BX,BP+SI 特别

6、注意,基址寄存器与变址寄存器不要混淆。,3.1 寻址方式,5相对基址加变址寻址方式 操作数在存储器中,其有效地址是一个基址寄存器(BX、BP)的值、一个变址寄存器(SI、DI)的值和指令中的8位/16位偏移量之和。 MOV BX,BX+DI+200 其格式与规则同前面几种相一致; 需要说明的是它的表达形式是比较灵活的,例如下面几种写法是完全等价的: 200BXDI BX+200DI BX+DI+200,3.2 8086指令系统,3.2 8086指令系统,3.2 8086指令系统,指令系统确定了CPU所能完成的功能,是用汇编语言进行程序设计的最基本部分。 按其功能分成以下几大类: 数据传送指令

7、标志位操作指令 算术运算指令 逻辑运算指令 移位操作指令 比较运算指令 循环指令 转移指令 条件设置字节指令 字符串操作指令 ASCII-BCD码运算调整指令 处理器指令,3.2 8086指令系统,一、指令格式: 汇编语言的指令格式如下: 指令助记符 操作数1 ,操作数2 ,操作数 当指令含有操作数,并要求在指令中显式地写出来时,则在书写时必须遵守: 指令助记符和操作数之间要有空格分隔; 如果指令含有多个操作数,那么,操作数之间要用逗号“,”分开; 编写程序时指令后面还可以书写注释内容,不过,要在注释之前书写分号“;”。,3.2 8086指令系统,二、数据传输指令: 1传送指令MOV 传送指令

8、MOV相对于高级语言里的赋值语句。指令的功能是把源操作数(第二个操作数)的值传给目的操作数(第一个操作数)。指令的格式如下: MOV Reg/Mem, Reg/Mem/Imm 其中:RegRegister(寄存器), MemMemory(存储器), ImmImmediate(立即数), 它们可以是8位、16位或32位(特别指出其位数的除外)。此后都将采用上述缩写,不再说明。,3.2 8086指令系统,对MOV指令有以下几条具体规定,其中有些规定对其它指令也同样有效。 两个操作数的数据类型要相同; 两个操作数不能同时为段寄存器; 代码段寄存器CS不能为目的操作数,但可作为源操作数; 立即数不能直

9、接传给段寄存器; 立即数不能作为目的操作数; 指令指针IP,不能作为MOV指令的操作数; 两个操作数不能同时为存储单元。,3.2 8086指令系统,2交换指令XCHG 交换指令XCHG(Exchange Instruction)是在两个寄存器之间、寄存器和内存变量之间进行数据交换,两个操作数的数据类型要相同。其指令格式如下: XCHG Reg/Mem, Reg/Mem 寄存器不能是段寄存器,两个操作数也不能同时为内存变量。,3.2 8086指令系统,3取有效地址指令LEA 指令LEA(Load Effective Address)是把一个内存变量的有效地址送给指定的寄存器。其指令格式如下: L

10、EA Reg, Mem 该指令通常用来对指针或变址寄存器BX、DI或SI等置初值之用。,3.2 8086指令系统,4装载段寄存器指令 Load Segment Instruction指令的功能是把内存中地址的“低字”传送给指令中指定的16位寄存器,把随后的“高字”传给相应的段寄存器(DS、ES)。其指令格式如下: LDS/LES Reg, Mem 取有效地址指令与取段寄存器指令所得的地址来源是完全不同的 。例如: POINTER DD 12345678H LDS BX, POINTER 指令执行后,各寄存器的内容分别为: (BX)=5678H,(DS)=1234H。,3.2 8086指令系统,

11、5堆栈操作指令 堆栈是一个具有“先进后出”的特点的数据结构。它主要有两大类操作:进栈操作和出栈操作。 (1)进栈指令PUSH,指令格式: PUSH Reg/Mem (2)出栈指令POP,指令格式: POP Reg/Mem,3.2 8086指令系统,6标志寄存器传送指令 (1)标志送AH指令LAHF 功能:Flags的低8位送AH。 (2)AH送标志寄存器指令SAHF 功能:AH值送 Flags的低8位。 (3)标志寄存器进栈指令PUSHF 功能:把16位标志寄存器进栈。 (4)标志寄存器出栈指令POPF 功能:把栈顶的16位数据出栈给标志寄存器。 这些指令都没有形式上的参数。,3.2 8086

12、指令系统,7转换指令XLAT 转换指令(Translate Instruction)有两种书写使用格式,可以给出一个内存地址作为操作数,也可以没有形式上的操作数,但有两个隐含操作数BX和AL。 其功能是把给出的指令中明确给出的内存地址或缺省的BX的值作为内存字节数组首地址、下标为AL的数组元素的值传送给AL:ALBXAL。 指令格式如下: XLAT Mem 或 XLAT,3.2 8086指令系统,8I/O指令 在8086CPU的指令系统不能用普通的访问内存指令来访问其信息,专门设置有I/O指令来访问I/O端口。 (1)输入指令IN IN AL, PortNo/DX (2)输出指令OUT OUT

13、 PortNo/DX, AL 如果某IO设备的端口地址在0255范围之内,那么,可在指令中直接给出,否则,要把该端口地址先存入寄存器DX中,然后在指令中由DX来给出其端口地址。,3.2 8086指令系统,三、算术运算指令: 1加法指令 (1) 加法指令ADD ADD Reg/Mem, Reg/Mem/Imm 把源操作数的值加到目的操作数中。 (2) 带进位加指令ADC ADC Reg/Mem, Reg/Mem/Imm 源操作数和进位标志位的值一起加进来。 (3) 加1指令INC INC Reg/Mem 把操作数的值加1。,3.2 8086指令系统,2减法指令 (1) 减法指令SUB SUB R

14、eg/Mem, Reg/Mem/Imm 从目的操作数中减去源操作数。 (2) 带借位减SBB SBB Reg/Mem, Reg/Mem/Imm 把源操作数和标志位CF的值一起减去。 (3) 减1指令DEC DEC Reg/Mem 把操作数的值减去1。,3.2 8086指令系统,2减法指令(续) (4) 求补指令NEG NEG Reg/Mem 操作数0操作数,即改变操作数的正负号。 (5)比较指令CMP CMP Reg/Mem, Reg/Mem/Imm 不保留结果的减法,目的是为了通过影响标志位得到两者之间的关系。 数据传输指令除了对标志寄存器直接操作外,一般不影响标志位,而之后的指令大多会对标

15、志位产生影响,可以参看课本附录B。,3.2 8086指令系统,3乘法指令 (1) 无符号数乘法指令MUL MUL Reg/Mem (2) 有符号数乘法指令IMUL IMUL Reg/Mem 无符号乘法指令和有符号乘法指令的唯一区别就在于:数据的最高位是作为“数值”参与运算,还是作为“符号位”参与运算。 乘法指令的被乘数都是隐含操作数,乘数在指令中显式地写出来。CPU会根据乘数位数来确定被乘数。,3.2 8086指令系统,4除法指令 (1) 无符号数除法指令DIV DIV Reg/Mem (2) 有符号数除法指令IDIV IDIV Reg/Mem 除法与乘法隐含的操作数类似,具体可以参看课本表3

16、-2与表3-3,3.2 8086指令系统,5数据类型转换指令 (1) 字节转换为字指令CBW CBW 该指令的隐含操作数为AL和AH。其功能是用AL的符号位去填充AH,即:当AL为正数,则AH=0,否则,AH=0FFH。 (2) 字转换为双字指令CWD CWD 该指令的隐含操作数为AX和DX,其功能是用AX的符号位去填充DX。 这两条指令都没有形式上的参数。,3.2 8086指令系统,四、逻辑运算指令: 逻辑运算指令与高级语言中的一样,它主要包括:逻辑与AND、逻辑或OR、逻辑非NOT和异或指令XOR等。 逻辑运算指令都是按位(bit)进行计算的; TEST指令是不保留结果的“与”运算,可以和之前所介绍的CMP比较。,3.2 8086指令系统,五、移位指令:,图,3,-,1,移位指令执行示意图,C,0,SHL,C,RCR,

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

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

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