大工计算机原理第3章8086微处理器的指令系统(1)资料

合集下载

微机原理第3章8086指令系统

微机原理第3章8086指令系统

微机原理第3章8086指令系统8086是Intel公司推出的一种16位微处理器,是x86架构的第一代处理器。

8086指令系统是8086微处理器所支持的指令集合,本章将介绍8086指令系统的基本特性和指令编码格式。

8086指令系统采用变长指令编码格式,指令长度可以是1个字节到多个字节,提供了多种寻址方式和丰富的操作类型。

8086指令系统共支持256条标准指令,可以执行各种算术逻辑运算、数据传输和控制流操作。

8086指令由操作码和操作数组成。

操作码指示了执行的具体操作,操作数则是操作码所针对的数据。

8086指令系统提供了多种寻址方式,包括立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、寄存器相对寻址和基址变址寻址等。

立即寻址是将常数或数据直接作为操作数,如MOVAX,1000H,表示将立即数1000H传送到AX寄存器。

直接寻址是通过指定一个内存单元的地址来作为操作数,如MOVAL,[BX],表示将BX寄存器指向的内存单元的内容传送到AL寄存器。

寄存器寻址是直接将一个寄存器作为操作数,如MOVAX,BX,表示将BX寄存器的内容传送到AX寄存器。

除了寻址方式,8086指令系统还提供了多种操作类型,如算术逻辑运算、数据传输和控制流操作等。

算术逻辑运算可以进行加、减、乘、除等数学运算,如ADD、SUB、MUL、DIV等指令。

数据传输可以进行数据的读取和存储操作,如MOV、PUSH、POP等指令。

控制流操作可以用于程序的跳转和条件判断,如JMP、JZ、JC等指令。

8086指令系统还支持多种数据类型的操作,包括字节、字和双字等。

字节操作是对8位数据进行操作,字操作是对16位数据进行操作,双字操作是对32位数据进行操作。

指令的操作数大小可以根据需要选择合适的寄存器或内存单元。

总之,8086指令系统是8086微处理器所支持的指令集合,提供了多种寻址方式和操作类型,支持多种数据类型的操作。

通过掌握8086指令系统,可以编写出高效、精确的8086汇编程序,实现各种功能和算法。

第3章8086指令系统

第3章8086指令系统

寻址方式 段寄存器 有效地址
DISP[BX][SI]
DS (BX)+(SI)+DISP
DISP[BX][DI]
DS (BX)+(DI)+DISP
DISP[BP][SI]
SS
(BP)+(SI)+DISP
DISP[BP][DI]
SS (BP)+(DI)+DISP
物理地址
(DS) ×10H+ (BX)+(SI)+DISP
(DS) ×10H+ (BX)+(DI)+DISP
(DS) ×10H+ (BP)+(SI)+DISP
(SS) ×10H+ (BP)+(DI)+DISP
例:下述各条指令都是错误的
• MOV AX, [CX] • MOV AX, [BX][BP] • MOV AX, [SI][DI] • MOV AX, 112200H[BX]
为数据段中的变量:
• MOV 1AH, CL ; 立即数不能作为目的操作数。
• MOV 1200H, AX
• MOV CS,BX
; CS, IP不能作为目的操作数
• MOV W1,[BX] ; 两个内存操作数之间不能传送
• MOV [1200H], [BX]
2. 段前缀
寻址方式隐含地规定了存储器操作数的段地址。
5.操作数的类型必须一致 例如,
MOV AX , BX
; 正确。指令执行后,AX←(BX),但BX不变
MOV AX, BL
; 错误。源和目的的位数不相同
MOV AL, 256
; 错误。 256=100H,超过了AL能存放的数的

第3章 8086指令系统(1)

第3章 8086指令系统(1)

