第3章 8086指令系统

合集下载

微机原理课件第三章8086寻址方式和指令系统

微机原理课件第三章8086寻址方式和指令系统
2取 单.如操元果作的指数 地令寄, 址中存钥 。用器匙对寄就于间存或相寄接器=当存D寻B于器SP址×进存间1方行储接6+式间D接I的寻E址A计,寄则算存默器 认操作
数寻在址堆方栈式段来中说,,操就作相数当的于段钥地匙址在段寄存器SS中,操 作放数在的寄物存理器地中址,=即SS寄×存1器6+给BP出。 了要访问的存储单元地址。
DS 3000H ×16

SI 2000H
操作码
+ COUNT 4000H
00
代码段
40
寄存器3相60对00H寻址方式也允许使┋用段超越前缀,
如MOV BX,ES:COUNT[DI]则段地址为ES,物
理地址=ES×16+DI+COUNT。
BH
BL

BX 56
78
36000H
78
56
数据段

指令MOV BX,COUNT[SI]的执行过程
{{ }} 组合起来([B只X能]+相[S加I)]+,D同8或时D还1可6 以加上一个8位或
((1SE86IE8和位A种A种=D的=)I)位也移不[[[[[[[BBB量能BSDBXPPPIIX]],]同]]]]+++但时++++[[[DDDDSDB出8888IIIX现或 或或 或]]]和+++在DDBDDD11P方1188866不66或 或 或括能DDD号111同寄中666时;存出器现相 变在相对 址方对基 寻括寻号址 址址中,
{ 设((D3E86A种S0==0M)300HO0)V[[[[0HBSBD=XIPIB,5]]]]X6或S7,+I8=18H[2S6位0I位0+位0C位H移O,移U量位N量T移] 量COU默 默N认 认T=DS4SS0段 段00H,

第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- 一般为存储器操作地址位移量或立即操作数。

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指令系统概论

第3章 8086指令系统概论

➢ 伪指令格式
[符号名] 伪指令助记符 操作数1 [,[操作数2] [,[操作数3]]] [;注释]
✓ 符号名与伪指令之间不需要冒号分隔;
✓ 伪指令的操作数至少1个,多个时用逗号分隔;
2020年11月20日星期五
5
3、示例指令
➢ 数据传送指令 ✓ MOV <目的操作数>,<源操作数>
➢ 指令功能
例如: MOV AX , 2 MOV AX , BX MOV AX , [BX]
ABCDH 标识符
0ABCDH 立即数
2020年11月20日星期五
4
2、指令的书写格式
➢ 指令格式
[标号:] 指令助记符 [操作数1] [,[操作数2] [,[操作数3]]] [;注释]
✓ 标号与指令用冒号分隔,表示指令的存放位置;
✓ 标号不是每条指令中都需要的,必要时定义;
✓ 16位系统中,汇编指令的操作数一般为0—2个;
✓ 使用源操作数的值为目的操作数赋值;
✓ 指令执行完,目的操作数的值与源操作数一样;
源操作数不变,目的操作数改变;
➢ 单独写的指令一般都不包括标号部分;
✓ 标号在写指令序列时才会使用到;
2020年11月20日星期五
6
3.1 8086的寻址方式
3.1.1 数据的寻址方式 3.1.2 指令的寻址方式
2020年11月20日星期五
9
1.立即数寻址方式
➢ 立即数寻址方式
✓ 操作数的数值紧跟在操作码之后,直接在指令中出现。
➢ 特点
MOV AL , 300 正确吗?
✓优点:不需访存,执行速度快; 位数不匹配,不正确!
✓ 缺点:立即数不能修改,通用性差(适用于常数)。

第三章 8086 8088指令系统

第三章 8086 8088指令系统

SI 1200
+)
6000 0 1200 61200 AX 33 44
61200H 61201H
存储器 . . . 44H 33H 数 据 段
. . .
图 3-5 寄存器间接寻址示意图
3.2.5 寄存器相对寻址
寄存器相对寻址——操作数在存储器中。由指令指定的地址寄存器的内容加上指令中
给出的一个8位或16位的地址位移量,即可得操作数的偏移地址。
SI AX AX AX AX AX
3.2.8隐含寻址
隐含寻址—— 操作数隐含在操作码中,在有些指令的操作数中,不仅包含了操作的性质,
还隐含了部分操作数的地址。如乘法指令 MUL,在这条指令中只须指明乘数的地址,而被乘数 已经乘积的地址是隐含且固定的。这种将一个操作数隐含在指令码中的寻址方式就称为隐含
立即数操作数: 所谓立即数指具有固定数值的操作数,不因指令的执行而发生变化 。立即数操作 数只能用作源操作数,而不能用作目标操作数。

