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区域,栈底地址较大,栈顶地址叫小。
第5章 8086 8088的指令系统

8086/8088的指令系统5.1.1 8086/8088的寻址方式指令中用以说明操作数所在地址的方法称为寻址方式。
8086/8088的操作数可以放在寄存器、存储器或I/O 接口中,也可以立即数方式放在指令代码中。
在转移类指令中的寻址方式是要寻找转移新地址。
8086/8088 CPU 内部提供的寄存器资源均为16位,而实际的物理地址需要20位,这就给它的寻址方式带来复杂性。
8086/8088 CPU 共有7种寻址方式,它们是立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、寄存器相对寻址、基址变址寻址和相对基址变址寻址。
寻址方式中找到的地址是指令所需的偏移地址(或称有效地址EA )。
此处仅对今后三种寻址方式加以说明。
1. 寄存器相对寻址操作数在存储单元中,有效地址是一个8位或16位的位移量与一个基址或变址寄存器的内容之和,位移量和寄存器均由指令给出,段地址则依使用寄存器不同而不同。
可表示为2. 基址变址寻址操作数在存储单元中,有效地址是一个基址寄存器和一个变址寄存器的内容之和,可表示为()()()()BX SI EA BP DI ⎡⎤⎡⎤=+⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦段寄存器则根据所使用基址寄存器而定(默认段)。
3. 相对基址变址寻址操作数在存储单元中,有效地址是一个8位或16位的位移量、一个基址寄存器和一个变址寄存器三部分之和,可表示为:()()()()816BX SI EA BP DI ⎡⎤⎡⎤⎡⎤=++⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦⎣⎦位偏移量位偏移量 段寄存器为DS(对BX 而言)或SS(对BP 而言)。
学习指令系统除弄清楚每类指令的作用外,懂得了寻址方式有利于掌握指令系统。
()()()()816BX BP EA SI DI ⎡⎤⎢⎥⎡⎤⎢⎥=+⎢⎥⎢⎥⎣⎦⎢⎥⎢⎥⎣⎦位偏移量位偏移量5.1.2 数据传送指令数据传送指令用于实现寄存器阵列间、存储器、累加器、I/O接口之间数据的传递。
可按字节或字进行数据传送。
第3章 8086 8088指令系统和寻址方式

第3章 指令系统和寻址方式
3.1 概述 3.2 数据寻址方式 3.3指令格式及指令执行时间 3.4 8088/8086 CPU的指令系统
3.1 指令系统概述
指令是计算机能够识别和执行的指挥计算机进行操作的命
令。指令系统是指微处理器能执行的各种指令的集合。
程序是指令的有序集合,指令是程序的组成元素,通常一
演示
3.2 数据寻址方式
2. 寄存器间接寻址方式
在计算机中通常将BX、BP称为基址寄存器,SI、DI称为
变址寄存器,寻址时操作数的地址被放在这些寄存器中。
寄存器间接寻址方式在汇编格式中表示为
[基址寄存器名或变址寄存器名]
【例】
MOV AX, [BX]
;AX←DS:[BX]
演示
3.2 数据寻址方式
直接寻址方式是指寻找的操作数的地址在指令中直接给出。 这种寻址方式在汇编格式中表示为 ● 操作码 地址表达式 (或[地址表达式]) ● 操作码 [数字表达式]
3.2 数据寻址方式
【例】
MOV AX, [2000H];AX←DS:[2000H] MOV AX, ES: [2000H] ;AX←ES:[2000H]
MOV AX, 0102H
;AX←0102H
演示
3.2 数据寻址方式
3.2.2 寄存器寻址方式
寄存器寻址是指寻找的操作数在某个寄存器中。 格式: 操作码 寄存器名
比如AL,BX,CX,DS、IP等等。 【例】
MOV AX, BX
;AX←BX
演示
3.2 数据寻址方式
3.2.3 存储器寻址方式
1. 直接寻址方式
若(CS)=5200H 时,物理转移地址为 B230H,则当CS 的内容被设定为7800H, 物理转移地址应为多少? =9230H 78000H +9230H=81230H。
8086-8088 CPU的寻址方式

MOV AX,ES:[VALUE]
微机原理
1.3 寄存器寻址方式 寄存器寻址:操作数存放在CPU内部的寄存器中 例 :MOV AX,DX ; AX←DX 1.4 寄存器间接寻址 寄存器间接寻址:有效地址包含在基址寄存器 BX、BP或变址寄存器SI、DI中直接寻址 例 MOV AX,[BX]
MOV AX,[BP] 1.5 寄存器相对寻址 寄存器相对寻址方式:有效地址在SI、DI、BX 或BP之一,加上指令中8位或16位相对地址 例 MOV AL,ADDR[SI]
微机原理
1.6 转移类指令的寻址方式 1.段内相对转移寻址 有效地址EA为当前IP寄存器内容与指令中指定 的8位或16位有符号数之和 例:JZ DISP 其中DISP是符号地址 2.段内间接转移寻址 有效地址EA为寄存器或存储器单元的内容,这 种寻址方式不能用于条件转移指令。 例:JMP CX
微机原理
微机原理
1.6 基址变址寻址方式 操作数的有效地址等于一个基址寄存器的内容 和一个变址寄存器的内容之和 基址寄存器:BX、BP 变址寄存器:SI 、DI
MOV AX,[BX] [DI] 也可写成 MOV AX,[BX+DI] 1.7 相对基址变址寻址方式 操作数的有效地址等于一个基址寄存器的内容、 一个变址寄存器的内容和一个8位或16位的位移 量之和。 MOV AX,ADDR[BP+SI]
3.1 80868088CPU的寻址方式

