第三章 8086指令系统

合集下载

第3章 8086指令系统-汇编语言程序设计教程-陆遥-清华大学出版社

第3章  8086指令系统-汇编语言程序设计教程-陆遥-清华大学出版社

直接寻址方式可以利用变量名的偏移地址属性来 描述操作数的偏移地址(可直接用变量名,或将 变量名置于方括号[ ]中),段寄存器默认为DS。 如果实际使用的段寄存器不是DS,则必须用段 前缀明确指出。
【例3.7】设数据段内有如下变量定义语句
VAR DB 76H,5CH,0A3H,08H
分析以下指令的执行结果。
3.1 指令系统基本概念
指令是给计算机下达的一个简单操作任务,CPU 所能执行的所有指令构成了一个计算机的指令系 统(也称指令集)。
汇编语言指令是对机器指令的符号化表示,采用 助记符来表示指令的操作功能和操作对象。
指令通常可以分为以下几类:
⑴ 数据传送类指令。 ⑵ 算术运算类指令。
⑸ 程序控制类指令。 ⑹ 处理器控制类指令。
【例3.3】要求将数据68传送给AL寄存器,写出相应的传 送指令。 分析:由于AL寄存器接收数据,所以目的操作数为AL, 采用寄存器寻址方式,而源操作数为常数68,采用立即寻 址方式
MOV AL,68 ;AL←68
【例3.4】设被加数存于寄存器DX中,加数为512,写出相 应的加法指令。 分析:因为被加数由寄存器DX提供,所以DX为目的操作 数,采用寄存器寻址方式,而加数为常数512,采用立即 寻址方式
操作数。
2. ADD指令
指令格式:ADD DST,SRC 指令功能:DST←(DST)+(SRC) 。执行加法运算。 操作数特点:两个操作数。被加数DST为目的操作数,加
数SRC为源操作数。
3. NOT指令
指令格式:NOT OPR 指令功能:OPR←(OPR) 。执行逻辑非运算。 操作数特点:一个操作数。OPR既是目的操作数,也是源
段地址由段寄存器提供,用段前缀(DS:,ES:, CS:或SS:)来指明;偏移地址(亦称有效地址) 则有多种表示形式,由此形成了不同的存储器寻 址方式。

微机原理第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能存放的数的

第三章 8086的指令系统

第三章 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)

第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的指令系统

第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注:寄存器寻址时,寄存器可以是源操作数,也可以目的操作数。

2_第3章 8086指令系统_加减运算指令比较指令52

2_第3章 8086指令系统_加减运算指令比较指令52
4
3.4.2 算术运算指令
算术运算指令涉及两种类型数据,即无符号数和有符号数 对加法指令和减法指令而言,无符号和有符号数可采用同
一套指令,其先决条件有两个: 一是参加的操作数必须同为无符号数或同为有符号数 二是要采用不同标志位来检查无符号数和有符号数的 运算结果是否溢出
而乘除运算指令则需要区分无符号数和有符号数
11 11
ADC指令的使用价值
主要用于由于数据较大(多字节),需要多次运算的加法 运算中。 例:有两个4字节的无符号数相加:
2D568F8CH+3C9E489BH=? 设 被加数存放在BUF1开始的存储区内
加数存放在BUF2开始的存储区内 要求和放回BUF1存储区 假设CPU进行8位的加法运算,为此将进行4次加法运算
.386
……
MOVZX AX, A
MOVZX BX, B
ADD
AX, BX
MOVZX BX, C
ADD
AX, BX
MOV
SUM, AX
;取第一个数,扩展0传送 ;取第二个数 ;加第二个数 ;取第三个数 ;加第三个数 ;保存三个数的和
20 20
[例] P,Q,R均为8位有符号数,求它们的和,送入TOTAL
这个问题的另一种方法:
MOV AL, A
;取第一个数
MOV AH, 0
;高8位清零,准备存放和的高8位
ADD AL, B
;加第二个数
ADC AH, 0
;如果有进位,存入AH
ADD AL, C
;加第三个数
ADC AH, 0
;如果有进位,加入AH
MOV SUM, AX ;保存三个数的和
19 19
这个问题的第三种方法:

第3章8086指令系统1

