1 8086 8088寻址方式
第三章80868088指令系统

第三章80868088指令系统机器语言指令由二进制代码组成。
一条指令一般包含操作码(OP )和操作数两部分,操作码指明指令所完成的操作,操作数指出该指令在执行规定操作时所需的信息。
指令中用于说明操作数(一般指源操作数)所在地址的方式被称为寻址方式。
(8086的寻址方式分两类:数据寻址方式和转移地址的寻址方式)3.2.1数据寻址方式 P51 1.立即寻址:数据是8位或16位,直接放在指令的最后一个(8位)或两个字节(16位)中,这样的数据称为立即数。
MOV AL ,80HADD AX ,0F000HMOV AX ,1234HADD AL ,10H操作码字节AX操作数字节操作码字节操作数(a )MOV AL , 80H(b )MOV AX , 1234H图3-2 立即寻址方式指令举例 P522. 寄存器寻址:数据存放在指令规定的寄存器中。
MOV CL ,DL MOV AX ,BX注意:在双操作数指令中源操作数寻址方式和目的操作数寻址方式。
CL DL AXAL AHBL BH (a )MOV CL , DL (b )MOV AX , BX图3-3 寄存器寻址方式指令举例 P523. 直接寻址:操作数在存储器中,其16位有效地址,即段内偏移地址在指令码中,占两个字节。
MOV AL ,[1064H] ;设(DS )=2000HADD AX ,[2000H]代码段操作数偏移地址数据段图3-4 直接寻址方式指令举例 P53操作数数据4. 寄存器间接寻址:操作数在存储器中,其16位有效地址EA 在指令指定的基址寄存器BX 或变址寄存器SI 、DI 中。
BX EA = SIDI 注意:新教材中有BP 【例】 MOV AX ,[SI] MOV [BX] , AL 如果:(DS )=3000H ,(SI )=2000H ,(BX )=1000H,(AL )=64H注意:默认段地址寄存器为DS 以上为二字节指令;MOV AX,[BP]为三字节指令;实为指令MOV AX ,[BP+0]的简写!图3-5 寄存器间接寻址方式指令举例 P535. 寄存器相对寻址:操作数在存储器中,其效地址是一个8位或16位的位移量与一个基址寄存器或变址寄存器的内容之和。
第3讲 8086&8088指令系统-寻址方式

Hale Waihona Puke 8088/8086的寻址方式
• 五、变址寻址(Index Addressing) – 指令的操作数是一个带括号的寄存器和一个 8位或16位偏移量。将寄存器的内容和偏移 量之和作为操作数的偏移地址,将地址单元 的内容作为操作数。 – 这个偏移量可以是一个立即数,也可以是一 个符号,这个符号一般表示一个地址。 – 可以使用的寄存器仍然是SI、DI、BX、BP, BP仍然由堆栈段寻址。
12
8088/8086的寻址方式
– 当另一个操作数是立即数时,由于立即数本身 也不决定操作数的位数,此时,为了明确操作 数的位数,需要在直接地址前,加上一个说明 位数的算符: MOV [2000H],100 ;不正确,位数不定 MOV BYTE PTR[2000H],100 ;8位操作数 MOV WORD PTR[2000H],100 ;16位操作数 13
14
8088/8086的寻址方式
四、寄存器间接寻址 指令的操作数部分用一个加括号的寄存器来表示,实 际是将寄存器的内容作为偏移地址,将地址单元的内容作 为指令的操作数。 只在寄存器SI、DI、BX、BP任何一个中存放16位偏 移地址。 由[DS:SI]或[DS:DI]或[DS:BX]或[SS:BP]形成数据的 有效地址来得到操作数。
8088/8086的寻址方式
– 直接寻址由于对变量的操作:可以对一个变 量赋值;也可以将一个变量的值赋给另一个 操作数。 – 变量本质上就是地址单元的内容,对变量的 操作是要通过变量的地址来进行的,直接地 址就是表示变量地址的一种方式。 – C语句x=y,写成指令就是:
• MOV AL,Y • MOV X,AL
11
8088/8086的寻址方式
寻址方式