ES,CS,SS
偏移地址
IP SP
有效地址
BP间址方式的数据存取
字符串处理指令(源串) 字符串处理指令(目的串)
SS
DS ES
ES,CS,DS
无 无
有效地址
SI DI
3.1.2
与数据有关的寻址方式
操作码
DS
操作码
偏移地址低字节
偏移地址高字节
3000
00H
+ 1000
10H
代 码 段
31000 31000H
DS BX SI COUNT
3000 2000 2000
+ 0010
34010 34010H AX
AH AL
操作码 10H 00H 69H
代 码 段
数 据 段
8FH
MOV AX,10H[BX][SI]
AX AH AL
代 码 段
06H
08H
数 据 段
MOV AX,[1000H]
SS
+
8000 1000
操作码 00H 10H
AL
代码 段
81000 81000H
AX AH
86H 89H
堆栈 段
MOV AX,SS:[1000H]
3.1.2
与数据有关的寻址方式
4.寄存器间接寻址
在寄存器间接寻址方式中,操作数存放在存储器中,而 操作数的偏移地址EA在指定的寄存器中,指令中给出寄
若用寄存器BP间接寻址,则操作数在堆栈段中,即用堆栈 段寄存器SS的内容左移四位,加上BP中的偏移地址EA形 成操作数的物理地址PA。
3.1.2
与数据有关的寻址方式
DS
SI
第4章 8086、8088指令系统和寻址方式

4.1.2 寻址方式
寻址方式:寻找操作数地址的方法。 寻址方式:寻找操作数地址的方法。 按照操作数的来源,寻址方式分为4 按照操作数的来源,寻址方式分为4种 类型: 类型: 立即数寻址 寄存器寻址 存储器寻址 外设型
数据寻址方式
立即寻址 寄存器寻址 直接寻址 寄存器间接寻址 寄存器相对寻址 基址加变址寻址 相对基址加变址寻址
第4章 8086/8088指令系统和寻址方式 8086/8088指令系统和寻址方式
4.1 8086/8088指令系统的寻址方式 指令系统的寻址方式 4.2 8086/8088指令码格式 指令码格式 4.3 8086/8088指令系统 8086/8088指令系统 4.4 80x86指令系统 指令系统
什么是指令系统
2、寄存器间接寻址
操作数的有效地址EA存放在基址寄存器 操作数的有效地址 存放在基址寄存器 存放在 BX、BP 或变址寄存器 、DI中,指令中 、 或变址寄存器SI、 中 给出的是BX、BP、 SI、DI 。 给出的是 、 、 、 MOV AL, [BX] MOV AL, ES:[BX]
返回
Байду номын сангаас
存储单元的 有效地址EA 有效地址 由寄存器给出
返回
一、立即寻址
例: MOV AL,100 AL, MOV BX,0100H BX, MOV AL,‘3’ ;立即数为字符 AL, MOV CX,N ;符号常量N在数据 CX, 符号常量N 段定义: ;段定义: N = 10
二、寄存器寻址
操作数存放在CPU内的某寄存器中, 操作数存放在CPU内的某寄存器中,指令 CPU内的某寄存器中 中给出存放操作数的寄存器。 中给出存放操作数的寄存器。
这条指令完成物理地址为11001H单元的 这条指令完成物理地址为11001H单元的 11001H 内容送(AL),物理地址为11002单元的 内容送(AL),物理地址为11002单元的 ),物理地址为11002 内容(AH)。 内容(AH)。
第3章80888086指令系统(老师用的课件哦)

