微机原理与接口技术 第3章 8086指令系统 朱华贵 2015年09月25日.

Slides:



Advertisements
Similar presentations
第1章第1章 PC/AT 系統 1 Chapter 1 Chapter 1 PC/AT 系統 001.
Advertisements

第一节 职业生活中的道德与法律 第二节 大学生择业与创业 第三节 树立正确的恋爱婚姻观 第六章 培育职业精神 树立家庭美德.
22.3 实际问题与一元二次方程(1).
第三讲 匀变速直线运动 学 科:物 理 主讲人:吴含章. 第三讲 匀变速直线运动 学 科:物 理 主讲人:吴含章.
输入输出程序设计 输入输出的基本概念 无条件方式输入输出 查询方式输入输出 中断方式输入输出.
计算机体系结构 应用程序 软件 操作系统 编译器 固件 指令集 输入输出 CPU 硬件 内存 (I/O) 集成电路 元件,逻辑门.
汇编语言程序设计 吴 向 军 中山大学计算机科学系
国防大学学生军训工作办公室.
第10章 DOS功能调用与BIOS中断调用.
第四章 汇编语言 程序设计 任课教师:王晓甜
第十二章 DMA控制器 12.1 概述 A DMA控制器 A的应用.
第5节 关注人类遗传病.
第一章 计算机基础知识 第一节 计算机概述 一、计算机的基本组成和工作原理 二、有关术语 三、计算机发展简史 四、微型计算机概述
汇编语言与接口技术 教师:范新民.
本周实验安排 实验内容:(P231)人名排序的例子。
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年10月30日.
第2章 高级编程的硬件基础 主要内容 计算机硬件组成 80x86微机系统 Turbo C编译方式 BIOS和DOS调用.
第3章 80x86汇编语言程序设计(下).
第3章 80x86汇编语言程序设计(中) 时间不够的情况下只讲16位汇编.
4.1 汇编语言 4.2 顺序结构程序 4.3 分支程序设计 4.4 循环程序设计 4.5 子程序设计
第3章 80x86汇编语言程序设计(上) 16位汇编版本 时间不够的情况下只讲16位汇编.
9.1 可编程并行输入/输出接口芯片8255A 9.2 可编程计数器/定时器 可编程串行输入/输出接口芯片8251A
3.3.5 程序控制指令 控制转移指令分为: 转移指令 循环控制指令 调用和返回指令 中断指令.
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月26日.
第5章 循环与分支程序设计  循环程序设计  分支程序设计.
汇编语言程序设计 Assembly Language Programming
第三章 寻址方式与指令系统 3.1 寻址方式 一条指令通常由两大部分构成: 操作码 操作数
第6章 DMA传输 6.1 DMA传输原理 6.2 DMA控制器8237A A的编程使用 欢迎辞.
第7章 并行接口 7.1 简单并行接口 7.2 可编程并行接口8255A 7.3 键盘接口 7.4 LED显示器接口.
微机原理与接口技术 第2章 8086系统结构 朱华贵 2015年09月17日.
第九章 计数器和定时器电路 第一节 概述 第二节 Intel 8253的控制字 第三节 Intel 8253的工作方式 第九章 计数器和定时器电路 第一节 概述 第二节 Intel 8253的控制字 第三节 Intel 8253的工作方式 第四节 Intel 8253在IBM PC机上的应用.
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月05日.
第8章 寻址方式与指令系统.
第4章 汇编语言程序设计 4.1 程序设计语言概述 4.2 汇编语言的程序结构与语句格式 4.3 汇编语言的伪指令
微机原理及应用 主讲:谢维成 西华大学 电气信息学院 1.
微机原理及应用 主讲:郑海春.
第一章 8086程序设计 第二章 MCS-51程序设计 第三章 微机基本系统的设计 第四章 存贮器与接口 第五章 并行接口
第8章 PCH中的常规接口.
汇编语言程序设计课程设计 第二次实验 DEBUG基本命令与算术运算指令
第二章 8086/8088系统结构 主要内容 8086/8088微处理器的内部结构 8086/8088 CPU 的引脚与功能
微型计算机原理及应用.
第3章 微型计算机输入输出接口 3.1 输入/输出接口 3.2 输入输出数据传输的控制方式 3.3 开关量输入输出接口 欢迎辞.
第六章 子程序结构 §6.1 子程序的设计方法 §6.2 嵌套与递归子程序 §6.3 子程序举例 §6.4 DOS系统功能调用.
1.3 微型计算机的结构和工作原理.
條件處理.
第九章 高级宏汇编语言 9.1 结构 结构就是将逻辑上有一定关系的一组数据,以某种方式组合在一起所形成的数据形式。
第5章 循环与分支程序设计 学习目标: 了解并掌握循环程序的构造方法,尤其是对循环控制条件的设置以及可能出现的边界情况的考虑。掌握起泡排序算法这种多重循环程序设计中的常用方法。交换标志位的设置在此算法中更能提高效率。学会在数组排序算法中采用折半查找法来提高查找效率。学会使用跳跃表法实现CASE结构。
4.1 汇编语言程序格式 4.2 MASM中的表达式 4.3 伪指令语句 4.4 DOS系统功能调用和BIOS中断调用
3.4.5 控制转移指令(Control transfer instructions) (一)、控制转移指令概述
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月19日.
第五章:输入输出基本技术 主讲教师:范新民.
第二章 8086微处理器. 第二章 8086微处理器 微处理器的基本结构 8086微处理器的主要特性和内部结构 8086CPU的工作模式和引脚信号 8086的存储器管理 8086的总线操作和时序.
第4章 汇编语言程序格式  汇编程序功能  伪操作  汇编语言程序格式  汇编语言程序的上机过程.
第10章 可编程外围接口芯片8255A及其应用 10.1 概述 A的工作原理 A的应用举例.
习题3 1、 分别说明下列指令的原操作数和目的操作数各采用什么寻址方式。 设定如下: ①立即寻址 ② ① ②寄存器寻址
第一章 直角坐標系 1-2 直角坐標.
可编程定时计数器.
第2章 80x86计算机组织  计算机系统  存储器  中央处理机  外部设备.
《微型计算机原理与接口技术》 第4版 王良 宁德师范学院 吴宁 乔亚男 编著 清华大学出版社 出版
第5章 循环与分支程序设计  循环程序设计  分支程序设计.
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年12月17日.
九年级 上册 22.3 实际问题与二次函数 (第1课时).
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月06日.
微机原理与接口技术 西安邮电大学计算机学院 宁晓菊.
第3章 80x86的指令系统和寻址方式 § x86的寻址方式 § x86的指令系统
第二章 8086系统结构 /8086的存储器组织 的系统配置及引脚功能 CPU时序
「同根同心」- 交流計劃 廣州及珠三角經濟發展兩天考察團 2016
微机原理与接口技术 西安邮电大学计算机学院 宁晓菊.
第4章 汇编语言程序格式  汇编程序功能  伪操作  汇编语言程序格式  汇编语言程序的上机过程
第三章 8086的指令系统 8086指令特点 8086的寻址方式 8086的指令格式及数据类型 8086的指令集.
Presentation transcript:

微机原理与接口技术 第3章 8086指令系统 朱华贵 2015年09月25日

微机原理与接口技术 寻址方式 朱华贵 2015年09月25日

3.1 概述 指令是指挥计算机进行操作的命令。 指令系统是指微处理器能执行的各种指令的集合。 程序是一系列按一定顺序排列的指令。 执行程序的过程就是计算机的工作过程。 微处理器的主要功能由它的指令系统来体现。 不同的微处理器有不同的指令系统,其中每一条指令对应着处理器的一种基本操作,这在设计微处理器时确定。

指令格式 通常一条指令包括两部分: 指令的一般格式如下: 操作码 [操作数1,操作数2,……,操作数n] 操作码:决定要完成的操作 操作数:指参加运算的数据或是该数所在的内存单元的地址。 指令的一般格式如下: 操作码 [操作数1,操作数2,……,操作数n] 没有操作数的指令称为无操作数指令。 有两个操作数的指令称为双操作数或二地址指令。 操作码和操作数地址都由二进制数码表示,整条指令以二进制编码的形式存放在存储器中。

操作数来源 指明操作数所在的地方。 操作数有三种来源: 1、操作数在指令中,称立即数操作数; 如:MOV AL,9 2、操作数在寄存器中,称寄存器操作数; 3、操作数在内存单元中,称存储器操作数或内存操作数。用[ ]表示存储器操作数。 如:MOV AL,[2000H]

指令操作数类型 指令应指明参与操作的数字节还是字,即操作数的类型。 1、指令中有寄存器操作数,由寄存器操作数决定操作数类型; 例: MOV [BX],AL;字节操作 [BX] ← AL MOV [BX],AX;字操作 [BX] ← AL,[BX+1] ← AH 在DEBUG下查看指令代码 D:\>DEBUG -A 13A0:0100 MOV [BX],AL 13A0:0102 MOV [BX],AL 13A0:0104 -U 100 13A0:0100 8807 MOV [BX],AL 13A0:0102 8907 MOV [BX],AX …… 两条指令的机器码是不同的:0788H,0789H

2、指令操作数中无寄存器,则有内存操作数的类型决定;若无则需对存储器操作数加类型说明。 例:MOV WORD PTR [BX],0 MOV BYTE PTR [BX],0

指令系统与寻址方式的重要性 采用不同CPU的计算机的指令系统不同。 采用不同CPU的计算机的指令的格式不同。 要使用某种微处理器,必须先要掌握其指令系统和各指令允许的寻址方式。