第三章 8086指令系统 8086指令系统
21
例 MOV BX,[SI] , 解:设:DS=1000H,SI=2000H,(12000H)=318BH = , = , = 物理地址= × 则:物理地址= 16×DS + SI = 10000H + 200Байду номын сангаасH = 12000H 指令执行后, = 指令执行后,BX=318BH,指令执行过程如图所示。 ,指令执行过程如图所示。
第三章 8086指令系统 8086指令系统
15
1.2.3 直接寻址方式
1.含义: 1.含义: 含义 存储单元的有效地址EA( 操作数的偏移地址) 存储单元的有效地址EA(即:操作数的偏移地址)直接 由指令给出。 由指令给出。 2.特点: 2.特点: 特点 机器码中,有效地址存放在代码段中指令的操作码之后, 机器码中,有效地址存放在代码段中指令的操作码之后, 而该地址单元中的数据总是存放在存储器中。 而该地址单元中的数据总是存放在存储器中。须先求出操作 数的物理地址,再从存储器中取得操作数。 数的物理地址,再从存储器中取得操作数。 操作数的物理地址=16× 操作数的物理地址=16×DS + EA 3.作用: 3.作用: 作用 实现对存储单元的读/写操作。 实现对存储单元的读/写操作。
6
第三章 8086指令系统 8086指令系统
各种寻址方式指令执行速度不同: 各种寻址方式指令执行速度不同:
操作数在寄存器中指令执行速度快 操作数在寄存器中指令执行速度快:在CPU内部立即执行; 寄存器中指令执行速度 CPU内部立即执行 内部立即执行; 立即数寻址指令执行速度较快:直接从指令队列中取数; 立即数寻址指令执行速度较快:直接从指令队列中取数; 寻址指令执行速度较快 操作数在存储器中指令执行速度较慢 通过总线与CPU交 操作数在存储器中指令执行速度较慢:通过总线与CPU交 存储器中指令执行速度较慢: 换数据。 换数据。 CPU进行读 写存储器的操作: CPU进行读/写存储器的操作: 进行读/ ① 把一个偏移量送到BIU,计算出20位物理地址; 把一个偏移量送到BIU,计算出20位物理地址 位物理地址; ② 执行总线周期存取操作数。 执行总线周期存取操作数。

计算机原理 第三章 8086微处理器的指令系统

计算机原理 第三章 8086微处理器的指令系统

汇编语言:汇编语言是一种符号语言,用助记符表示操作码,用符号
4
计算机原理 2013年7月10日9时44分
第三章 8086微处理器的指令系统
根据指令内容确定操作数地址的过程,称为寻址。
根据寻址方式计算所得到的地址叫做有效地址EA,也就是段 内偏移地址。有效地址还需要与相应的段基地址组合才是20位 的物理地址PA ,该工作由微处理器来完成。 寻址方式在两种方式下被涉及:操作数的寻址方式和指令的
3.3.6 处理器控制指令
2
计算机原理 2013年7月10日9时44分
第三章 8086微处理器的指令系统
3.1 指令系统概述 指令系统是一台计算机所能识别和执行的全部指令的集合。 它与微处理器有着密切的关系,不同的微处理器有不同的指令系统。 指令是使计算机执行某种特定操作的二进制编码。 指令一般包括两个部分:操作码域和地址域。 操作码域存放指令的操作码,即指明该指令应由计算机完成何种
22 计算机原理 2013年7月10日9时44分
第三章 8086微处理器的指令系统
8086操作数寻址方式小结:
立即寻址,操作数直接放在指令中。 隐含寻址,指令已经隐含了存放操作数的寄存器
寄存器寻址(8个通用寄存器)
直接寻址,有效地址由指令直接给出,即有效地址只包含位移量。 寄存器间接寻址和寄存器相对间接寻址(BX、BP、SI、DI,位移量)
10
计算机原理 2013年7月10日9时44分
第三章 8086微处理器的指令系统
例3.4 MOV AX,[2000H] 若(DS)=3000H,则执行情况如图示。 直接寻址也可用符号地址。 例3.5:MOV AX,VALUE/MOV AX,[VALUE]
这里,VALUE就是存放操作数单元的符号地址。

3.3-指令系统之1

3.3-指令系统之1
指令格式: POP 目的
指令功能:把当前SP所指向的一个字送到目的 操作数中
目的操作数可以是16位通用寄存器、段寄存 器或存储单元,但不能是CS。
每执行一次出栈操作,SP←SP+2,SP向高地 址方向移动,指向新的栈顶。
安徽理工大学
3.3 指令系统-1
第3章 8086 指令系统
例3.29
设SS=2000H SP=40H AX=25FEH BX=3120H
M/
3.3 指令系统-1
第3章 8086 指令系统
安徽理工大学
3.3 指令系统-1
第3章 8086 指令系统
§3.3 8086的指令系统
8086的指令共有六大类:数据传送指令、算术 运算指令、逻辑运算和移位指令、字符串处理 指令、控制转移指令、处理器控制指令。
本章除详细介绍各类指令外,还将介绍部分伪 指令,并给出许多短小的程序设计例子,以便更 好理解指令功能。
当端口地址大于FFH时,必须用格式 寻址,即先 将端口号送入DX,再执行输入操作,DX允许范围 0000~ FFFFH。
安徽理工大学
3.3 指令系统-1
第3章 8086 指令系统
2. 输入输出指令
例3.32
用IN指令从输入端口读取数据的例子。
IN AL,0F1H ;AL←从F1H端口读入1字节 ; IN AX,80H ;AL←80H端口内容
例3.38 设:DS=1200H,(12450H)=F346H, (12452H)=0A90H。执行指令:
LDS SI,[450H]
结果: 存储单元前2字节内容为F346H ,SI←F346H
后2字节内容为0A90H ,DS←0A90H
安徽理工大学
3.3 指令系统-1