第3章 8088/8086指令系统
图3.5 变址寻址示意图
第3章 8088/8086指令系统
例:MOV AX,200AH[SI];或(AX)←
[(DS)*16+(SI)+200AH
EA=(SI)
+200AH,SI为变址寄存器,200AH为16位的位移量。
图3.6为用BP寄存器进行变址寻址时的示意图。
第3章 8088/8086指令系统
3.存储器操作数 存储器操作数是把操作数放在存储器单元中。对这 类操作数,在指令中必须给出存储器的地址。存储器 的实际地址(也称物理地址)是由指定的段基址和段内地 址偏移量(也称为有效地址EA)所决定的。由于段基址 相对很少改变,故一般预先予以指定,以后通过隐含 方法使用,即只要段基址未改变,其在汇编指令中便 不再出现。此时,只给出有效地址EA(以各种寻址方式 给出)。
第3章 8088/8086指令系统
3.2 8088/8086指令系统
3.2.1 数据传送指令 1 .数据传送指令MOV 指令格式:MOV OPRD1,OPRD2 MOV 为操作码。 OPRD1为目的操作数,可以是寄存器、存储器、
累加器。
第3章 8088/8086指令系统
OPRD2为源操作数,可以是寄存器、存储器、累 加器和立即数。
第3章 8088/8086指令系统
4.寄存器间接寻址
寄存器间接寻址的操作数类型为存储器操作数,与 直接寻址方式的区别是:该存储单元的16位段内偏移 地址,不是从指令代码中直接得到,而是从指令所指 定的寄存器中得到。能用于间接寻址的寄存器为SI、 DI、BX、BP。若以SI、DI、BX进行间接寻址,应由 数据段DS的内容作为段基址,间接寻址寄存器的内容 为段内偏移量,并指定形成操作数的物理地址。若以 寄存器BP间接寻址,则BP中的内容为段内偏移量,段寄 存器SS与之一起形成物理地址。寄存器间接寻址示意 图如图3.4所示。
8086寻址方式及举例

8086寻址方式及举例8086寻址方式指的是在Intel 8086处理器中进行内存访问的方式。
8086寻址方式主要有以下几种:1. 直接寻址(Direct addressing):给出地址直接访问内存中的数据。
2. 寄存器寻址(Register addressing):使用寄存器中存放的地址进行内存访问。
3. 寄存器间接寻址(Register indirect addressing):使用寄存器中存放的地址作为内存地址的间接寻址方式。
4. 寄存器相对寻址(Register relative addressing):使用一个寄存器中存放的地址作为起始点,加上一个常数作为偏移量。
5. 基址加变址寻址(Base + index addressing):使用基址寄存器和变址寄存器相加得到内存地址。
6. 相对基址加变址寻址(Base + index + offset addressing):使用基址寄存器、变址寄存器和一个常数作为偏移量相加得到内存地址。
举例:1. 直接寻址: MOV AX, [1000H] 表示将内存地址为1000H的数据复制到AX寄存器中。
2. 寄存器寻址: MOV AX, BX 表示将BX寄存器中的数据复制到AX寄存器中。
3. 寄存器间接寻址: MOV AX, [BX] 表示将内存地址为BX寄存器中的数据所指向的内存单元中的数据复制到AX寄存器中。
4. 寄存器相对寻址: MOV AX, [BX+2] 表示将内存地址为BX寄存器中的数据加上2所得到的地址中的数据复制到AX寄存器中。
5. 基址加变址寻址: MOV AX, [BX+SI] 表示将基址寄存器BX和变址寄存器SI中的数据相加得到的地址中的数据复制到AX寄存器中。
6. 相对基址加变址寻址: MOV AX, [BX+SI+2] 表示将基址寄存器BX和变址寄存器SI中的数据相加得到的地址再加上2所得到的地址中的数据复制到AX寄存器中。
8086七种寻址方式

8086/8088七种寻址方式(一)8086/8088寄存器组(二)8086/8088寻址方式(1)立即寻址方式操作数就包含在指令中,它作为指令的一部分,跟在操作码后存放在代码段。
这种操作数称为立即数,立即数可以是8位的也可以是16位的,如果立即数是16位的按“高高低低”的原则。
例如指令:MOV AX,1234H的存储和执行情况如下图:图中指令存放在代码段中,OP表示该指令的操作码部分再例如:MOV AL,5 则指令执行行,(AL)=05HMOV BX,3064H 则指令执行后,(BX)=3064H(2)寄存器寻址方式操作数在CPU内部的寄存器中,指令指定寄存器号。
对于16位操作数,寄存器可以是:AX,BX,CX,DX,SI,DI,SP,和BP等:对于8位数,寄存器可以是:AL,AH,BL,BH,CL,CH,DL,DH。
这种寻址方式由于操作数就在寄存器中,不需要访问存储器来取得操作数,因而可以取得较高的运算速度。
例如:MOV AX,BX如指令执行前(AX)=3064H,(BX)=1234H;则指令执行后,(AX)=1234H,(BX)保持不变例如:MOV SI,AXMOV AL,DH(3)直接寻址方式操作数在寄存器中,指令直接包含有操作数的有效地址(偏移地址)。
操作数一般存放在数据段所以操作数的地址由DS加上指令中直接给出的16位偏移得到。
如果采用段超越前缀,则操作数也可含在数据段外的其他段中。
如下图所示:在汇编语言指令中,可以用符叼地址代替数值地址。
如:MOV AX,VALUE此时VALUE为存放操作数单元的符号地址。
如写成:MOV AX,[VALUE]也是可以的,两者是相等的。
如VALUE在附加段中,则应指定段超越前缀如下:MOV AX,ES:VALUE或MOV AX,ES:[VALUE]直接寻址方式常用于处理单个存储器变量的情况。
它可实现在64K字节的段内寻找操作数。
直接寻址的操作数通常是程序使用的变量。
- 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]
微机原理下次课见。