第4章 80x86指令系统
①直接寻址方式 最简单,直观;指令中直接以位移量形式,给 出操作数的有效地址EA;执行速度快,主要 用于存取位于存储器中的简单变量。 MOV AL, [1064H],设当前(DS)=2000H
操作码
(DS)*10H=20000H + 1064H 21064H
64 10
代 码 段
物理地址=
CS DS SS × 10H + EA ES
第4章 80x86指令系统
计算EA的通式为:
EA=基地址[BX或BP]+变址值[SI或DI]+位移量[0或8位或16位]
第4章 80x86指令系统 有效地址可以由以下三种地址分量组成:
● 位移量 (Displacement) :它是存放在指令中的一个 8 位或 16 位的数,但它不是立即数,而是一个地址。 ● 基址(Base Address):它是存放在基址寄存器BX或BP中的 内容。
M
31000H
…
AX
40000H
AL
30000H
…
42000H
50 40
31000H
…
64H
40
50
64H
…
第4章 80x86指令系统
③寄存器间接寻址-变址寻址方式 MOV CL, [SI]
(DI) EA= (SI)
操作码
64 10
代 码 段
DS 20000H SI 1000H + 21000H 20000H … CL 45 21000H 45 …
DS DS,SS DS,ES DS SS DS SS
3. 寄存器 [SI/DI] 变址寻址 4. 基址+变址 [BX+SI/DI] 寻址 [BP+SI/DI] 5. 基址+变址 [BX+SI/DI+disp] +位移量 [BP+SI/DI+disp]
80888086的寻址方式和基本指令

