第3章 8086(8088)CPU指令系统
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3.1 8086CPU指令概述
操作码
操作数(操作数地址)
操作数是参加本指令操作的数据
有些指令不需要操作数,通常的指令都有一个或两个操
作数,也有个别指令有3个甚至4个操作数
源操作数和目标操作数
寻址方式:指令中如何计算操作数的存放位置即操作
数的偏移地址或有效地址。CPU在执行该指令时能够按照
MOV AX,ES:[2000H];AX←ES:[2000H]
1、有效地址在指令中给出
2、需要使用总线周期
3、默认的段地址在DS段寄存器,可使用段超越前缀改变
3. 直接寻址方式
4. 寄存器间接寻址方式 MOV AX, [SI] ;AX←DS:[SI] MOV AL,[BP] ;AL←SS:[BP]
的集合
每种计算机都有它支持的指令集合 16位8086指令系统是Intel 80x86系列微处理器指令系
统的基础
8086/8088的指令系统,按照其功能可以分为以下六个
功能组: ① 数据传送 ③ 逻辑运算 ⑤ 程序控制 ② 算术运算 ④ 串操作 ⑥ 处理器控制
3.2 指令系统
学习指令的注意事项
3.直接寻址方式 4.寄存器间接寻址方式 5.寄存器相对寻址方式 6.基址变址寻址方式 7.基址变址相对寻址方式 端口寻址
1. 立即寻址方式 MOV AL,34H
代码段 10000H
;AL←34H
1000H:0000H
10100H 10101H 10102H AH AL
操作码 34H
1000H:0100H
在寄存器相对寻址或相对基址加变址寻址方式中,位移 量可用符号表示
MOV AX,[SI+COUNT]
;COUNT是事先定义的变量或常量(就是数值)
MOV AX,[BX+SI+WNUM]
;WNUM也是变量或常量
注意事项2:多种表达形式
同一寻址方式可以写成不同的形式: MOV AX,[BX][SI]
;等同于 MOV AX,[BX+SI]
1. 立即寻址方式
操作数作为指令的一部分存放在操作码之后的主存单元
中 立即数总是和操作码一起被放入总线接口部件BIU中的 指令流队列中,在指令执行时不需再到存储器存取该数 据。 立即数可以是8位或16位的,是指令的一部分 它可以是8位数值(00H~FFH) 也可以是16位数值(0000H~FFFFH) 立即数寻址方式常用来给寄存器赋值 立即数可以简单理解为常数,在指令中只能作为源操作 数。立即数不能作为目的操作数。 源操作数不会因为传送而失去数据。
指令格式中的表示找到并对数据进行存取。
8086/8088CPU指令系统的操作数的来源有以下4种:
立即数、寄存器操作数、存储器操作数、端口操作数。
操作数采取哪一种寻址方式,会影响机器运行的速度
和效率。
如何寻址一个操作数对程序设计很重要
8086CPU 操作数类型
立即数
放在代码段作为指令的一部分的数据
寄存器操作数
存放在寄存器中的数据
存储器操作数
存放在存储器的数据段、堆栈段和附加数据段中的数据
端口操作数
存放在外设端口中的数据
3.2 操作数的寻址方式
立即数 寄存器操作数
讲授思路: 1.立即寻址方式 1.理论知识 2.演示执行过程 2.寄存器寻址 3.注意事项
存储器寻址
端口操作数
MOV AX,1000[BX][SI] ;AX←DS:[BX+SI+1000H]
1 、 有 效 地 址 是 基 址 寄 存 器 ( BX/BP ) 、 变 址 寄 存 器
(SI/DI)与一个8位或16位位移量之和: 有效地址=BX/BP+SI/DI+8/16位位移量 2、段地址对应BX基址寄存器默认是DS,对应BP基址寄 存器默认是SS;可用段超越前缀改变
MOV AX,COUNT[SI]
;等同于 MOV AX,[SI+COUNT]
MOV AX,WNUM[BX][SI]
;等同于 MOV AX,WNUM[BX+SI]
;等同于 MOV AX,[BX+SI+WNUM]
本节练习
1、若CS=5200H,物理地址为5A230H,则当
CS=7800H时,计算器所在内存单元的物理
寄存器的长度要相同。
存储器寻址方式
在存储器操作数的寻址方式中,数据都存放于
存储单元中,在指令操作过程中需要BIU通过一 个总线周期的访问,才能获得操作数。
存储器操作数的寻址方式是怎么根据给出的操
作数地址因子,计算出操作数的有效地址EA (Effective Address)。
3. 直接寻址方式 MOV AX,[2000H]; AX←DS:[2000H]
MOV AX,ARRAY[SI] ;AX←DS:[ARRAY+SI]
代码段 10000H 1000H:0000H
假设ARRAY地址:1000H 操作码 1 0 00H SI 10H 00H 数据段 30000H 2 0 0 0H 32000H 3000H:0000H 操作码 1000H:0100H
+
1、寄存器可以是BX、BP或SI、DI 2、有效地址是寄存器内容与有符号8位或16位位移量之和, EA=BX/BP/SI/DI+8/16位位移量 3、段地址对应BX/SI/DI寄存器默认是DS,对应BP寄存器 默认是SS;可用段超越前缀改变
5. 寄存器相对寻址方式
MOV AX,1000H[BX] ;AX←DS:[BX+1000H] MOV AL,[BX]+1000H ;其物理地址的计算为[DS*10H+BX+1000H] MOV AL,[BX+1000H] ;其物理地址的计算为[DS*10H+BX+1000H] MOV AL,[BP+1000H] ;其物理地址的计算为[SS*10H+BP+1000H]
通用数据传送指令
(MOV PUSH POP XCHG XLAT)
地址传送指令
(LEA LDS LES)
标志传送指令
(LAHF SAHF PUSHF POPF)
输入输出指令
(IN OUT)
重点掌握
MOV PUSH POP XCHG XLAT LEA
3.2.1 数据传送类指令 1. 通用数据传送指令
6. 基址加变址寻址方式
MOV AX,[BX][SI] MOV AX,[BX+SI] ;AX←DS:[BX+SI]
;操作数物理地址为:[DS*10H+BX+SI];
MOV AL,[BP+SI]
;操作数的物理地址为:[SS*10H+BP+SI]。
6. 基址加变址寻址方式
7.相对基址加变址寻址方式
指令的功能——该指令能够实现何种操作。通常指令助记
符就是指令功能的英文单词或其缩写形式
指令支持的寻址方式——该指令中的操作数可以采用何种
寻址方式
指令对标志的影响——该指令执行后是否对各个标志位有
影响,以及如何影响
其他方面——该指令其他需要特别注意的地方,如指令执
行时的约定设置、必须预置的参数、隐含使用的寄存器等
本节主讲内容
3.1 8086 CPU指令概述 3.2 操作数的寻址方式(重点)
3.1 8086CPU指令概述
操作码
操作数(操作数地址)
指令由操作码和操作数(操作数地址)两部分组成
操作码也称指令码,表示指令要进行的是什么样的操作,
如传送、运算、移位、跳转等操作,它是指令中不可缺 少的组成部分
1、需要总线周期
2、可用寄存器BX、SI、DI 、BP中
3、使用BX,SI,DI时,默认的数据存于数据段DS中;使
用BP时,默认的数据存于堆栈段SS中; 4、可使用段超越前缀改变
执行过程
4. 寄存器间接寻址方式
5. 寄存器相对寻址方式 MOV AX,1000H[BX] ;AX←DS:[BX+1000H]
5) MOV ES:VAR,12
6) MOV WORD PTR[BX],12
(1) 传送指令MOV(move)
两个操作数的类型不一致
示例
例如源操作数是字节,而目的操作数是字;或相反 示例
两个操作数不能都是存储器
传送指令很灵活,但主存之间的直接传送却不允许 示例
段寄存器的操作有一些限制
34H 12H
3000H:2000H
AH
AL
(1) 传送指令MOV(move) MOV reg/mem,imm
;立即数送寄存器或主存
MOV reg/mem/seg,reg
;寄存器送(段)寄存器或主存 MOV reg/seg,mem
;主存送(段)寄存器 MOV reg/mem,seg ;段寄存器送寄存器或主存
(1)传送指令MOV(Move)
指令格式:MOV DEST,SRC
指令功能:DEST←SRC,将源操作数送入指定目的操
作数(寄存器或者存储单元)。
该指令不影响标志寄存器状态标志位。其中,SRC:寄
存器操作数、存储器操作数、立即数;DEST:寄存器 (CS除外)操作数、存储器操作数。
(1) 传送指令MOV(move)
2. 寄存器寻址方式 MOV BX,AX ;BX←AX
2. 寄存器寻址方式
不需要总线周期,速度快 原操作数和目的操作数均可以使用寄存器寻址 操作数存放在CPU的内部寄存器reg中,可以是: 8位寄存器r8: AH、AL、BH、BL、CH、CL、DH、DL 16位寄存器r16: AX、BX、CX、DX、SI、DI、BP、SP 寄存器寻址方式常用于CPU内部的数据传递。
3.2 指令系统
3.2 指令系统
3.2.1 数据传送指令
数据传送指令是将数据、地址或者立即数送到寄存器或
者存储单元中、或者在寄存器之间、寄存器与存储器之
间进行数据传送。
数据传送是计算机中最基本、最重要的一种操作,也是
最常使用的一类指令。
除标志寄存器传送指令外,均不影响标志位。
3.2.1 数据传送指令
地址。
本节练习
2、设BX=0123H DI=1000H DS=3200H,试指出下列
指令中源操作数的寻址方式,并写出其操作数的有效地
址和物理地址。
(1)MOV AX,[1A38H]
(2)MOV AX,[BX]
(3)MOV AX,[BX+1A38H] (4)MOV AX,[BX+DI] (5)MOV AX,[BX+DI+1A38H]
6. 基址加变址寻址方式
MOV AX,[BX][SI] ;AX←DS:[BX+SI]
1、有效地址由基址寄存器(BX或BP)的内容加上变址 寄存器(SI或DI)的内容构成: 有效地址=BX/BP+SI/DI 2、段地址对应BX基址寄存器默认是DS,对应BP基址寄
存器默认是SS;可用段超越前缀改变
3、注意:BX与BP不能同时使用;SI 与DI不能同时使用。
段寄存器属专用寄存器,对他们的操作能力有限
(2)交换指令XCHG(Exchange)
指令格式:XCHG DEST,SRC 指令功能:将DEST操作数与SRC操作数的内容相互交换
该指令不影响标志寄存器状态标志位
寄存器与寄存器之间对换数据
例题 例题 例题
寄存器与存储器之间对换数据
不能在存储器与存储器之间对换数据
(3) 压栈指令PUSH
指令格式:PUSH SRC 指令功能:SP←SP-2,[SP]←SRC 该指令不影响标志寄存器状态标志位。
(3) 压栈指令PUSH PUSH AX指令执行流程
PUSH AX的编 码 操作码 . . 80000H SP 0020H SP „„堆 栈 段
7. 相对基址加变址寻址方式
(1)MOV AX,1234H (2)MOV AX,[1234H] (3)MOV AX,BX (4)MOV AX,[BX] (5)MOV AX,1A38H [BX] (6)MOV AX,[BX][DI] (7)MOV AX, 1A38H[B][DI]
注意事项1:用符号表示位移量
(1) 传送指令MOV(move)
立即数 存 储 器 通用寄存器 AX BX CX DX BP SP SI DI 段寄存器 CS DS ES SS
MOV也并非任意传送
(1) 传送指令MOV(move)
合法指令 1) MOV AL,5
2) MOV AX,BX
3) MOV DS,AX
4) MOV AX,DS
3.2 指令系统
主讲内容
3.2.1 数据传送指令 3.2.2 算术运算类指令 3.2.3 位操作指令 3.2.4 串操作指令
3.2.5 程序控制指令
3.2.6 处理器控制指令
3.2 指令系统
本节主讲内容
☆ 指令系统的概述
☆ 3.2.1
数据传送指令
3.2 指令系统
计算机的指令系统就是指该计算机能够执行的全部指令