微机原理--第3章 8086指令系统(1)

微机原理--第3章 8086指令系统(1)

JUST
《微机原理与接口技术》
JUST
《微机原理与接口技术》
3.1.2 数字数据类型
数字数据类型:无符号整数,有符号整数 无符号整数:原始二进制值
符号整数:最高位是符号位,0表示正数,1表示负数
?补码的概念
JUST
《微机原理与接口技术》
JUST
《微机原理与接口技术》
3.1.3 指针数据类型
MOV [BX],4 A35H
001101010 1001010 C707354A
(5)五、六字节指令(参考附录2,P.417)
JUST
《微机原理与接口技术》
操作数
1. 2. 3. 立即操作数 寄存器操作数 存储器操作数
JUST
《微机原理与接口技术》
1. 立即数操作数
具有固定数值的数, 即常数。表3-2
JUST
《微机原理与接口技术》
3.1 基本数据类型
IA-32结构的基本数据类型是字节、字、双字、四字和双四字
JUST
《微机原理与接口技术》
3.1 基本数据类型
四字是在Intel 80486处理器中引入IA-32 结构的, 双四字是在具有SSE扩展的Pentium Ⅲ 处理器中 引入的。 基本数据类型在内存中的字节顺序:低字节(位 0至位7)占用内存中的最低地址,该地址也是此 操作数的地址。
2.表3-2 段寄存器使用的一些基本约定 (P49)
JUST
《微机原理与接口技术》
3.3
8086的寻址方式
寻址方式:寻找操作数地址的方法
在8086指令系统中,寻址方式可分为8种: ①立即寻址 ⑤寄存器相对寻址
②直接寻址
③寄存器寻址 ④寄存器间接寻址

第三讲 8086指令系统(1)

第三讲 8086指令系统(1)

REG--寄存器 REG--寄存器 MOD--模式 MOD--模式 R/M--寄存器或内存 R/M--寄存器或内存 带位移量的寄存器和内存之间的传送(设位移量为16位) 操作码 MOD REG R/M 位移低位 位移高位
立即数送寄存器(设立即数为16位) 操作码 11 操作码 R/M 数据低位 数据高位
注意立即数是字节还是字,即明确指令是字 节操作还是字操作。
例2:寄存器传送 mov ax,bx mov ah,al mov ds,ax mov [bx],al
例3:存储器传送 mov al,[bx] ;al←ds:[bx] mov dx,[bp] ;dx←ss:[bp] mov es,[si] ;es←ds:[si]
段内转移 CS不变,IP=?
无 条 件 转 移
段内相对寻址 IP=IP+D8 JMP SHORT AB, IP=IP+D16 JMP [NEAR PTR] AB 段内间接寻址 IP←(内存单元) 或 IP←(寄存器)
如: JMP [WORD PTR可省略] [BX] , JMP BX
段间转移 CS:IP=?
3、寄存器寻址:操作数在寄存器中 、寄存器寻址: 指令 寄存器
寄存器号
例:MOV AX,BX ,
操作数
如指令执行前(AX)=3064H,( )=1234H; ,(BX) 如指令执行前( ) ,( ; 则指令执行后,( ,(AX) ,(BX)保持不变。 则指令执行后,( )=1234H,( )保持不变。 ,(
• 两个操作数不能都是存储器
MOV [BX],[AX] ADD X,Y
• 段寄存器操作的限制 1)不允许立即数传送给段寄存器:MOV DS,100H 2)不允许直接改变CS值:MOV CS,[SI] 3)不允许段寄存器之间的直接传送:MOV DS,ES

第 3 章 8086指令系统——微机原理课件PPT

第 3 章  8086指令系统——微机原理课件PPT
第 3 章 8086பைடு நூலகம்令系统
3.1 基本数据类型 3.2 8086的指令格式 3.3 8086指令的操作数寻址方式 3.4 8086的通用指令
3.1 基本数据类型
x86系列处理器的基本数据类型是字节、 字、双字、四字和双四字。
一个字节是8位,一个字是两个字节(16 位),双字是4字节(32位),四字是8字 节(64位),双四字是16字节(128位)。
3.2 8086的指令格式
当指令用符号(助记符)表示时,就是使用8086 汇 编语言的子集。在此子集中,指令有以下格式:
标号:助记符 [参数1 [, 参数2 [, 参数3] ] ] 其中: (1) 标号(label)是一个标识符后面跟有冒号(:); (2) 助记符(mnemonic code)是一类具有相同功能的指令操
•MOV AH, 80H
ADD AX, 1234H
•MOV ECX, 123456H MOV B1, 12H
•MOV W1, 3456H ADD D1, 32123456H
其中:B1、W1和D1分别是字节、字和双字单元。 以上指令中的第二操作数都是立即数,在汇编语言中,规定:
立即数不能作为指令中的第一操作数。该规定与高级语言中 “赋值语句的左边不能是常量”的规定相一致。 使用立即寻址的指令主要用来给寄存器赋初值。
(2) 符号整数
符号整数是保存在字节、字、双字或四 字中的带符号的二进制数。对于符号整数 的所有操作都假定用2的补码表示。符号位 定位在操作数的最高位。
负数的符号位为1,正数的符号位为0。 整数值的范围,对于字节,从-128到+127; 对于字从-32768到+32767;对于双字,从231到+(231-1);对于四字,从-263到+ (263-1)。

