第4章 8086(8088)CPU指令系统

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据段
3000H:0000H
◆存储器操作数都是给出其首地址 ◆存储器操作数无超越前缀时,默 认段地址为DS;有BP参入寻址时默 认为SS ◆双操作数指令中,两个操作数不 能都是存储器操作数
8
34H 12H
3000H:2000H
AH
AL
4.1操作数寻址方式 4.1操作数寻址方式 4.1.4 操作数寻址方式
MOD
8位位 没有 存储器寻址 移量 位移 R/M字段为存储器操作数 逻辑地址的计算公式 量
mod=00 mod=01
R/M 000 001 010 011 100 101 110 111
mod=10
16位 位移 量
R/M字段为 REG寻址 REG寻址 寄存器操作 数 W=0 W=1
mod=11 AL CL DL BL AH CH DH BH AX CX DX BX SP BP SI DI
操作数有效地址EA 是8/16位的位移量(DISP8/16)与基址(变址) 寄存器BX、BP、DI、SI之和生成。 EA=(BX或BP或SI或DI)+DISP8/16 MOV AX,[BX+10H] 操作如图所示
数据段 BX 20H
00H 34H 12H
3000H:0000H
注: ◆BX、SI和DI访问默认为数据段 ◆BP访问默认为堆栈段 ◆有效地址由两个因子构成
4.1操作数寻址方式 4.1操作数寻址方式 4.2指令系统 4.2指令系统
1
4.1操作数寻址方式 4.1操作数寻址方式 8086CPU指令格式 4.1.1 8086CPU指令格式
指令由操作码和操作数两部分构成。操作码表明指令要进行什 么样的操作;操作数是参加本指令操作的数据。操作数的表现形式 比较复杂,可以是参与操作的数值,也可以是参与操作的数值的 “地址”,需要通过寻址方式来体现。
寄存器间接寻址( ●存储器寻址之寄存器间接寻址(Register Indirect Addressing) )
有效地址EA存放在基址寄存器(BX或BP)或变址寄存器(DI或SI)中 EA=(BX/BP)或(SI/DI)取一个基地址或变地址因子 MOV AX,[BX] 操作如图所示
数据段 BX 20H
3
4.1操作数寻址方式 4.1操作数寻址方式 8086/8088指令格式 4.1.3 8086/8088指令格式
8086/8088机器指令格式通常1-6个字节组成。典型的指令格式 8086/8088 由2个字节组成,如下图所示。
操作码 MOD REG R/M
ห้องสมุดไป่ตู้
第一字节操作码字段表明该指令要完成什么操作。 第二字节表明参加操作数据的地址,用来表明参入本次操作的 数据及其类型,双操作数不能同为存储器操作数。其中:
有效地址是一个8/16位移量和一个基址与变址之和构成 EA=(BX/BP)+(SI/DI)+ DISP8/16 MOV AX,[BX+SI+10H] 操作如图所示
数据段 BX 20H 00H + SI 10H
00H
3000H:0000H
注: ◆基址因子BP访问默认为堆栈段 ◆不能同时取两个基址因子;也不 能同时去两个变址因子
操作码 操作数
介绍操作数之前,首先要清楚计算机中的数据可以存放在哪里呢? 介绍操作数之前,首先要清楚计算机中的数据可以存放在哪里呢? 在计算机运行过程中大量的数据存储器中(MEM),这部分数据 处理时需要给出操作数所在存储单元的地址; 少量数据可以放在寄存器中,使用时也需要给出其地址; 接口中也有寄存器,对其访问需给出其端口地址(第7章介绍)。
10
+ + 0100H
3000H:2010H
AH
AL
4.1操作数寻址方式 4.1操作数寻址方式 4.1.4 操作数寻址方式
存储器寻址之基址加变址寻址(Base-plus●存储器寻址之基址加变址寻址(Base-plus-Index Addressing) Addressing)
有效地址EA是一个基址量与一个变址量之和构成。 EA=(BX/BP)+(SI/DI) MOV AX,[BX+SI] 操作如图所示
数据段 BX 20H 00H + SI 10H
00H 34H 12H
3000H:0000H
注: ◆基址因子BP访问默认为堆栈段 ◆不能同时取两个基址因子;也不 能同时去两个变址因子
11
+
3000H:3000H
AH
AL
4.1操作数寻址方式 4.1操作数寻址方式 4.1.4 操作数寻址方式
存储器寻址之相对基址加变址寻址( ●存储器寻址之相对基址加变址寻址(Base plusAddressing) Relative -plus-Index Addressing)
4.1操作数寻址方式 4.1操作数寻址方式 4.1.4 操作数寻址方式
端口寻址( Addressing) 4.端口寻址(Port Addressing) 80X86系列CPU在访问外设时使用10根地址线A9-A0,其实际访问空 间为210=1K。根据通常书写习惯当高2为A9A8=00时,直接书写低8位, 可直接出现在指令格式中即端口的直接寻址;当A9A8≠00时,要按照 16为的数据书写,不能直接出现在指令格式中,要预先送到DX寄存器 中,即端口的间接寻址。 A 9 A 8 A7A6A5A4A3A2A1A0 0 0 X X X X X X X X 0 1 X X X X X X X X 1 0 X X X X X X X X 1 1 X X X X X X X X
◆MOD段(2Bit):表示操作数的类型 ◆REG段(3Bit):表示其中一个操作数为寄
存器操作数
◆R/M段(3Bit):表示另外一个操作数为寄
存器或存储器操作数
4
4.1操作数寻址方式 4.1操作数寻址方式 4.1.4 操作数寻址方式
所谓操作数的寻址方式,是在指令格式中怎样有效的表示出操 作数的存放位置,CPU在执行该指令时,按照指令格式中的表示找 到并对数据进行存取。 1.立即寻址( Addressing) 1.立即寻址(Immediate Addressing) 立即寻址 立即寻址中的操作数作为指令的一 部分存放在代码段中,在取指阶段数据 随指令一起被取到CPU,这种数据在指 令格式中的直接表现为常数。 如:MOV AL,34H
4.1操作数寻址方式 4.1操作数寻址方式 4.1.4 操作数寻址方式
存储器寻址之直接寻址(Direct ●存储器寻址之直接寻址(Direct Addressing) 在指令格式中直接给出操作数的有效地址,指令执行时CPU根据 给出的有效地址,在相应存储单元存取数据。 有效地址EA=位移量(只取位移量因子) MOV AX,[2000H] 操作如图所示: 注:
AH
代码段
1000H:0000H
操作码 1000H:0100H
34H
AL
注:立即数可理解为常数,在指令中只能作为源操作数
5
4.1操作数寻址方式 4.1操作数寻址方式 4.1.4 操作数寻址方式
2.寄存器寻址( Addressing) 2.寄存器寻址(Register Addressing) 寄存器寻址 寄存器寻址是指操作数存放在规定的寄存器中。 寄存器寻址是指操作数存放在规定的寄存器中。 16位寄存器:AX、BX、CX、DX、 16位寄存器:AX、BX、CX、DX、 位寄存器 SP、BP、DI、SI; SP、BP、DI、SI; 8位寄存器:AH、BH、CH、DH、 位寄存器:AH、BH、CH、DH、 AL、BL、CL、DL; AL、BL、CL、DL; 16位段寄存器:CS、DS、ES、SS。 16位段寄存器:CS、DS、ES、SS。 位段寄存器 SS、DS、ES既可以作为源操作数, SS、DS、ES既可以作为源操作数,也可 既可以作为源操作数 以作为目的操作数, 以作为目的操作数,但不能互为目的操 作数。作为目的操作数时, 作数。作为目的操作数时,源操作数不 能是立即数,CS只能作为源操作数 只能作为源操作数。 能是立即数,CS只能作为源操作数。
6
例如:MOV AX,BX
BH
BL
AH
AL
4.1操作数寻址方式 4.1操作数寻址方式 4.1.4 操作数寻址方式
3.存储器寻址(Memory Addressing) 3.存储器寻址( Addressing) 存储器寻址 存储器操作数的寻址方式中,数据都存放于存储单元中,指令操 作过程中需要BIU通过一个总线周期的访问,才能获取操作数。存储 器操作数的寻址方式是怎么计算出操作数的有效地址EA(Effective Address)。有效地址EA是三个地址量因子一个以上组合,由CPU执行 单元EU计算出来。
12
+
3000H:3000H
34H 12H
0010H 3000H:3000H
+
AH
AL
4.1操作数寻址方式 4.1操作数寻址方式 4.1.4 操作数寻址方式
存储器操作数和寄存器操作数寻址方式,怎样在指令格式中体现呢? 前节介绍的指令格式中的MOD段,MOD=11时表示两个操作数都为寄存器 操作数;MOD≠11时表示R/M段所表示的操作数为存储器操作数,具体 如下表所示。
13
DS:[BX+SI] DS:[BX+SI+disp8] DS:[BX+SI+disp16] 相对的基址+变址寻址 基址+变址寻址 DS:[BX+DI] DS:[BX+DI+disp8] DS:[BX+DI+disp16] SS:[BP+SI] SS:[BP+SI+disp8] SS:[BP+SI+disp16] SS:[BP+DI] SS:[BP+DI+disp8] SS:[BP+DI+disp16] 寄存器间接寻址 DS:[SI] DS:[SI+disp8] DS:[SI+disp16] 直接寻址 DS:[DI] DS:[DI+disp8] 相对寻址 DS:[DI+disp16] DS:[direct16] SS:[BP+disp8] SS:[BP+disp16] DS:[BX] DS:[BX+disp8] DS:[BX+disp16]
IN
AL,20H
OUT 20H,AL MOV DX,200H IN AL,DX
20H为端口地址
200H为端口地址
14
OUT DX,AL
4.2 指令系统
8086/8088的指令系统,按照其功能可以分为以下六个功能组: 数据传送(Data Transfer) 算术运算(Arithmetic) 串操作(String Manipulation) 处理器控制(Processor Control) 程序控制(Program Control) 逻辑运算(Logic) 不同指令其操作数的数量不同,主要有3种格式:(1)无操作数 指令;(2)单操作数指令;(3)双操作数指令。 在学习指令过程中要注意3个方面事项:(1)指令隐含功能;(2) 指令特殊用途;(3)指令对标志位影响。
2
4.1操作数寻址方式 4.1操作数寻址方式 4.1.2 操作数的类型
1.存储器操作数 1.存储器操作数 存储器分为代码段、数据段、附加段和堆栈段,存放在数 据段、附加段和堆栈段中的数据即存储器操作数,其地址 表示比较复杂,将在寻址方式中做详细介绍; 2.立即操作数 2.立即操作数 存放在代码段中的数据是指令格式编码的一部分,在取指 令是就随指令被取到CPU,直接可以参加指令操作,通常称 为立即数。 3.寄存器操作数 3.寄存器操作数 存放在寄存器中的数据称为寄存器操作数。 4.端口操作数 4.端口操作数 存放在外设端口中的数据称为端口操作数,CPU使用专用的 IN、OUT指令来对端口进行访问。
00H 34H 12H
3000H:0000H
注: ◆BX、SI和DI访问默认为数据段 ◆BP访问默认为堆栈段
+
3000H:2000H
AH
AL 9
4.1操作数寻址方式 4.1操作数寻址方式 4.1.4 操作数寻址方式
●存储器寻址之寄存器相对寻址(Register 存储器寻址之寄存器相对寻址(
Relative Addressing) Addressing)
◆位移量因子(Displacement):位移量是指令中直接给出的一个8/16位数; ◆基址量因子(Base):由基址寄存器BX或BP提供的内容; ◆变址量因子(Index):由变址寄存器SI或DI提供的内容。
注:3个地址量因子组合有7种方式。根据组合后地址量因子的特 点,最终合并成5种寻址方式。
7
相关文档
最新文档