3.2 8086寻址方式 寻址方式: 指令中给出的求出操作数有效地址的方法。 寻址操作: 计算机按照指令给出的寻址方式求出操作数有效地址的过程。

8086的七种基本的数据寻址方式 存储器寻址方式 (1)立即寻址; (2)寄存器寻址; (3)直接寻址; (4)寄存器间接寻址; (5)寄存器相对寻址; (6)基址变址寻址; (7)相对基址加变址寄存器寻址。 存储器寻址方式

3.2.1 立即寻址 操作数直接出现在指令中,此时的操作数也叫立即数。 立即数紧跟在操作码后面,一起存放在代码段中。 例如: MOV AX,2010H 在该指令格式中,AX是目标操作数,2010H是源操作数。

立即寻址方式的指令执行示意图

立即寻址方式说明 在所有的指令中,立即数只能作源操作数,不能作目标操作数。 立即数应与目标操作数的长度一致。 立即数默认采用十进制形式,以十六进制形式出现的立即数应以字母H为后缀,以八进制形式出现的立即数应以字母Q为后缀。 以十六进制形式出现的立即数,若以字母开头,则必须以数字0为前缀。 立即数还可以用表示+、-、×、/表示的算术表达式,也可以用圆括号改变运算顺序。 立即数只能是整数,不能是小数、变量或其它类型的数据。

3.2.2 寄存器寻址 操作数在寄存器中,在指令中指定寄存器号。 由于寄存器号短,因此,采用寄存器寻址方式的指令的机器码长度短。 操作数在寄存器中,指令执行时,操作就在CPU的内部进行,不需要通过访问存储器来取得操作数,因而指令的执行速度快。 在编程中,如有可能,应尽量在指令中使用这种寻址方式。 例如: MOV AX,2010H

寄存器寻址方式可用的寄存器 对于16位操作数,寄存器可以是: 对8位操作数,寄存器可以是: AX,BX,CX,DX SI,DI,SP,BP CS,DS,SS和ES 对8位操作数,寄存器可以是: AH,AL BH,BL CH,CL DH,DL

寄存器寻址方式指令执行示意图

寄存器寻址方式说明 在一条指令中,寄存器寻址方式既可用于源操作数,也可用于目标操作数,还可以两者都用寄存器寻址方式。 源操作数与目标操作数的长度应一致。例如,不能将寄存器AX的内容传送到寄存器BH中,也不能将寄存器BH的内容传送到寄存器AX中。 两个操作数不能同时为段寄存器。 目标操作数不能是代码段寄存器。

5种与内存单元有关的寻址 1、操作数存放在内存中,取完指令后还需到内存取数; 2、指令中给出的该操作数的地址,包括段地址和偏移地址;指令中用[ ] 给出偏移地址。 3、按给出偏移地址方式的不同,分为以下5种: 直接寻址: MOV AL,[1000H] 寄存器间接寻址: MOV AL,[BX] 寄存器相对寻址: MOV AL,[BX+10H] 基址加变址寄存器寻址:MOV AL,[BX+SI] 相对基址加变址寄存器:MOV AL,[BX+SI+10H] 除直接寻址外,内存操作数地址只能由BX/BP、SI/DI给出。

3.2.3 直接寻址 操作数在存储器中,指令中以具体数值的形式直接给出操作数所在存储单元的有效地址EA。为了与立即数区别,该有效地址必须用[ ]括起。 例如: MOV AX,[2010H] 该指令的源操作数采用直接寻址方式。 若(DS)=2000H,那么指令执行后,(AX)=1225H。 段基地址 EA 操作数 + 指令 存储器

直接寻址方式指令执行示意图

采用直接寻址方式时,如果指令中没有用前缀说明操作数存放在哪个段,则操作数默认存放在数据段。 8086系统允许操作数存放在代码段、堆栈段或附加段。此时,就需要在指令中指明段超越。 例如: MOV ES:[1225H],AX 该指令的目标操作数采用直接寻址方式。操作数存放在由ES指示的附加段中。 物理地址=ES×10H+1225H。

在汇编语言指令中,可以用符号地址代替数值地址。 例如: MOV AX,NUMA 上面这条指令还可以写成如下的形式: 如DATA1数据存放在附加段,则可以用如下的形式指定段跨越前缀: MOV AX,ES: NUMA 或 MOV AX,ES:[ NUMA]

直接寻址示例1 MOV AX, [1000H] 物理地址 设(DS)=10A0H 代码段 + OP 00H 10H 数据段 代码段 + OP 00H 10H 数据段 11A00H 30H 50H 1000H 10A0H 10A00H 1000H 低地址 11A00H 11A00H 主意提醒段地址×16(左移4位) 30H 50H AX 50H 30H (本章中图示存储器地址从上到下递增)