微机原理第三章 8086指令系统01PPT课件

微机原理第三章  8086指令系统01PPT课件
❖ 串数据类型——是指位、字节、字或双字 的连续序列。 位串:最多 2321 位。 字节串:包含字节、字或双字,范围 从0~ 2321 字节
7
3.2 8086的指令格式
❖ 指令用助记符表示,格式如下:
标号: 助记符 参数1,参数2,参数3;注释
操作码场
操作数场
注意:参数1,参数2,参数3 三个操作数是任
选的,根据指令的不同,可以是0~3个。
例:SUM: ADD AX, [BX] ; 加法运算入口 8
3.3 8086的寻址方式
❖ 寻找操作数的方式,在微型计算机中操作数可 能的位置不外乎三种: 1.包含在指令中——立即寻址 2.包含在CPU的某个寄存器中——寄存器 寻址 3. 操作数在内存的数据区中,指令中包含此操 作数的地址。该地址由两部分构成:此单元所 在段的基地址(多数情况在DS段)和此单元 与段基址的距离——段内偏移量。指令中规定 的就是这个偏移量,也叫有效地址EA。 根据EA构成情况的不同,对应不同的寻址方 式。
操作数所在内存单元的完整地址表达式:
段寄存器R : [基址R+变址R+位移量]
通知CUP访问哪个 逻辑段
有效地址/偏移地址
19
在内存中的操作数由段选择子和偏移量引用。 段选择子规定包含操作数所在的段:
段选择子能隐含或显式规定,基本约定见书 上P.49表3-2。 以下的默认段,不能被超越: (1) 必须从码段取指令; (2) 在串操作中的目的必须存储在由ES寄存器 指向的数据段; (3) 入栈和出栈操作必须是引用SS 段。
注意:立即寻址主要用来给寄存器或存储器赋初 值。
12
立即寻址示意图: 存储器
AH AL
OP 64 指令 30

第3章 8086的寻址方式和指令系统(1)

第3章 8086的寻址方式和指令系统(1)