第3章8086指令系统1
30H 00H 44H 11H … 66H 58H 79H 05H … 10H 0FH
MOV AX,1000H MOV AX,BX MOV AX,[1200H] MOV AX,[BX] MOV AX,1100H[BX] MOV AX,[BX][SI] MOV AX,1100H[BX][SI]
第3章
段地址对应BX基址寄存器默认是
DS, 对 应 BP基 址 寄 存 器 默 认 是 SS;可用段超越前缀改变
第3章
基址变址寻址指令
MOV AX,[BX+SI] ;AX←DS:[BX+SI] MOV AX,[BP+DI];AX←SS:[BP+DI] MOV AX,DS:[BP+DI];AX←DS:[BP+DI]
第3章
操作数的寻址方式
立即寻址方式 寄存器寻址方式 直接寻址方式 寄存器间接寻址方式 寄存器相对寻址方式 基址变址寻址方式 相对基址变址寻址方式
第3章
相对基址变址寻址方式
有效地址是基址寄存器(BX/BP)、
变址寄存器(SI/DI)与一个8位或16 位位移量之和:
有效地址=BX/BP+SI/DI+8/16位位移量
有效地址在指令中直接给出 默认的段地址在DS段寄存器,
可使用段超越前缀改变
MOV AX,[2000H] ;AX←DS:[2000H] ;指令代码:A10020
MOV AX,ES:[2000H] ;AX←ES:[2000H] ;指令代码:26A10020
第3章
直接寻址方式
例:MOV AX, [1000H] 设(DS)=4000H,EA=1000H 那么:操作数的物理地址PA=?
OPD——目的操作数
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

例:
将AX、BX、SI寄存器清零。 将数FF11H送CX、DX寄存器。
AX,0000H BX,0 SI, 0 CX,0FF11H DX,0FF11H AX,0 BX,AX 送的数第一个为字母 时,要用0隔开。
法1: MOV MOV MOV MOV MOV 法2: MOV MOV
MOV MOV MOV
OPR1, OPR2 ;OPR1 OPR2
允许寄存器与寄存器之间交换数据
允许寄存器与存储器之间交换数据 注意: * 不影响标志位
* 不允许在存储器与存储器之间交换数据 * 不允许使用段寄存器
例:XCHG BX, [BP+SI] XCHG AL, BH
XCHG
[BX], [BP+SI]
XCHG
PUSH
AL
字量数据从栈顶压入和弹出时,都是低地址字节送低字节,
高地址字节送高字节。(高对高,低对低)
堆栈操作遵循先进后出原则。 不能用立即寻址方式。 不影响标志位。 出栈指令DST不能是CS 。
PUSH 2600H
POP
CS
堆栈段是程序中不可缺少的一个内存区,常用来
临时存放数据
§3-1 8086汇编语言及寻址方式
•掌握8086基本指令的格式、功能及应用方法。
一、指令格式
必须有
可有(1或2) 可无
目的操作数dest
源操作数src
操作码
操作数1,操作数2
;注释
1、操作码(指令助记符) 反映了指令的功能(或操作的性质),用英文缩写表示。 如: MOV 传送 CMP 比较 ADD 加法 OUT 输出 2、操作数(学习指令系统应特别注意) 指令操作的对象(所要处理的数据或数据的位置信息)。 三种类型:立即数; 寄存器; 存储器(地址信息)
说明BUF1和BUF2 为地址的偏移量
MOV指令并非任意传送! 非法指令的主要现象: • 两个操作数的类型不一致 Eg: MOV CX,AL • 无法确定是字节量还是字量操作 Eg: MOV [1004],5 Eg: MOV SI,1004H MOV AL,5 MOV [SI],AL • 两个操作数都是存储器 Eg: MOV [2000H],[3000H] • 段寄存器的操作有一些限制 Eg: MOV DS,2000H Eg: MOV DS,ES
BL,50H BH,51H
MOV
MOV
DS: [1000H],BL
DS: [1006H],BH
例:交换BUF1和BUF2两单元的内容。 MOV MOV MOV MOV MOV SI,OFFSET BUF1 DI,OFFSET BUF2 AL,[SI] AH,[DI] [SI],AH
MOV
[DI],AL
BX BP
+
SI DI
=
MOV AX, [BX+SI] MOV AX, [BX][SI]
;AX←DS:[BX+SI]
* 必须是一个基址寄存器和一个变址寄存器的组合
MOV AX, [BX][BP] MOV AX, [SI][DI]
(5)相对基址变址寻址
BX BP SI DI
有效地址EA
=
+
+
8位 16位
操作数地址(PA)
操作数由指令给出 操作数在寄存器中 操作数的有效地址由指令直接给出
指令格式举例
MOV DX, 100H ADD AX, BX MOV AX, [2000H] ;DX←100H ; AX←AX+BX ;AX←(2000H)(2001H)
寄存器间接寻址 寄存器 相对寻址 基址变址寻址
PA=DS×16+BX或SI或DI PA=SS ×16+BP
二、寻址方式
1、立即寻址——操作数由指令给出 。
源操作数为“立即数”。
如: MOV AX, 3064H
;功能将立即数3064H送AX
源操作 数 目的操作数
2、寄存器寻址 —— 操作数在指定的寄存器中 操作数存放在CPU的内部寄存器reg中:
8位寄存器r8:AH、AL、BH、BL、CH、CL、DH、DL
PTR
说明是字操作
例:将50H、51H分别存入存储器21000H、21006H单元
法1: MOV AX,2000H
MOV
MOV MOV 法2:
AX
SI,1000H BYTE PTR[SI],50H
MOV MOV MOV
MOV MOV
BYTE PTR[SI+6],51H AX,2000H DS,AX
BX
有效地址EA
=
BP SI DI
+
8位 16位
位移量
例: MOV AX, COUNT[SI]
或 MOV AX, [COUNT+SI]
假设DS=3000H, SI=2000H, COUNT=3000H 那么 PA = 35000H
指令功能:将35000H开始的两个单元内容送AX
(4)基址变址寻址
有效地址EA
16位寄存器r16:AX、BX、CX、DX、SI、DI、BP、SP
4个段寄存器seg:CS、DS、SS、ES
例:MOV
AX, BX ;AX←BX
MOV CS, AX
注意:*源操作数和目的操作数的字长要一致。 MOV AH, BX
* CS不能用MOV指令改变
3、存储器操作数的寻址方式 程序设计时,8086采用逻辑地址表示主存地址
BX, DS