寄存器操作数:
8086CPU的8个通用寄存器和4个段寄存器可以作为指令中的寄存器操作数,寄存
器操作数在指令中既可以作为源操作数,也可以用作目标操作数。 存储器操作数: 参加运算的数据是存放在内存中。
两单元的内容送到AX中。假设DS=2000H,则所寻找的操作数的物理地址为: 2000H×10H+3102H = 23102H, 指令的执行情况如图3-3所示
存储器 . . .
MOV操作码
02H 31H AH AL 23102H 23103H
图 3-3 直接寻址方式
代 码 段
. . . ×× ×× . . . 数 据 段
请注意:使用基址—变址方式时,不允许将两个基址寄存器或两个变址寄存器组合
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
PUSH AX PUSH BX POP AX POP BX
2014-6-8 qingyang@ 26
3. 交换指令
XCHG reg, reg XCHG reg, mem XCHG mem, reg 例 (BX)=1234H,(DS)=2000H, (21234H)=5678H, XCHG BX, [BX] 执行后, (BX)= , (21234H)= 。
18
3.2.1 数据传送指令
所有通用传送指令都不影响标志位。
1. MOV 指令
– – – – – MOV MOV MOV MOV MOV reg, data; mem, data reg, reg reg, mem mem,reg reg: CS,IP,DS,ES,SS除外
}
目的reg: CS,IP除外
2014-6-8
qingyang@
28
4. 输入输出指令(参见第八章)
1)直接输入输出指令 IN AL, PORT ; IN AX, PORT; OUT PORT,AL; OUT PORT,AX; AL ← (PORT) AX ← (PORT+1,PORT) (PORT) →AL (PORT+1,PORT) → AX
2014-6-8
qingyang@
24
采用基址变址寻址方式
MOV SI, 2040H
MOV DI, 2060H MOV BX, 0 MOV CX, 0AH LOOP1: MOV AL, [BX][SI] MOV [BX][DI],AL INC BX DEC CX JNZ LOOP1 HLT
2014-6-8 qingyang@ 25
2. PUSH 和 POP 指令 PUSH reg POP reg PUSH mem POP mem
例, 已知(SS)=0FFA0H,(SP)=00B0H,(AX)=8057H, (BX)=0F79H。试画出堆栈区和SP的内容变化过程示意图 (标出存储单元的物理地址);执行下列指令序列后, AX和BX的内容是什么?
SS
SS
(BP)+(SI)+DISP
(BP)+(DI)+DISP
(DS) ×10H+ (BP)+(SI)+DISP
(SS) ×10H+ (BP)+(DI)+DISP
2014-6-8
qingyang@
15
例:下述各条指令都是错误的
• MOV AX, [CX]
• MOV AX, [BX][BP] • MOV AX, [SI][DI] • MOV AX, 112200H[BX]
2014-6-8
qingyang@
16
5.操作数的类型必须一致 例如,
MOV AX , BX MOV AX, BL
; 正确。指令执行后,AX←(BX),但BX不变 ; 错误。源和目的的位数不相同
MOV AL, 256
MOV AX, -32769
; 错误。 256=100H,超过了AL能存放的数的
第3章 8086指令系统
指令:CPU能够直接完成的基本操作。例 如,加法,减法等。
指令系统:所有指令的集合。CPU性能的 重要指标之一。
2014-6-8
qingyang@
1
• 3.1 寻址方式 指令通常应提供的信息:
(1) 做什么操作 (2) 操作数从哪里来 (3) 操作结果放在哪里 (4) 对于调用和转移指令,还要涉及转移或调用 地址的提供方式
2014-6-8
• 寻址方式总结
1. 三种类型的操作数:立即数(data),寄存器 操作数(reg),存储器操作数(mem)。
双操作数指令的常见格式(以数据传送指令为例) – MOV reg, data – MOV mem, data – MOV reg, reg – MOV reg, mem – MOV mem,reg
2014-6-8
qingyang@
5
• 现代微型计算机中多采用二地址指令,两个操作 数分别称为“源操作数”和“目的操作数”,指 令执行后,把运算结果放到目的操作数的地址之 中。 • 指令的操作码在机器中的表示比较简单,只要对 每一种操作指定相应的二进制代码即可;而指令 的操作数字段的情形就比较复杂。
操作数字段可以有一个,二个或三个操作数,通常称 为“一地址”,“二地址”或“三地址”指令
操作码
操作数
。。。
操作数
2014-6-8
qingyang@
4
例如:
单操作数指令 (INC AX) 只需要指出加1的操作数,它是“一地址”指令。 双操作数指令 (ADD AX, BX) 大多数运算型指令都是双操作数指令,对这种指令,有的 机器(大中型)使用“三地址”指令:除给出参加运算的 两个操作数外,还要指出运算结果的存放地址。
(DS) ×10H+ (SI)+DISP (DS) ×10H+ (DI)+DISP (DS) ×10H+ (BX)+DISP (SS) ×10H+ (BP)+DISP
DISP: 位移量,8位或16位
2014-6-8 qingyang@ 14
4. 基址变址寻址 (MOV AX, [BX][SI]) 基址变址相对寻址(MOV AX, 1100H[BX][SI])
2014-6-8
qingyang@地址的方式称为 寻址方式。 (规定如何对地址字段作出解释以找到操作数) • 程序转移时需提供转移地址,这跟提供操作数地 址在方法上没有本质区别,因此也归入寻址方式 的范畴。 寻址方式可分为二类: 与操作数有关的 与转移有关的
2014-6-8
qingyang@
12
2. 段前缀 寻址方式隐含地规定了存储器操作数的段地址。 例如,
[BX], [SI], [DI],[1200H]… .对应段寄存器为 DS [BP] ……..……………… 对应段寄存器为 SS
允许数据存放在其它的段(代码段除外)。此时应 在指令中给出 “段前缀”。 例如,MOV AX , ES : [3000H]
2014-6-8
qingyang@
20
用寄存器间接寻址方式实现
MOV SI , 2035H
MOV DI, 2045H MOV AH, [SI] MOV AL, [DI] MOV DS:[SI] ,AL
MOV DS:[DI] ,AH
HLT
2014-6-8
qingyang@
寻址方式
DISP[BX][SI] DISP[BX][DI]
段寄存器 DS DS
有效地址
(BX)+(SI)+DISP (BX)+(DI)+DISP
物理地址
(DS) ×10H+ (BX)+(SI)+DISP (DS) ×10H+ (BX)+(DI)+DISP
DISP[BP][SI]
DISP[BP][DI]
2014-6-8
qingyang@
19
例1 用MOV指令实现两内存字节单元内容的交换 用直接寻址方式实现
(DS):2035H
MOV BL, DS:[2035H] MOV CL, DS:[2045H] ;
(DS):2045H
MOV DS:[2045H], BL ; MOV DS:[2035H],CL ; HLT
2014-6-8 qingyang@ 8
• 8088/8086与操作数有关的寻址方式
立即寻址方式 寄存器寻址方式 直接寻址方式 寄存器间接寻址方式 寄存器相对寻址方式 基址变址寻址方式 基址变址相对寻址方式
2014-6-8 qingyang@ 9
举例
• 已知,(DS)=2000H, (BX)=0100H, (SI)=0002H, (20100H)=12H, (20101H)=34H, (20102H)=56H, (20103H)=78H, (21200H)=2AH, (21201H)=4CH,(21202H)=B7H, (21203H)=65H, 试说明下列各条指令执行完后AX寄存器的内容。
范围
; 错误。 -32769超过了AX能存放的带符号数
(补码)范围
2014-6-8
qingyang@
17
3.2 8086指令系统 六大类:数据传送指令,
算术运算指令, 逻辑运算和移位指令, 控制转移指令, 串操作指令, 处理器控制指令
2014-6-8
qingyang@
• • • • • • • 1)MOV 2) MOV 3) MOV 4) MOV 5) MOV 6) MOV 7) MOV AX, 1200 AX, BX AX, [1200H] AX, [BX] AX, 1100H[BX] AX, [BX][SI] AX, 1100H[BX][SI]
qingyang@ 10
21
例2 数据块传送:把2040H地址开始的10个字节数 据移到2060地址开始的10个字节单元处。
(DS):2040H
10个字节
(DS):2060H 10个字节
2014-6-8
qingyang@
22
地址指针的修改采用增量方式 (寄存器间接寻址)
MOV SI, 2040H MOV DI, 2060H MOV CX, 0AH LOOP1: MOV BL, [SI] MOV [DI],BL INC SI ; INC DI DEC CX JNZ LOOP1 HLT
2014-6-8 qingyang@ 23
地址指针的修改采用减量方式 (寄存器相对寻址方式) MOV SI, 2040H ; MOV DI, 2060H ; MOV CX, 0AH; LOOP1: MOV BL, [SI+09H] ; MOV 09H[DI],BL ; DEC SI ; DEC DI ; DEC CX ; JNZ LOOP1; HLT
相关文档
最新文档