直接寻址示例2 MOV BL, ES:[0100H] 物理地址 设(ES)=3000H 30000H (DS)=2000H + 0100H 30100H 4B 00 BL 0100H 3000H 30100H 30100H 4B 4B 在汇编语言指令中,可以用符号地址代替数值地址 如:MOV AX, BUFF 或 MOV AX, [BUFF] 其中BUFF为存放数据单元的符号地址。

3.2.4 寄存器间接寻址 操作数的有效地址EA存放在基址寄存器BX、BP或变址寄存器SI、DI中。 为了区别于寄存器寻址方式,指令中指定的寄存器名要用[ ]括起来。 指令中使用SI、DI、BX寄存器时,操作数默认存放在数据段中;使用BP寄存器时,操作数默认存放在堆栈段中,允许段超越。 操作数的物理地址=(DS)×10H+(SI)/(DI)/(BX) 或 (SS)×10H+(BP)

例如: MOV AX,[SI] 该指令的源操作数采用寄存器间接寻址方式。 若(DS)=2000H,(SI)=2010H,那么指令执行后,(AX)=1225H。 如操作数不存放在间址寄存器默认的段,则指定段超越的指令可采用如下形式。 MOV AX,ES:[SI] 此时,操作数的物理地址=ES×10H+SI。

寄存器间接寻址方式指令执行示意图

… MOV AH, [BP] MOV BX, [SI] MOV CX, SI 设 (SS)=1000H, (DS)=2000H , (BP)=0B10H, (SI)=032AH 物理地址 物理地址 10000H 20000H + 0B10H + 032AH 40H 00H 3EH 46H 1000H 2000H 0B10H 032AH 10B10H 10B10H 2032AH 2032AH AH 10B10H 40H 032AH 40H 032AH SI 10B11H … 032AH CX 2032AH 3EH 463EH BX 2032BH 46

3.2.5 寄存器相对寻址 操作数的有效地址EA是指令中指定的基址或变址寄存器的值与位移量之和。 指令中使用SI、DI、BX寄存器时,操作数默认存放在数据段中;使用BP寄存器时,操作数默认存放在堆栈段中,允许段超越。 操作数的物理地址=(DS)×10H+(SI)/(DI)/(BX)+8位或16位位移量 或 =(SS)×10H+(BP)+8位或16位位移量

例如: MOV AX,8[BX] 该指令的源操作数采用寄存器相对寻址方式。 若(DS)=2000H,(BX)=2008H,那么指令执行后,(AX)=1225H。

寄存器相对寻址方式的指令执行示意图

寄存器相对寻址说明 偏移量是符号数,8位偏移量的取值范围为:00~0FFH(即+127D~-128D); 16位偏移量的取值范围为:0000~0FFFFH(即+32767D~-32768D)。 8086汇编允许用下面三种形式表示相对寻址,它们是等效的。 MOV AX,[BX]+8 MOV AX,8[BX] MOV AX,[BX+8]

3.2.6 基址加变址寄存器寻址 操作数的有效地址EA是指令中指定的基址寄存器的值与变址寄存器的值之和。 指令中使用基址寄存器BX时,操作数默认存放在数据段中; 使用基址寄存器BP时,操作数默认存放在堆栈段中,允许段超越。 操作数的物理地址 =(DS)×10H+ (BX) + (SI)/(DI) 或 =(SS)×10H+ (BP) + (SI)/(DI)

例如: MOV AX,[BX] [SI] 该指令的源操作数采用基址变址寻址方式。 若(DS)=2000H,(BX)=2008H,(SI)=8H; 则指令执行后,(AX)=1225H。

基址变址寻址方式的指令执行示意图

3.2.7 相对基址加变址寄存器寻址 操作数的有效地址EA是指令中指定的基址寄存器的值与变址寄存器的值以及8位或16位位移量之和。 指令中使用基址寄存器BX时,操作数默认存放在数据段中; 使用基址寄存器BP时,操作数默认存放在堆栈段中; 允许段超越。 操作数的物理地址PA =(DS)×10H+ (BX)+ (SI)/(DI)+8位或16位位移量 或 =(SS)×10H+ (BP)+ (SI)/(DI)+8位或16位位移量

例如: MOV AX,3[BX] [SI] 该指令的源操作数采用寄存器相对寻址方式。 若(DS)=2000H,(BX)=2008H,(SI)=5H,那么指令执行后,(AX)=1225H。

相对基址加变址寄存器寻址方式的指令执行示意图

利用DEBUG学习寻址方式 在DEBUG下汇编下列指令,并查看每条指令执行后的结果: MOV BX,2000H MOV [BX],CS 用R命令是否可以? 操作数[BX]在哪里? 它的内存地址如何构成?