4、 换码指令(将一个字节从一种代码换成另一种代码)
XLAT ;AL←DS:[BX+AL]
将BX指定的缓冲区中、AL指定的位移处的一个字节 数据取出赋给AL。
换码指令执行前: *造表 *表格首地址---->BX *相对表格首地址的位移量----> AL
•换码指令执行后: AL中的值已转换为内存表格中的某一值。
BX、BP、SI、DI 及其组合
MOV AX, BUFF(BX+DI) ;AX←(DS×16+BX+DI+OFFSET BUFF)
相对基址 变址寻址
PA=DS×16+BX+SI或DI+位移量 PA=SS×16+BP +SI或DI+位移量
学习寻址方式时要注意:
(1) 正确书写各种寻址方式的汇编格式
(2) 清楚各种寻址方式所指定的操作数或操作数地址在何处?
SI, AX CX,0FF11H DX,CX
当一个操作数的操作类型无法确定时, 需要利用汇编语言的操作符显式指明 如: MOV 修正: MOV ; BYTE MOV ; WORD [BX+SI], 255 ;非法指令,
BYTE PTR [BX+SI],255 PTR 说明是字节操作
WORD PTR [BX+SI],255
直接端口寻址:端口地址由指令直接提供,是8位立即数,访问端 口号00~FFH,共256个端口。例:IN AL,63H 间接端口寻址:寻址的端口号由寄存器DX提供,访问 端口号 0000~FFFFH,共64K个端口。例:MOV DX,213H IN AL,DX
寻 址 方 式 小 结
寻址方式
立即寻址 寄存器寻址 直接寻址
5、串操作指令
注意:1. 指令的基本功能 2. 指令的执行对标志位的影响 6、控制类指令
3. 对寻址方式或寄存器使用的限制和隐含使用的情况
§3-2
数据传送类指令
通用数据传送指令
地址传送指令 标志寄存器传送指令
一、通用数据传送指令
提供方便灵活的通用传送操作
有4种指令
MOV
PUSH POP
传递参数
保存和恢复寄存器
例: PUSH DS SUB AX, AX PUSH AX …… …… RET ;实验中正确返回 DOS系统的一种方法 例: PUSH AX ;保护现场 PUSH BX … ;此期间用到AX和BX寄存器 … POP BX ;恢复现场 POP AX RET
3、交换指令: XCHG
;DS(SI+ 2728H+2)和(SI+ 2728H+3)
( 指令中 / 寄存器中 / 存储器单元中) (3) 各种存储器寻址方式是如何形成操作数的物理地址的? (段寄存器 / 基址、变址寄存器 / 偏移量的组合关系) (4)各种寻址方式限定使用的寄存器
三、 8086指令系统的分类
8086微处理器指令系统中有133条指令,根据指令的操作性质
可分为六大类。 1、传送类指令 2、运算类指令 8086指令系统 3、逻辑类指令 4、转移类指令
XCHG
XLAT
1、传送指令:
MOV
立即数 注意: * DST不能是CS、立即数 存 储 器 AX BX CX DX BP SP SI DI * 不影响标志位
DST, SRC
; DST
SRC
* DST、SRC不能同时为段寄存器 段寄存器 CS DS ES SS
例:
MOV DS, ES

* 立即数不能直接送段寄存器 例: MOV DS, 2000H
位移量
MOV AX, [BX+DI+56] ;AX←DS:[BX+DI+56]
MOV AX, 56[BX+DI]
MOV AX, 56[BX][DI]
4、固定寻址(隐含寻址)
指令中已经默认对微处理器中的某寄存器进行操作,不用在指 令中指明使用的寄存器。 DAA LOOP N1
5、I/O端口操作数的寻址方式
(2)寄存器间接寻址——EA只能在 BX、BP、SI、DI中
如: MOV AX,[BX]
相关文档
最新文档