第三章 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指令系统
寻址方式 段寄存器 有效地址
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能存放的数的
第三章 8086指令系统及汇编语言
例:已知:(DS)=2100H,(DI)=2000H 指令:MOV AX,[DI];(AX) ((DI)) 物理地址=(DS)×16 +(DI)
=2100H ×16 + 2000H =21000H+2000H =23000H 指令结果:将23000H单元内容送AL中,
将23001H单元内容送AH中。 指令:MOV AX,[DI] 为字操作(16位操作)
32000
AH AL
注意:程序(指令) 在代码段,要操作 的数据在堆栈段!
图3-4(B) 寄存器间接寻址
5、 寄存器相对寻址方式
例:MOV AX,[SI];SI中的内容为要取数的偏移 地址,假设在执行本条指令前SI=1000H,DS=2000H
其过程如图3-4(a)所示。
代码段
..
注意:程序(指令在 代码段),要操作的 数据在数据段!
操作码 数据段
DS 2000 + SI 1000
21000
.. .. ..
21000H X X 21001H Y Y
例:已知:(DS)=2100H,(DI)=2000H 指令: MOV AL,[DI] ;(AL) ((DI))
物理地址=(DS)×16+(DI) =2100H×16+2000H =21000H+2000H =23000H
指令结果:将23000H单元内容送AL中, 指令: MOV AL,[DI];字节操作(8位操作)
数据段
字寻址方式
AH=F5 AL=8A 字寻址方式
图3-3 直接寻址
3、寄存器寻址方式 格式:操作码 寄存器,寄存器
MOV AX, BX
;AX←BX
操作数存放在CPU的内部寄存器reg中 1)8 位寄存器r8: AH、AL、BH、BL、CH、CL、DH、DL 2)16 位寄存器r16: AX、BX、CX、DX、SI、DI、BP、SP 3)4个段寄存器seg: CS、DS、SS、ES
汇编教程 第三章 8086的指令系统
xxH
55H
SS:[SP]
xxH
55H AAH
55AAH BX
SS:[SP]
AAH
指令执行前
指令执行后
16
使用堆栈指令注意: 使用堆栈指令注意:
AL”等 ①堆栈操作是字操作指令,不要写出“PUSH AL 等。 堆栈操作是字操作指令,不要写出“ 指令中, CS”为非法指令 为非法指令。 ②在“POP”指令中,“POP CS 为非法指令。 POP 指令中 PUSH AX 堆栈中的数据弹出后,数据并没有在堆栈中消失, ③堆栈中的数据弹出后,数据并没有在堆栈中消失, PUSH BX PUSH DS 除非压入新数据,画图时注意。 除非压入新数据,画图时注意。 .. 堆栈操作指令不影响标志。 ④堆栈操作指令不影响标志。 .. .. 使用堆栈指令保护和恢复现场时, ⑤使用堆栈指令保护和恢复现场时,要注意指令的 POP DS POP BX 排列顺序, 排列顺序,如: POP AX
3.3节 3.3节 目录
17
三、 标志传送指令 AH←标志寄存器低 标志寄存器低8 ① LAHF ;AH←标志寄存器低8位,即SF/ZF/AF PF/CF送AH相应位 不影响标志。 相应位, PF/CF送AH相应位,不影响标志。 标志寄存器低8 AH, ② SAHF ;标志寄存器低8位← AH,该条指令影 响前五个标志。 响前五个标志。 标志寄存器入栈,不影响标志。 ③ PUSHF ;标志寄存器入栈,不影响标志。 标志寄存器←SS:[SP],SP←SP+2; ④ POPF ;标志寄存器←SS:[SP],SP←SP+2; 该指令影响标志。 该指令影响标志。
8
CS可以作源操作数 可以作源操作数
格式4 格式4:MOV reg/mem,seg MOV AX,DS / MOV BX,ES / MOV AX,CS , MOV [SI],DS / MOV [BX+SI],CS MOV [BX],[2050H] …………………………………………………………… “MOV 类指令小结: MOV”类指令小结 MOV 类指令小结: 立即数只能作源操作数,且要与目的操作数匹配。 ①立即数只能作源操作数,且要与目的操作数匹配。 两个操作数类型要匹配。 ②两个操作数类型要匹配。 如汇编程序无法确定操作类型,要加类型说明符。 ③如汇编程序无法确定操作类型,要加类型说明符。 CS一般不能作目的操作数 用转移指令改变)。 一般不能作目的操作数( ④CS一般不能作目的操作数(用转移指令改变)。 如果指令有两个操作数,不允许两个都是存储器数。 ⑤如果指令有两个操作数,不允许两个都是存储器数。 上述四类格式以外的指令必定是非法指令。 ⑥上述四类格式以外的指令必定是非法指令。 所有“MOV”类指令均不影响标志 类指令均不影响标志。 ⑦所有“MOV 类指令均不影响标志。
第三章 8086的指令系统
机器指令 B0 56 04 78 CB
操作码 操作数
计算机执行的指令是机器指令,是一串二进制代码。 MOV、ADD 是机器指令操作码 B0、04 的助记词。
2. 8086的机器指令格式
B1 OP D W MOD B2 B3 REG R/M B4 B5 B6
操作码 (6)
方 0-字节 寻址 向 1-字操作 方式
立即数→通用寄存器、内存单元
立即数→通用寄存器 MOV AX,2356H; MOV BH,33H; 立即数→内存单元 MOV [BX+SI],0F080H; MOV BYTE PTR [BX],12H; 源操作数、目的操作数的类型要匹配。 源操作数是单字节,目的操作数是间址、变址、基址+ 变址的内存操作数,后者必须用PTR说明是字节型。
三. 标志寄存器
1. 格式 2. 含义
1. 格式
记录当前指令执行后的特征信息,16位数据用9位
D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0 O D I T S Z A P C
溢出
8位无符号数相加大于255,有符号数相加大于127或小于 -128 16位无符号数相加大于65535,有符号数相加大于32767 或者 小于-32768; 判断 操作数是有符号数,运算后O标志为1表示溢出。
寄存 器号
寻址 方式
① ② ③ ④ ⑤ ⑥
8086 指令是 1~6字节的变字节指令格式。 指令的长度:最少一个字节,最多六个字节。 B1、B2为基本字节,B3-B6 根据指令取舍。 B1字节-称作操作码字节,必不可少的。 B2-操作数寻址方式。一条指令最多可用两个操作数。 B3~B6- 一般为存储器操作地址位移量或立即操作数。
第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位物理地址 位物理地址; ② 执行总线周期存取操作数。 执行总线周期存取操作数。
第3章 8086的指令系统
第三章8086的寻址方式和指令系统基本内容:8086寻址方式的概念,7种寻址方式的操作过程,8086的指令系统的构成及六大类基本指令。
基本要求:掌握8086的7种寻址方式,掌握8086指令系统的汇编格式,掌握每一个指令的功能用法。
重点内容:8086的7种寻址方式,传送指令、算术运算指令、逻辑指令、控制转移指令。
难点:立即寻址与直接寻址,寄存器寻址与寄存器间接寻址的区别,相对寻址的寄存器搭配使用,算术指令中寄存器的使用及结存放移位指令的使用,控制转移指令的操作过程。
第一节8086的寻址方式计算机中的汇编指令由操作码字段和操作数字段组成,操作码字段指示CPU执行哪一种操作,如传送、运算等;操作数为参与操作的数据,如寄存器中的数据或内存单元中的数据等。
(如加法指令须指明两个被加数)操作数字段可以直接给出操作数本身或者指明操作数的存放地址,如是在寄存器中存放须指出寄存器名称,若是在存储器中存放,须给出此操作数在存储器中的地址。
8086中对操作数的寻址方式可分为下列7种寻址方式。
一、立即数寻址方式特征:操作数由指令直接给出,紧跟于操作码之后,做为指令的一部分。
注意:1、立即数可做源操作数,不能是目的操作数;2、立即数只能是8位或16位的整数,不能是小数,且与目的操作数格式要一致;例:MOV BX,107DHMOV AL,90H不能写为MOV90H,AL操作数的立即数可以是16进制,十进制或二进制,但必须注明。
例:MOV BL,90(D)――十进制后缀可不写,系统默认。
MOV AL,10010000B特点:不启动总线周期,速度快。
二、寄存器寻址特征:操作数存放于寄存器中,指令中用寄存器名指出。
16位操作数---------AX,BX,CX,DX,SI,DI,SP,BP等。
8位操作数---------AL,BL,CL,DL,AH,BH,CH,DH特点:不访问存储器,速度快。
例:MOV AX,BX 执行前(AX)=OFC56H (BH)=0100H执行后(AX)=0100H (BH)=0100H不变INC DL 执行前(DL)=02H 执行后(DL)=03H注:寄存器寻址时,寄存器可以是源操作数,也可以目的操作数。
03第三章8086指令系统
IN AX, DX;从(DX)为地址的端口读入16位 数据。
解释:
1)CPU对各个外部设备接口也采用地址编码。 8086CPU连接外部设备的地址可以是8位或16位。
20位
8位或16位 地址总线 AB
I/O 接 口
CPU
存 储 器
I/O 接 口
输 入 设 备
输 出 设 备
数据总线 DB
控制总线 CB
弹出 断点1
...
断点信息:程序断点地址、标志寄存器及其它能被子程序 使用和改变的寄存器。
• 堆栈用途
1. 存放寄存器或存储器中暂时不使用的数据, 在使用这些数据时可方便地将其弹出;
2. 调用子程序或发生中断时要保护断点信息 (入栈),子程序或中断返回时恢复断点 信息(出栈)。
• 应注意的问题 i. 堆栈操作都按字操作;
3-2 8086指令系统 • 可以分为以下六类: 数据传送指令 算术运算指令 逻辑运算和移位指令 串操作指令 转移指令 处理器控制指令
3.2.1 数据传送类指令
包括:
通用传送指令;累加器专用传送指令; 地址传送指令;标志传送指令; 1、通用传送指令 1)基本传送指令(MOV) 指令格式:MOV DST,SRC; 源操作数和目的操作数可用上述6种寻址方式 的任何一种。 操作:将SRC内容赋给DST。 所有通用传送指令都不影响标志位。
8086 提供三条:
• LEA
• LDS
• LES
1)LEA (Load Effective Address) 格式: LEA reg16 , mem Reg16 — 16位通用寄存器; mem — 存储单元; 功能:将源操作数的偏移地址传送到目的操作 数; 注意:源操作数必须以寄存器间接寻址、变址 寻址、基址加变址寻址等方式表示的存储器操 作数;目的操作数为一个16位的通用寄存器。
第3章_8086指令系统
EA =
(BX) (BP)
+
(SI)
(DI)
同一组内的寄存器不能同时出现。
寻址的寄存器为BX时,默认的段寄存器为DS ; 寻址的寄存器为 BP时,默认的段寄存器为SS 。 例: MOV AX, [BX] [SI] MOV AX, [BX+SI] MOV AX, DS: [BP] [DI] 错误例: × MOV AX, [BX] [BP] × MOV AX, [DI] [SI]
立即数只能作为源操作数
MOV AX,0FA00H MOV 8000H,DX ;正确 ;错误
• 2、寄存器操作数
存放在8个通用寄存器或4个段寄存器中的操作数
AX BX CX DX
AH BH CH DH
AL BL CL DL
可以存放8位或 16位操作数
SI DI BP SP
只能存放16位操作数
CS
DS ES SS
61200
AX AH AL
61200H
44H 33H
数 据 段
寄存器相对寻址
EA=间址寄存器的内容加上一个8/16位的位移量
(BX)
EA =
(BP) (SI) (DI)
+
8位
16位
位移量
寻址的寄存器为BX、SI、DI,默认的段寄存器为DS ;
寻址的寄存器为 BP时,默认的段寄存器为SS 。
例: MOV AX, [BX+8] MOV CX, TABLE[SI] MOV AX, [BP+16H] ;
数 据 段
基址-变址-相对寻址
在基址-变址寻址的基础上再加上一个相对位移量 注意事项同基址-变址寻址
第03章8086的指令系统.
MOV BX,2000H
立即
寄存器
MOV DX,DASS[BX]
基址
寄存器
MOV [DI],BX
寄存器 寄存器间址或变址
SUB AX,[BX][SI]
基址+变址 寄存器
ADD AX,[DI+64H] MOV AX,[BP+10]
变址 基址
寄存器 寄存器
MOV AX,ES:[BX]
带段超越寄存器 寄存器
基址、AL变址的寻址方式,表的起 始地址的偏移量应事先装入BX寄存 器, AL中存放查找对象在表中地址 与表起始地址相差的字节数。
例:以下指令序列把S_TAB表的第10个字节送入AL。
MOV AL,9
;9 AL
MOV BX,OFFSET S_TAB;表首址 BX
XLAT
;[BX+AL] AL
3. 目标地址传送指令
段地址规定为DS段寄 存器的内容。
变址寻址方式常用于 存取表格或一维数组中的 元素。
AX的内容为40000H+2000H+0010H=42010H和42011H单元的
内容,⑺前一基个在址低+8位变,后址一寻个在址高方8位式。
课堂练习: 假设DS=4000H,CS=0000H,SS=2000H, ES=1000H,SI=0010H,DI=0100H,BX=0200H, COUNT=2000H,问下列指令执行后,寄存器AX、 AH的内容如何? MOV AX,COUNT[SI] MOV AH,[BX+DI+1234H]
(1)输入指令IN 格式:IN 累加器,端口 例:IN AL,21H;将端口21H的8位数读到AL中
MOV DX,201H IN AX,DX ;将端口201H和202H的16位数
第3章 8086指令系统
例如:MOV AX , [BX]
默认情况下,数据在DS段或SS段中,由间址寄存器决定; 物理地址PA = (DS) × 16 + (BX/SI/DI)
2017年3月13日星期一
;DS段 ;SS段
19
物理地址PA = (SS) × 16 + (BP)
寄存器间接寻址方式执行示意
地址加法器
该指令源操作数的寻址方式为寄存器相对寻址方式;
有效地址EA=(SI) + 100H =2445H,默认为DS段; 物理地址PA = (DS) × 16 + EA = 1000H ×16 + 2445H = 12445H
……
所以,该指令执行后 (BX) = (12445H) =2715H 12445H 15H
2017年3月13日星期一 5
3、示例指令
数据传送指令
MOV <目的操作数>,<源操作数> 指令功能 使用源操数的值为目的操作数赋值; 指令执行完,目的操作数的值与源操作数一样;
源操作数不变,目的操作数改变;
例如: MOV AX , 2 MOV AX , BX MOV AX , [BX]
∑ PA 20位
AH AL 1200H BH BL CH CL DH DL SP BP SI DI
通用寄存器 CS DS DS SS ES IP 内部暂存器 16位 输入/输出 控制电路 外 部 总 线
主存储器
1234H
16位
……
ALU
执行部 分控制 电路
12 3 4 5 8位 6 指令队列缓冲器
MOV AX , [BX]
第3章 8086指令系统
第三章8086指令系统
DI
例: MOV AX, COUNT[SI] 或 MOV AX, [COUNT+SI] 假设DS=3000H, SI=2000H, COUNT=3000H 那么 PA = 35000H 指令功能:将35000H开始的两个单元内容送AX
(4)基址变址寻址
BX
有效地址EA
=
BP
SI
+
DI
MOV AX, [BX+SI] ;AX←DS:[BX+SI]
MOV BYTE PTR[SI],50H
MOV BYTE PTR[SI+6],51H
法2:
MOV AX,2000H
MOV DS,AX
MOV BL,50H
MOV BH,51H
MOV DS: [1000H],BL
MOV DS: [1006H],BH
例:交换BUF1和BUF2两单元的内容。
MOV MOV
寄存器间接寻址
寄存器 相对寻址
PA=DS×16+BX或SI或DI
MOV AX, [BX]
仅允许 PA=SS ×16+BP
PA=DS×16+BX或SI或DI+位移量
; (AX)←((DS)×16+(BX)) MOV AL, MESS[SI]
PA=SS×16+BP+位移量
;AL←(DS×16+SI+OFFS ET MESS)
§3-2 数据传送类指令
• 通用数据传送指令 • 地址传送指令 • 标志寄存器传送指令
一、通用数据传送指令
提供方便灵活的通用传送操作
有4种指令
MOV
PUSH POP
XCHG
第三章 8086指令系统
⑵寄存器间接寻址 操作数的有效地址由基址寄存器BX、BP或变址寄存器 操作数的有效地址由基址寄存器BX、BP或变址寄存器 SI、DI提供。 SI、DI提供 提供。 BX BP SI BP
EA=
例如: 例如:设DS=2000H, AX=7850H ,BX=1000H MOV AX,[BX]; , ;
3.1 8086寻址方式 寻址方式
一条指令的机器码通常包含操作码(OP)和操作 一条指令的机器码通常包含操作码(OP) 数两部分。指令的格式如下: 数两部分。指令的格式如下: 操作码OP 操作码OP CODE 操作数Operand 操作数Operand
例如,MOV AL,03H; 例如, , ; SOPD 源操作数 目的操作数 DOPD 操作码 •操作码表示指令执行什么操作(必有) 操作码表示指令执行什么操作(必有) •操作数表示参加操作的数或数的存放地址
寻找操作数存放地址的方式称为寻址方式 寻找操作数存放地址的方式称为寻址方式 8086的寻址方式分为两类: 8086的寻址方式分为两类: 的寻址方式分为两类 •数据寻址方式
√本节
•转移地址寻址方式
3.1.1 立即寻址 该寻址方式中,指令直接给出 位或16位的操作数 直接给出8 该寻址方式中,指令直接给出8位或16位的操作数 立即数)。该数紧跟在操作码之后, )。该数紧跟在操作码之后 (立即数)。该数紧跟在操作码之后,作为指令的操 作数字段存放在指令代码中 如果是16位立即数, 如果是16位立即数,那么低位字节数存放在低地址 位立即数 单元中,高位字节数存放在高地址单元中。 单元中,高位字节数存放在高地址单元中。机器码存 放形式如图
00H
操作: 操作:3000×10H × +EA= 2000H + 1000H + 0250H P 33250H 33251H 78H 56H 数据段
第三次课 8086的指令系统
第三章8086的指令系统3.1 8086指令系统概述所谓一个微处理器的指令系统是一个微处理器所执行的全部指令的集合。
在8086的指令系统中一共有133条指令。
8086指令系统是在8位微处理器8080/8085的指令系统基础上设计的,它兼容了8080/8085的全部指令,这部分对8位微处理器具有兼容性的指令往往是处理字节(8位)的。
此外,8086还有自己所特有的对字或字符串的处理指令,以及对带符号数的运算指令、中断指令和协处理器指令。
对微处理器的指令的描述,一般有两种表示方法:指令的机器码和汇编指令。
无论对于机器码指令还是对于汇编指令均要解决三个问题(三个信息)(1)指令要完成什么操作(操作码);(2)参加这个操作的操作数在哪里(操作数);(3)操作结果放在哪里(结果);为了简化指令,通常在微机系统中规定:操作结果要放在某一个操作数中。
如MOV AL,08H;ADD AX,BX;(源操作数,目标操作数)这样,就将指令所要提供的信息简化为了两部分:操作码、操作数。
指令的机器码就是用二进制码描述指令的操作码和操作数的一种方式,实际上在微机系统内部,指令就是以机器码的形式存在的。
所谓的汇编指令是用指令功能的英文缩写表示操作码,用数字和符号表示操作数的指令描述方法。
例如操作码操作数MOV AX,2000H操作码B8H操作数:00H20H由于汇编语言程序有便于理解、识别、阅读和交流的优点。
所以汇编指令得到了广泛的应用。
但由于最终在机器中使用的是机器码,所以要有一个中间环节就是对其进行翻译。
3.2 8086指令的寻址方式所谓寻址方式就是寻找操作数的方式,所以寻址方式实际上在两种情况下被涉及:一种是用来对操作数进行寻址;另一种是对转移地址和调用地址进行寻址。
下面我们所讨论的寻址方式都是针对操作数的,关于指令地址的寻址,将在讲述转移指令和调用指令时作具体说明。
一条指令的机器码通常包含操作码(OP)和操作数两部分。
第3章 8086指令系统
内存单元的地址(物理地址):
段基址 16 + 段内偏移量 EA
微 机 原 理 及 接 口 技 术 第 三 章
5. 指令包含的信息 做什么操作 操作数的来源 操作结果的存放位置
下一条指令的位置(跳转指令)
微 机 原 理 及 接 口 技 术 第 三 章
6. 寻址方式
寻找指令中操作数所在地址的方法。
3.2.2 寻址方式
1. 立即数寻址
操作数在指令中,紧跟在操作码的后面。 MOV AL,80H; AL 80H MOV AX,1090H; AX 1090H MOV AL,‘A’; AL 41H
AH AL
OP 90H 10H
码段
微 机 原 理 及 接 口 技 术 第 三 章
2. (存储器)直接寻址
首字符是字母或某些特殊字符,但“ ?‖ 不能单独作标识符; 有效长度为1-31个字符。
微 机 原 理 及 接 口 技 术 第 三 章
指令助记符:指令的符号名。
操作数:参加本指令运算的数据。
注释:指令功能的说明。
微 机 原 理 及 接 口 技 术 第 三 章
4. 有效地址EA(Effective Address)
8086CPU的堆栈在压栈时,由上往下生长(堆 栈指针减量修改)。
微 机 原 理 及 接 口 技 术 第 三 章
指令格式:PUSH src
POP
dst
功能:实现操作数与堆栈之间的数据传送。
注意:
① 堆栈操作均为字操作。
② CS可以入栈,但不能弹出一个数据到CS。 ③ 一般情况下,入栈和出栈指令应配对使用, 以保证堆栈数据不会紊乱。
(2)段超越前缀 MOV BX,ES: [3000H]; BX (ES: 3000H) 设ES = 5100H BH BL
第三章:8086指令系统
指令系统是微处理器( 指令系统是微处理器(CPU)所能执行的指令的集合,它与 )所能执行的指令的集合, 微处理器有密切的联系,不同的微处理器有不同的指令系统。 微处理器有密切的联系,不同的微处理器有不同的指令系统。在本章 中我们主要讲解INTEL公司生产的 公司生产的8086/8088CPU的寻址方式以及各 中我们主要讲解 公司生产的 的寻址方式以及各 种指令系统,并通过具体实例讲述了各条指令的功能和使用方法。 种指令系统,并通过具体实例讲述了各条指令的功能和使用方法。 通过本章的学习,读者应该掌握以下内容: 通过本章的学习,读者应该掌握以下内容:
• • • • • • • • • • • • • • •
偏移量= 例1:设BX=0158H, DI=10A5H, 偏移量=1B57H, : DS=2100H,并假设 为当前段寄存器。 为当前段寄存器。 ,并假设DS为当前段寄存器 :(1)直接寻址: 则:( )直接寻址: MOV AX, [1B57H] EA=1B57H;物理地址=21000H+1B57H=22B57H ;物理地址= (2)寄存器间接寻址:MOV AX, [BX] )寄存器间接寻址: EA=0158H; 物理地址=21000H+0158H=21158H 物理地址= = (3)基址寻址:MOV AX, [BX+1B57H] 基址寻址: 基址寻址 EA=BX+1B57H=0158H+1B57H=1CAFH; ; 物理地址= 物理地址=21000H+1CAFH=22CAFH (4)变址寻址:MOV AX, [DI+1B57H] 变址寻址: 变址寻址 EA=DI+1B57H=10A5H+1B57H=2BFCH; ; 物理地址= 物理地址=21000H+2BFCH=23BFCH + (5)基址加变址寻址:MOV AX,[BX][DI+1B57H] 基址加变址寻址: 基址加变址寻址 EA=0158H+10A5H+1B57H=2D54H; ; 物理地址= 物理地址=21000H+2D54H=23D54H + =
第三章 8086指令系统
第三章8086指令系统
课时分配:10学时
二、寻址方式
寻址方式:主要是指获得操作数所在地址,也就是操作数的偏移地址(有效地值)。一般是指源操作数的地址。
在8086系统中,一般将寻址方式分为两种不同的类型,一类是寻找操作数的地址,另一类是寻找要执行的下一条指令的地址,即程序的地址。主要在程序转移或过程调用时用来寻找目的地址或入口地址。这将在调用指令CALL和程序转移指令JMP中详细介绍。
例:MOV AX,[BX+1024H]
操作数地址是:(DS)×16+(BX)+1024H
同样:当以SI、DI、BX寻址时,默认的段是DS;以BP寻址时,默认的段是SS。也可以用段前缀来指定其他的段寄存器,如:
MOV AX,DS:[BP+1024H]
6.基址―变址寻址
操作数在存储单元中,有效地址一个基址寄存器和一个变址寄存器之和,可表示为:
(1)MOVAX,0ABH(2)MOVAX,[100H]
(3)MOVBX,[SI](4)MOVCL,[BX+SI+200H]
(5)MOVAL,VAL[BX](6)MOVDI,[BP][SI]
2、判断下列指令是否有错,并说明原因( 5对)
(1) MOV [DI],[SI](2) MOV CS,AX
(3) MOV 128,CL(4) MOV AX,[SI][DI]
(1)指令特点:
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
错误例: MOV 2A00H, AX
;
26
微机原理及应用——第3章 指令系统
3.3.2 寄存器寻址
操作数在寄存器中。 MOV AH,BL MOV AX,BX MOV CX,AX
错误例: MOV AX, BL MOV ES: AX, DX
; 字长不同 ; 寄存器与段无关
27
微机原理及应用——第3章 指令系统
举例
Loading: MOV AX , BX
操作码 操作数 ADD AX,[SI+6] INC [BX] HLT
微机原理及应用——第3章 指令系统 17
3.2.2 8086 CPU指令格式
汇编指令:用助记符表示机器指令的操作码和操 作数,例如上面指令的汇编指令是 MOV AL,62H 机器指令:计算机能识别和执行的指令的二进制 代码。如:1011000001100010
3.3.3 存储器操作数寻址方式
3
寄存器相对寻址
例:MOV AL,[BX+5]; 若DS=6000H,BX=2000H,
DS BX 600 0H 200 0H 60000 ² 操作码 操作码 05H ² ² ² 620 05 9AH ²
微机原理及应用——第3章 指令系统 33
代 码 段
EA=200 0H+05H=200 5H
AX,[ 1070 H ] ....
A1H 70H 10H
代码段
例:MOV
DS = 2000 H,物理地址为: PA=20000H+1070H=21070 H AX AH AL
.... 2000:1070
2000:1071 2000:1072
20 H 30 H
31
数据段
微机原理及应用——第3章 指令系统
3.3.3 存储器操作数寻址方式
5
相对基址变址寻址
DS BX 4000H 0200H · 操作码 操作码 34H DI 0010H 40000H + EA 41444H 50H ·
微机原理及应用——第3章 指令系统 37
例:MOV AH, [BX+DI+1234H]
代 码 段
12H ·
EA=0200H+0010+ 1234H=1444H AX 50H AL
2.了解指令的机器语言格式; 3.掌握8086/8088的指令系统;
微机原理及应用——第3章 指令系统
4
知识点
3.1 8086数据类型和指令码格式 3.2 8086操作数寻址方式 3.3 程序转移地址的寻址方式 3.4 8086指令系统 3.5 数据传送指令 3.6 算术运算指令 3.7 逻辑运算和移位指令 3.8 串处理指令 3.9 程序转移指令 3.10 处理器控制指令
14
部分8088常用指令
指令类型 助记符 MOV,PUSH/POP,XCHG等 LEA,LDS,LES IN,OUT
数 据 传 送
算 术 运 算
数据传送 地址传送 输入输出
加法
减法 乘/除法 逻辑 移位
ADD,ADC,INC
SUB,SBB,DEC,NEG,CMP MUL,IMUL,DIV,IDIV AND,OR,NOT,XOR,TEST SHL/SHR/SAR,ROL/ROR,RCL/RCR
寻址方式
立即数寻址 寄存器寻址 直接寻址 寄存器间接寻址 变址寻址 基址变址寻址
相对基址变址寻址
端口寻址
微机原理及应用——第3章 指令系统 25
直接寻址 寄存器间接寻址
3.3.1 立即数寻址
操作数(为一常数)直接由指令给出: 例: MOV AL,80 H MOV AX,1090 H MOV CX,100
微机原理及应用——第3章 指令系统 5
重点
1.指令的寻址方式; 2.指令系统;
微机原理及应用——第3章 指令系统
6
难点
十进制调整指令;
串操作指令;
微机原理及应用——第3章 指令系统
7
3.1 数据类型
IA-32结构的基本数据类型
字节:8位 字:16位,2个字节 双字:32位,4个字节 四字:64位,8个字节(80486CPU引入) 双四字:128位,16个字节(Pentium III)
微机原理及应用——第3章 指令系统
18
3.2.2 8086 CPU指令格式
8086 CPU指令格式
mod 2位 reg 3位 r/m 3位 低 高 字 字 节 节 位移量 1-2字 节 低 字 节 高 字 节
opcode
操作码 1字节
方式 寄存器 1字节(寻址方式)
立即数 1-2字 节
微机原理及应用——第3章 指令系统
3.3.3 存储器操作数寻址方式
1、规定段寄存器
Ø ÷´ Í ² ³À Ð ¡ È Ñ ¶ ® ´ ® ´ Ã Ó » Ò · Ö » Ø Õ ² Ø ÷´ ² ³Ô Ø ÷¿ Ä ² ³Ä µ BP ä Ó ¼ ½ ã ý Ý °Ê ¾ î Á ÷ ³ × ² µ Ö × ² µ Ö °² Ñ Ö æ ¡ ´ È ý £ ´ Õ ³ À CS SS DS ES SS DS Î ù ² ¶ » Ö ´ Ô ä û ´ ´ Æ Ë À Ô Þ Î Þ Î CS¡ SS¡ ES ¢ ¢ Þ Î CS¡ SS¡ ES ¢ ¢ CS¡ SS¡ ES ¢ ¢ « Æ × ² Æ Ò µ Ö IP SP SI DI Ð §× ² Ó Ð µ Ö EA Ð §× ² Ó Ð µ Ö EA
3.3.3 存储器操作数寻址方式
2
寄存器间接寻址
操作数的偏移地址(有效地址EA)放在寄存器中 只有SI、DI、BX和BP可作间址寄存器
例: MOV AX, [BX] MOV CL, CS:[DI] 错误例 : MOV MOV
AX, [DX] CL, [AX]
微机原理及应用——第3章 指令系统 32
串数据类型
微机原理及应用——第3章 指令系统
11
3.2 8086指令系统
指令及指令系统
指令——控制计算机完成指定操作的命令 机器指令——指令的二进制代码形式。例如: CD21H 汇编指令——助记符形式的指令。例如:INT 21H 指令系统——CPU所有指令及其使用规则的集 合
微机原理及应用——第3章 指令系统
微机原理及应用——第3章 指令系统
28
3.3.3 存储器操作数寻址方式
2、规定偏移量
任何内存实际地址都由两部分组成:
实际地址=段基址+段内偏移地址(此单元与段基 址的距离) 段内的偏移地址又称为有效地址(EA): 8086: EA=基地址寄存器内容+索引+位移量
微机原理及应用——第3章 指令系统 29
串操作
控制转移
MOVS,CMPS,SCAS,LODS,STOS
JMP,JXX,LOOP,CALL/RET,INT/IRET
微机原理及应用——第3章 指令系统 15
3.2.1 指令的基本构成
目的
Label:
源
标 号
说明要执行 的是什么操 作源自操作对象,可 以有0个、1个 或2个
16
微机原理及应用——第3章 指令系统
12
3.2 8086指令系统
8088/8086指令系统:
指令向后兼容(x86系列) 应用广泛,资料易于寻找
微机原理及应用——第3章 指令系统
13
3.2 8086指令系统
(1)数据传送类; (2)算术运算类; (3)逻辑运算和移位; (4)串操作; (5)控制转移类; (6)处理器控制。
微机原理及应用——第3章 指令系统
微机原理及应用——第3章 指令系统 35
例:MOV AX,[BX+SI] BX=2000H,SI=0006H
代 码 段
AX
数 据 段
²
3.3.3 存储器操作数寻址方式
EA=一个基址寄存器的内容+一个变址寄存器
EA =
(BX)
(BP)
+
(SI)
(DI)
同一组内的寄存器不能同时出现
微机原理及应用——第3章 指令系统 36
AX
9A H
数 据 段
3.3.3 存储器操作数寻址方式
EA=间址寄存器的内容加上一个8/16位的位移 量
(BX)
EA =
(BP)
(SI) (DI)
+
8位
位移量
16位
微机原理及应用——第3章 指令系统
34
3.3.3 存储器操作数寻址方式
4
基址变址寻址方式
DS BX 5000H 2000H ² 操作码 SI 0006H 50000H + EA 52006H 操作码 ² EA=2000H+06H=2006H ABH 78H ² ² ² 78H ABH
19
3.2.3 8086的操作数
1、立即数
8位
无符号数
16位
00H-FFH(0-255)
0000H-FFFFH(0-65535)
带符号数 80H-7FH(-128~127) 8000H-7FFFH(-32768~32767)
MOV AX,0FA00H MOV 8000H,DX
微机原理及应用——第3章 指令系统
例:1234H存在1000H单元:数据在内存中的顺序为:
1000H单元 34H 1001H单元 12H
微机原理及应用——第3章 指令系统 9
3.1 数据类型
数字数据类型