• B堆区P栈域为段基堆,中址采栈的指用(基针“S地寄先t址a存进c器k后)(出B是a”s主或e P存“o后i中nt进e一r)先个,出特表”殊存示数取的据在 SP操和作BP用方寄式8存0、8器8而/与8不0S8S是6段形随寄成机存的存器微取联机方合系式使统。用中以,确堆定堆 栈段栈中区的域存被储称单为元堆地栈址段
为学习指令系统打好基础
例如:关心用户“可编程”寄存器, 不关心无法操纵的“透明”寄存器
问题:为什么选择8088/8086?
简单、容易理解掌握 与目前的P3、P4向下兼容,形成x86体系 16位CPU目前仍在大量应用
8086/8088的基本情况
16/准16位CPU 16/8位外部数据总线 20位外部地址总线 40根引脚 4.77MHz时钟 集成度2.9万 3m工艺 1981年,IBM推出以8088为CPU的 IBM PC
溢出 无溢出 无溢出 溢出
辅助进位标志AF(Auxiliary Carry Flag)
运 算 时 D3 位 ( 低 半 字 节 ) 有 进 位或借位 时,AF=1;否则AF= 0
这个标志主要由处理器内部使用, 用于十进制算术运算调整指令中, 用户一般不必关心
3AH+7CH=B6H,D3有进位:AF=1
2. 指令指针寄存器
IP(Instruction Pointer)为指令指针寄存器, 指示主存储器指令的位置 随着指令的执行,IP将自动修改以指示下一条 指令所在的存储器位置 IP寄存器是一个专用寄存器 IP寄存器与CS段寄存器联合使用以确定下一条 指令的存储单元地址
3. 标志寄存器
标志(Flag)用于反映指令执行结果或控 制指令执行形式 8088处理器的各种标志形成了一个16位的 标 志 寄 存 器 FLAGS ( 程 序 状 态 字 PSW 寄 存器)
[工学]第三章 8086的寻址方式和指令系统
![[工学]第三章 8086的寻址方式和指令系统](https://img.taocdn.com/s3/m/1834505401f69e314332945c.png)
19
3.2
8086指令系统的概况
3.2.1 指令格式 说明:① 指令系统规定一条指令只能包含1个或2个
操作数。涉及一个操作数的指令称为单操作数指令; 单操作数指令中的操作数可能由指令本身提供,也可 能用指令隐含指出。涉及2个操作数的称为双操作数 指令;双操作数指令中至少有1个操作数必须通过寄 存器指出,不允许2个操作数均在存储器中。
操作数就在 CPU 的内部寄存器 (AX、BX、CX、DX、DI、 SI、BP、SP)中,寄存器名由指令指出。 例: DEC BL ;将BL的内容减1 MOV DX,AX ;将AX中的值送入DX中 ROL AH,1 ;将AH中的内容循环左移一位 说明:①采用此寻址方式的指令在执行时,操作数就在 CPU 内部进行,不需要使用总线周期,指令执行速度快。 ②一条指令中可以对源操作数、也可对目的操作数、 还可两者都采用寄存器寻址方式。 7
3. 双操作数指令:
例:MOV
AX,[BX+2000H]
25
指令编码格式举例:
26
3.2.2 指令的执行时间
指令周期:是指计算机完成对一条指令从取指开始至 执行完毕所需要的时间叫指令周期。与时 钟周期长短和所需要的时钟数有关。 即包括:
一条指令基本执行时间加上计算有效地址所需要的时间。 计算有效地址所需要的时间由寻址方式决定。
0
OP
例如:HLT指令编码为:
7
0
11110100
F4H
22
2. 单操作数指令:
单操作数在寄存器中
格式一:
7
格式二:
000—AX 001—CX 010—DX 011—BX 100—SP 101—BP 110—SI 111—DI
第三章 80868088寻址方式

3.2.4 寄存器间接寻址
操作数是在存储器中,但是,操作数的有效地址EA(偏移量)在以下四个 寄存器SI、DI、BP、BX之一中。可以分成两种情况:
(1)以SI、DI、BX间接寻址,则通常操作数在现行数据段区域中,即数据段寄 存器(DS)*16加上SI、DI、BX中的16位偏移量,为操作数的地址,
【例3.1】MOV AX, 10 执行后(AX)=? 该例中源操作数为立即寻址方式,立即数为10,存放在指令的下一单元。 图形表示:
执行:10→AX
执行后:(AX)=000AH
3.2.2 直接寻址
操作数的有效地址EA直接由指令直接提供的寻址方式称为直接寻址方式。 在直接寻址方式中操作数地址的 16 位偏移量直接包含在指令中。它与操作 码—起存放在代码段区域,操作数一般在数据段区域中,它的地址为数据段 寄存器DS加上这16位地址偏移量。如图所示。例如: MOV AX,DS:[2000H]
8086系统的I/O端口采用独立编址方式,有专门的输入输出指令(IN/OUT) 可访问64K个字节端口或32个字端口,其寻址方式有直接端口寻址和间接端口 寻址两种: 直接端口寻址 :指令中直接给出要访问的端口地址。 例如:IN AL,20H IN AX,30H 注:访问的端口数为:0~255,并且访问的端口地址采用两位的16进制数表示。 间接端口寻址:访问端口数超过256个,采用的端口间接寻址,I/O端口的地 址先送入到寄存器DX中,用DX作为间接寻址的寄存器 例如:MOV DX, 240H OUT DX, AL 注:访问端口数0~65535。
作业:
1.请指出下列指令源操作数、目的操作数各是什么寻址方式?
(1)MOV AX,0ABH (2)MOV AX,[100H]
第二章 80868088寻址方式和指令系统

(5)奇偶标志PF
用于反映运算结果中“1”的个数。如果“1”的个数为偶数,则OF被置1,否则OF被清0。
(6)辅助进位标志AF
在字节操作时,如发生低半字节向高半字节进位或借位;在字操作时,如发生低字节向高字 节进位或借位,则辅助进位标志AF被置1,否则AF被清0。
②状态控制标志
(1)方向标志DF
方向标志决定着串操作指令执行时,有关指针寄存器调整方向。 当DF为1时,串操作指令按减方式改变有关的存储器指针值, 当DF为0时,串操作指令按加方式 改变有关的存储器指针值。
其中:存储单元的物理地址是12345H, 标出的:两个重叠段的段值分别是:1002H和1233H, 在对应段内的偏移分别是2325H和0015H。
采用段值和偏移构成逻辑地址后,段值由段寄存器给出,偏移可由指令指针IP、堆栈指针SP 和其他可作为存储器指针使用的寄存器(SI、DI、BX和BP)给出,偏移还可直接用16位数给 出。
图中指令存放在代码段中,OP表示该指令的操作码部分 再例如: MOV AL,5 则指令执行后,(AL)=05H
MOV BX,3064H 则指令执行后, (BX)=3064H
2、寄存器寻址方式
操作数在CPU内部的寄存器中,指令指定寄存器号。
对于16位操作数数,寄存器可以是:
AX、BX、CX、DX、SI、DI、SP和BP等;
指令中不使用物理地址,而是使用逻辑地址,由总线接口单元BIU按需要根据段值和偏移自动 形成20位物理址。
3、段寄存器的引用
由于8086/8088CPU有四个段寄存器,可保存四个段值。所以可同时使用四个段值,但这四个 段有所分工。
在取指令的时候,自动引用代码段寄存器CS,再加上由IP所给出的16位偏移,得到要取指令 的物理地址。
8086 8088寻址方式和指令系统 2

8086 8088寻址方式和指令系统28086/8088的指令集可分为如下六个功能组:1、数据传送;2、算术运算;3、逻辑运算;4、串操作;5、程序控制;6、处理器控制。
指令表示格式:在汇编语言中,指令语句可由四部分组成,一般格式如下:[标号]指令助记符[操作数1][,操作数2][;注释]。
对于每条指令程序员要注意:1、指令的功能;2、适用于指令的操作数寻址方式;3、指令对标志的影响;4、指令的长度和执行时间。
1、数据传送指令:又可分为传送指令、交换指令、地址传送指令、堆栈操作指令、标志传送指令、查表指令、输入输出指令。
一、传送指令:格式如下:MOV DST,SRC。
指令把一个字节活一个字从远操作数SRC送至目的操作数DST。
MOV指令可实现的传送方式如下图所示:二、交换指令:利用交换指令可方便地实现通用寄存器与通用寄存器或存储单元的数据交换,交换指令的格式如下:XCHG OPRD1,OPRD2.此指令把OPRD1和OPRD2的内容交换,操作数同时是字节或字。
OPRD1和OPRD2可以是通用寄存器活存储单元,但不包括段寄存器,也不能同时是存储单元,还不能有立即数。
三、地址传送指令:8086/8088有如下三条地址传送指令。
(1)LEA:称为spss有效弟弟指令,指令格式:LEA REG,OPRD。
该指令把操作数OPRD的有效地址传送到操作数REG。
OPRD必须是一个存储器操作数,REG必须是一个16位的通用寄存器。
(2)LDS:该指令传送32位地址指针,格式:LDS REG,OPRD。
该指令把操作数OPRD中所含的32位地址指针段值部分送到数据段寄存器DS,把偏移部分送到给出的通用寄存器REG。
(3)LES:该指令传送32位地址指针,格式:LES REG,OPRD。
该指令把操作数OPRD中所含的32位地址指针段值部分送到数据段寄存器ES,把偏移部分送到给出的通用寄存器REG。
2、堆栈操作指令:堆栈是一段RAM区域,栈底地址较大,栈顶地址叫小。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
微机原理第3章8086/8088指令系统
寻址方式
微机原理指令:计算机执行某种特定操作的二进制编码。
比如:101110000011010000010010就是1条将数1234H送至AX的指令;
再如:000001010011010000010010是1条将数1234H与AX的内容相加,和送至AX的指令。
指令包含操作码和操作数。
1.术语1011100000000101
微机原理操作码:指明指令所要完成的操作类型。
指令例子中的黄色部分就表示操作码。
操作数
:指明参加操作的对象。
汇编语言中操作码采用助记符表示,操作数可用符号表示。
MOV AX,1234H
ADD AX,1234H
1.术语101110000011010000010010000001010011010000010010
微机原理寻址方式:是指取得指令操作数地址的方式。
包含数据寻址方式和转移地址寻址方式。
2.
寻址方式
微机原理立即寻址:操作数直接出现在指令中。
例:MOV AL,12H ;AL←12H (1)立即寻址方式
若将它比作操
作数,则立即
寻址是直接可
见小熊。
讲解中以源操作数为例
(1)立即寻址方式
微机原理例:MOV AX,1234H;AX←1234H
微机原理
直接寻址:操作数的有效地址(段内偏移地址)直接出现在指令中。
例:MOV AX,[3700H];AX ←(DS ×16+3700H)
(2)直接寻址方式
礼物小熊放在礼品店中,
店的号为3700H,所在
路为“人民路”。
微机原理
寄存器寻址:操作数存放在CPU 内部的寄存器中。
例:MOV AX ,BX ;AX←BX (3)寄存器寻址方式
礼物小熊放在礼
品合中,无法直
接看到。
微机原理寄存器间接寻址:有效地址包含在基址寄存器BX 、BP 或变址寄存器SI 、DI 中。
例:MOV AX ,[BX]
(4)寄存器间接寻址方式礼品店号:3700H
礼品店路段:DS
礼物小熊放在礼品店中,店号放在寄存器中,
所在路段由寄存器默认给出,BP对应为SS段,
其余为DS段。
微机原理寄存器相对寻址:有效地址由SI 、DI 、BX 或BP 之一的内容,加上指令中8位或16位相对地址构成。
例:MOV AX ,02H[SI]或写成MOV AX,[SI+02H]
(5)寄存器相对寻址方式1部分店号:3700H 礼品店路段:DS
偏移量礼物小熊放在礼品店
中,店号由寄存器内
容加上偏移量构成,
所在路段DS给出。
微机原理基址变址寻址:操作数的有效地址等于一个基址寄存器的内容和一个变址寄存器的内容之和。
基址寄存器:BX、BP址寄存器:SI、DI
例:MOV AX,[BX][DI]
也可写成MOV AX,[BX+DI]
(6)基址变址寻址方式
3700H0004H
DS
礼物小熊放在礼品店中,店号由2个寄存
器内容相加所得,所在路段DS给出。
)相对基址变址寻址方式
(7
微机原理
相对基址变址寻址:操作数
的有效地址等于一个基址寄
存器的内容、一个变址寄存
器的内容和一个8位或16位的
位移量之和。
例:MOV AX,[BX+SI+06H]
微机原理下次课见。