EA=
8086寻址方式和指令系统 第3章 8086寻址方式和指令系统
例3.11 MOV BX, [SI] DS=1000H,SI=2000H,( , ,(12000H)= )=318BH ,( )=
8086寻址方式和指令系统 第3章 8086寻址方式和指令系统
指令中也可以指定段跨越前缀来取得其他段中的 数据。 数据。 ,(BX) 【例】寄存器和存储器内容分别为:( )=0,( ) 寄存器和存储器内容分别为:(AX) ,( :( =0030H,( )=2000H,( ,(DS) ,(20030H)=50A0H,( ) ) ,(ES) ,( ,( ,( =1000H,( ,(10030H)=2059H ,( ) 执行指令:MOV AX ,ES:[BX] ES: 执行指令: 执行后: AX) 执行后:(AX)=? 物理地址=16d 物理地址=16d×(ES)+(BX) ES) BX) =16d ×1000H+0030H=10030H 执行结果为: 执行结果为: (AX)=2059H AX)
26H
执行: 执行:26H→AL 执行后: 执行后:(AL)=26H )
8086寻址方式和指令系统 第3章 8086寻址方式和指令系统
【例3.2】MOV AX, 2A50H 】 , 执行后( ) ? 执行后(AX)=? 该例中源操作数为立即寻址方式, 立即数为2A50H, 存 该例中源操作数为立即寻址方式 , 立即数为 , 放在指令的下两个单元。 放在指令的下两个单元。 图形表示: 图形表示:
8086寻址方式和指令系统 第3章 8086寻址方式和指令系统
CPU结构 8086 CPU结构
8086寻址方式和指令系统 第3章 8086寻址方式和指令系统

第3章 8086指令系统-1寻址方式

第3章 8086指令系统-1寻址方式

第章指令系统第3章8086指令系统1RAM硬盘ROM2机器码助记符说明AL10110000 00000111MOV AL,07H 把立即数07H 送累加器AL07H 00000100ADD AL,0AH 累加器AL 中的内容与立即数0AH 相加,结果在11H 00001010AL 中10100010MOV [07H],AL 把AL 中的内容存入[07H]11H00000111[],地址单元3第3章8086 指令系统机器语言是机器指令的集合。

机器指令就是一台机器可以机器指令就是台机器可以正确执行的命令,电子计算机的机器指令是一列二进制C 语言数字,计算机将之转变为一列高低电平,以使计算机的电子器件受到驱动进行计Java 语言C++语言电子器件受到驱动,进行计算。

汇编语言机器语言汇编语言的主体是汇编指令,汇编指令和机器Basic 语言Pascal 语言指令的差别在于指令的表示方法上,汇编指令是机器指令便于记忆的书写格式。

4操作:(AX)(BX)•(AX)=(BX)•机器指令:1000100111011000•汇编指令:Mov AX,BX汇编指令,5编译器MOV AX,BX…………编令程序员汇编指令1000100111011000…………机器码6计算机•3.1 基本数据类型•3.2 8086指令格式•3.3 8086指令的操作数寻址方式•3.4 8086通用指令7000AH 0009H 0008H 1/0Bit0007H 0006H 0005H 0004HByte0003H 0002H Word0001H0000H8•整型(int )C 语言变量基本类型•字符型(char)•浮点型(float)d bl 指针类型•双精度浮点型(double )•无值型(void )数据类型•数组类型构造类型•结构类型•共用类型枚举型9•字符型:以11ASCII字符以个字节存放个码字符;•整型:以2到4个字节存放1个定点数,通常在PC机上位2个字节;•浮点型:以4个字节存放1个浮点数;•双精度浮点型:以8个字节存放1个浮点数。

微机原理第三章 8086指令系统-01

微机原理第三章  8086指令系统-01

存储器寻址规定使用的寄存器与段约定
间接寻址寄存器 BP BX,SI,DI 基址寻址寄存器 变址寄存器 BP BX 约定访问 的逻辑段 堆栈段 数据段
SI,DI
I/O端口寻址方式。I/O端口寻址有以下两种寻址方式: ① 端口直接寻址方式。对这种寻址方式,端口地址用8位立即 接口 数(0~255)表示。 00H 例如:IN AL,21H
第三章 8086指令系统
3.1 基本数据类型
3.1.1
基本数据类型
高字节
15
7
0
字节
低字节
87
0

31
16 15
0
高字
低字
双字
63
32 31
0
高双字
低双字
四字
127
64 63
0
高四字
低四字
双四字
在内存中存放的顺序
12H 7AH FEH 06H 36H
0FH 0EH 0DH 0CH 0BH 0AH
二、寄存器操作数寻址
操作数包含在CPU的内部寄存器中。
源和目的操作数能在以下寄存器中,取决于正 在执行的指令: (1) 16位通用寄存器(AX、BX、CX、DX、SI、DI、 SP 或BP); (2) 8位通用寄存器(AH、BH、CH、DH、AL、 BL、CL 或DL); (3) 段寄存器(CS、DS、SS、ES);
MOV AX, BX 执行前 (AX) = ? (BX) = 1234H 执行后 (AX) = 1234H (BX) = 1234H
寄存器寻址示意图
AH
0 0 1 0 1 1 0 0
寄存器(源操作数 )
BL
? ? ? ? ? ? ? ?

第3章8086指令系统(上)

第3章8086指令系统(上)
36

【例3-6】
已知:(DS)=3000H,(BX)=1000H, COUNT=2000H,(33000H)=13H, (33001H)=24H,执行指令: MOV AX, COUNT[BX] 操作数的物理地址为: (DS)×16+(BX)+COUNT =3000H×16+1000H+2000H =33000H 指令执行后,(AX)=2413H。
若有效地址用SI、DI和BX等之一来指定,则 其缺省的段寄存器为DS; 若有效地址用BP来指定,则其缺省的段寄存 器为SS(即:堆栈段)。
该寻址方式物理地址的计算方法如下: BX 物理地址PA=16×DS + SI DI 或 物理地址PA=16×SS+ BP
33
【例3.4】假设有指令:MOV BX, [DI],在执行时, (DS)=1000H,(DI)=2345H,存储单元12345H 的内容是4354H。问执行指令后,BX的值是什么?
8



我们把一条指令中所包含的二进制代码 的位数称为指令字长,它通常是机器字 长的一倍、两倍、多倍或半倍。 另外,即使对于同一条指令,由于其操 作数寻址方式的不同,其长度也是变化 的,这样的指令被称为不定长指令。 反之,如果某些指令长度始终不变,我 们则称其为定长指令。
9
操作码:由CPU设计人员定义。每一种操作 唯一对应一个操作码。说明计算机要执行哪 种操作,如传送、运算、移位、跳转等操作 例:加法操作助记符ADD; 数据传送操作助记符MOV; 比较操作助记符CMP 操作数:可由编程人员采用不同方式给出。
源操作数:后者(BL) 目的操作数:前者(AL)
11
操作数
2、操作数存放地点,可以有以下几种:

第3章 指令系统第1讲

第3章 指令系统第1讲

[DS*10H+2000H+1]送AH;
MOV AL, ES:[2000H];这里ES是段跨越前缀,所以源
操作数是在ES*10H+2000H的内存单元中。
MOV [3000H], AL;目的操作数采用直接寻址,将AL送 [DS*10H+3000H]的内存单元。
注意:1、 MOV [3000H],[2000H]
MOV AX, [BX]
偏移地址EA计算方法如下:
EA=
[SI] [DI] [BX] [BP]
SI作间址寄存器 DI作间址寄存器 BX作间址寄存器 BP作间址寄存器
MOV MOV MOV MOV
AX,[SI] AX,[DI] AX,[BX] AX,[BP]
【例3.4】寄存器内容为:(AX)=0,(BP) =0030H,(DS)=3000H,(SS)=2000H ,存储 器内容见右图:
寄存器相对寻址方式
① MOV AL, 5[BX] ② MOV AL, [BX+5] ③ COUNT EQU 5 MOV AL, COUNT[BX] 以上三个例子是等价的,它执行的操作是: (DS*10H+BX+5)送AL 这里,5称为位移量,它可以是8位或16位的二进制数。
偏移地址EA计算方法如下:
引言:计算机的编程结构
寄存器组
R1 R2 R3 R4 IP
指令 指针 寄存器
地 址 寄 存 器
地址总线 AB
、、、
程 序
地 址
指令1
指令2 指令3 指令4 、、、 、、、 数据1 数据2 数据3 、、、
运 算 器
数据暂存器 指令寄存器 指令译码器
数据总线 DB

第3章8086的寻址方式和指令系统(1)-USTC

第3章8086的寻址方式和指令系统(1)-USTC

2015年3月16日星期一8时2分37秒
7
二、8086的操作数
分为3类:
1、立即数(常数)
取值范围如下表:
类型
8位
16位
无符号数 00H-FFH(0-255) 0000H-FFFFH(0-65535)
有符号数 80H-7FH(-128~127) 8000H-7FFFH(-32768~32767)
立即数只能用作源操作数,如
第3章 8086的寻址方式和指令系统
(1)
2015年3月16日星期一8时2分37秒
1
主要内容
指令系统的一般概念 指令操作方式
操作码的含义 指令对操作数的要求 指令执行的结果 寻址方式 指令说明
2015年3月16日星期一8时2分37秒
2
3.1 8086的寻址方式
两种不同的类型: 一类是程序地址(在代码段中)的寻址方式; 另一类是操作数地址的寻址方式。
MOV AX,0FA00H
;正确
MOV 0A000H,DX
;错误
2015年3月16日星期一8时2分37秒
8
2、寄存器操作数
放在8个通用寄存器或4个段寄存器中的操作数
16位
AX
AH
AL
16位
BX
BH
BL
16位
CX
CH
CL
16位
DX
DH
DL
2015年3月16日星期一8时2分37秒
9
SI
DI
只能存放字操作数
28
指令操作例:MOV AX, [BX][SI]
;假定:(DS)=8000H, (BX)=2000H, SI=1000H
;则物理地址 = 80000H + 2000H + 1000H = 83000H
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第3章 8086微处理器的指令系统(1)3.1 指令系统概述● 指令系统是一台计算机所能(识别和执行)的全部指令的集合。

它与(微处理器)有着密切的关系,不同的微处理器有不同的指令系统。

8086CPU 包含133条指令● 指令是使计算机执行某种(特定操作)的二进制编码。

指令一般包括两个部分:(操作码域)和(地址域)。

填空操作码域:存放指令的操作码,即指明该指令应由计算机完成何种操作。

地址域:确定操作数的值或地址、操作结果的地址,有的指令的地址域还指出下一条指令的地址。

● 机器指令:计算机能(直接识别)的二进制代码。

● 汇编语言:汇编语言是一种符号语言,用助记符表示操作码,用符号或符号地址表示操作数或操作数地址,它与机器指令是一一对应的● 汇编程序:将汇编语言源程序翻译成机器语言(就是一条一条的机器指令),即目标程序。

3.2寻址方式● 根据(指令内容)确定(操作数地址)的过程,称为寻址。

● 根据寻址方式计算所得到的地址叫做(有效地址EA ),也就是(段内偏移地址)。

有效地址还需要与相应的(段基地址)组合才是20位的(物理地址PA) ,该工作由微处理器来完成。

牢记什么是EA ?什么是PA ?怎么计算?后面有关于EA 和PA 的解释及计算方法!● 寻址方式在两种方式下被涉及:(操作数)的寻址方式和(指令)的寻址方式。

如果没有特别说明,寻址方式是指源操作数的寻址方式。

1、隐含寻址(隐含了规定的操作数)例:DAA 指令,只有操作码,无操作数。

规定对AL 中的内容进行压缩BCD 码转换。

2、立即寻址(操作数(立即数)直接放在指令中,不需访问存储器)例:MOV AX ,1234H (若CS=1000H ,IP=100H )3、寄存器寻址(操作数就放在内部寄存器中,不需访问存储器)例:INC CX ;(CX)←(CX)+1 MOV AX ,BX ;执行后BX 内容不变 4、直接寻址(指令中直接给出操作数的存放地址) 例1:MOV AX ,[4000H] (DS =3000H )☞操作数寻址 可以进行寄存器寻址的寄存器: (16位)AX 、BX 、CX 、DX 、SI 、DI 、SP 、BP(8位) AH 、AL 、BH 、BL 、CH 、CL 、DH 、DL例2:MOV ES:[1234H],BL (ES =4000H )注意:(1)指令中给出的[4000H]和[1234H]是操作数的偏移地址。

(2)指令前缀指出段寄存器(例2)。

(3)没有指出段寄存器,则默认的段寄存器为DS (例1)。

5、寄存器间接寻址(内存单元的逻辑偏移地址由寄存器间接给出,只能使用BX 、BP 、SI 、DI )例: MOV AX ,[BX ] (若DS =2000H ,BX=1000H)例:若DS=0F3EH ,SI=2000H ,COUNT=0A8H ,指令MOV AX ,(SI+COUNT)中,源操作数的有效地址EA 为________,其物理地址PA 为________。

答案:EA=SI+COUNT =2000H+0A8H=20A8HPA=DS*10H + EA = 0F3EH*10H + 20A8H = 0F3E0H+20A8H=11488HMOV AX ,COUNT[SI]MOV AX ,[SI]COUNT 总结:这三种形式,功能是相同的!MOV AX ,[SI+COUNT]6、基址寻址和基址相对寻址(操作数地址在基址寄存器BX,BP 中称为基址寻址;若还有位移量,则称为基址相对寻址)使用BX ,默认的段寄存器是DS【例1】 MOV CX ,36H[BX ]有效地址EA=36H+(BX ) 物理地址PA =(DS )×10H + EA【例2】 MOV -20[BP ],AL ;小心了!-20是十进制,其十六进制塔式是-14H有效地址EA=(BP )-14H 物理地址PA =(SS )×10H+EA而BP ,SP 的默认段寄存器为SS选择题:指令MOV AX,[BX+SI]中源操作数的段地址在 B 中A.CSB.DSC.ESD.SS课件中,例3.11是不对的!例3.11 MOV AX,[BX+disp]因使用BX,默认段寄存器是DS 。

EA=BX+disp PA=DS ×10H+ EA7、变址寻址和变址相对寻址(操作数地址在变址寄存器SI 、DI 中称为变址寻址;若还有位移量,则称为变址相对寻址)例3.13 MOV AH,[SI +disp] EA=(SI)或(DI)+disp PA= ×10H+ EA重要:逻辑段地址使用隐式用法,即(1)DS 与BX 、SI 、DI 组成物理地址;(2)SS 与BP 、SP 组成物理地址。

IP 只能在代码段中(CS)寻址,SP 只能在堆栈段(SS)中寻址。

另外,AX 、CX 、DX 一般不能在寄存器间接寻址中使用。

DS8、基址变址寻址和基址变址相对寻址有效地址EA =(BX )或(BP )中的基址地址+(SI )或(DI )中的变址地址+disp例3.14 MOV AX,[BP+DI]EA =SS*10H + BP + DI ;此时隐含的段寄存器为SSMOV AX,[BX+DI]EA =DS*10H + BX + DI ;则隐含的段寄存器为DS例3.10 MOV AX,[BX若(DS )=2100H,(BX)=0158H,(DI)=0002H,(2115AH )=1234H则 EA= BX+DI =0158H+0002H=015AHPA=EA+21000H=2115AH指令执行后,(AX)=1234H例3.11:MOV AX,[MASK+BX +SI] 若(DS )=3000H,(BX)=2000H, (SI)=1000H, MASK=0250H(33250H)=34H,(33251H)=12H则 EA= MASK+BX+SI = 0250H +2000H+1000H=3250HPA= DS*10H + EA=30000H + 3250H = 33250H执行该指令后(AX)=1234H9、I/O 端口寻址8086采用I/O 端口与存储器独立编址的方式(第2章的内容)。

8086用20位地址线中的低16位来管理64KB 的I/O 端口空间,I/O 端口的地址空间为0000H ~FFFFH (因为64K )。

访问I/O 端口需要专门指令IN 和OUT,通过AX/AL 来完成。

(1)直接寻址指令直接给出I/O 端口地址,此地址应在0-255(0-FFH)之间( 例如:IN AL,20H ;从端口地址20H 读入一个字节(2)间接寻址,寄存器只能用DX由DX 给出I/O 端口地址,此方式适用端口地址为0-65535(0-FFFFH)之间的任意值。

(范围任意) 例如:MOV DX , 3E4HOUT DX , ALIN 指令中目的操作数可为AL 或AX ;OUT 指令中源操作数可为AL 或AX(1)BX 基地址寄存器、SI 源变址寄存器、DI 目的变址寄存器与DS 数据段寄存器组成物理地址 (2)BP(基指针寄存器)、SP(堆栈指针寄存器)与SS(堆栈段寄存器)组成物理地址。

(3)IP 只能在代码段中(CS )寻址 (4)SP 只能在堆栈段(SS )中寻址。

(5)AX 、CX 、DX 一般不能在寄存器间接寻址中使用。

例:分别指出下列指令中的源操作数和目的操作数的寻址方式(1)MOV BX, [DI](2)MOV DX, 100(3)MOV [DI] , AL(4)MOV [BX+SI] , CX(5)MOV DX , [SI+106H](6)MOV AX , CX(7)AND DS:[BP] , AX(8)AND AX , DX带目的操作数源操作数(1)寄存器BX寄存器间接[DI](2)寄存器DX立即100(3)寄存器间接[DI]寄存器AL(4)基址+变址[BX+SI]寄存器CX(5)寄存器DX变址[SI+106H](6)寄存器AX寄存器CX(7)段超越的寄存器间接DS:[BP]寄存器AX (8)寄存器AX寄存器DX● 存储器操作数的物理地址PA 的计算:是将段基地址左移四位加上有效地址EA(偏移地址)得到的。

● 但是段寄存器和有效地址的配对是有规定的。

执行速度:寄存器操作数 > 立即数操作数>上面涉及的是操作数的寻址下面涉及的是指令寻址● 同样的指令(如MOV)由于寻址方式和操作数的不同,机器码的长度也不同。

段间。

寻址方式:1. 立即寻址 MOV AX , 1234H ;1234H 是立即数2. 寄存器寻址 MOV AX , BX ;BX 是寄存器3. 直接寻址 MOV AX , [1234H] ;[1234H]是直接地址4. 寄存器间接寻址 MOV AX , [BX] ;[BX]是间接地址5. 基址寻址 MOV AX , [BX+100H] ;BX 是基址寄存器6. 变址寻址 MOV AX , [SI+100H] ;SI 是变址寄存器7. 基址加变址寻址 MOV AX , [BX+SI+100H] ;BX+SI 基+变寄存器2 、直接、间接、立即这3 种寻址方式指令的执行速度有快到慢的排序是(C)A .直接、立即、间接B .直接、间接、立即C .立即、直接、间接D .立即、间接、直接3 、指令系统中采用不同寻址方式的目的是(B)A .实现存储程序和程序控制B .缩短指令长度,扩大寻址空间,提高编程灵活性C .可以直接访问外存D .提高扩展操作码的可能并降低指令译码难度4 、变址寻址方式中,操作数的有效地址等于(C)例:MOV AX,[SI+100H]A .基址寄存器内容加上偏移量B .堆栈指示器内容加上偏移量C .变址寄存器内容加上偏移量D .程序计数器内容加上偏移量5 、计算机指令中一般包含哪些字段?分别是什么含义?答:计算机指令中一般包含地址码和操作码两部分,地址码表示指令的操作对象,指出操作数的地址,操作码表示操作的性能及功能。

6.设BX=2000H,SI=3000H,指令MOV AX,[BX+SI+8H]的源操作有效地址为()。

A.5000H B.5008H C.23008H D.32008H注:有效地址EA就是方括号中表达式的值。

EA=BX+SI+8H=2000H+3000H+8H=5008H7.设DS=1000H,ES=2000H,BX=3000H,指令ADD AL,[BX]的源操作数的物理地址为()。

A.13000H B.23000H C.33000H D. 3000H注:这是一个骗人的题!ES=2000H是蒙人的!源操作数[BX],是寄存器间接寻址,BX与段地址DS默认组合。

相关文档
最新文档