03 8088(8086)的寻址方式
第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的寻址方式
[工学]第三章 8086的寻址方式和指令系统
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]
1 8086 8088寻址方式
微机原理第3章8086/8088指令系统寻址方式微机原理指令:计算机执行某种特定操作的二进制编码。
比如:101110000011010000010010就是1条将数1234H送至AX的指令;再如:000001010011010000010010是1条将数1234H与AX的内容相加,和送至AX的指令。
指令包含操作码和操作数。
1.术语1011100000000101微机原理操作码:指明指令所要完成的操作类型。
指令例子中的黄色部分就表示操作码。
操作数:指明参加操作的对象。
汇编语言中操作码采用助记符表示,操作数可用符号表示。
MOV AX,1234HADD AX,1234H1.术语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段。
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区域,栈底地址较大,栈顶地址叫小。
第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
第三章 8086的寻址方式
8086/8088指令概述
操作数的一般形式: 3、存储器操作数:这类操作数是指定存储单元 的内容或该单元的地址.
例1:MOV DS:[1000H], AL 其意义是将AL的内容送存储器数据段中偏移地址为 1000H的单元中去。
例2: 若指令改写为MOV AL,DS: [1000H]
指令意义为将数据段中偏移地址为 1000H 单元中的 内容送AL寄存器。前者指的是存储单元的地址,后者指 的是存储单元的内容
22
3.1 寻址方式
直接寻址: 符号地址:
8086/8088指令寻址方式
例3 :AREA1 EQU 0867H ; 等值伪指令EQU给常数0867H定义 一个符号AREA1 MOV AX,AREA1 ;AX=0867H 例4:AREA1 DW 0867H ;DW伪指令用来定义变量,
变量用来表示存储器中的数据。变量名AREA1表示内存中 一个数据区的名字,也就是符号地址,该地址单元存放一个字 数据0867H。 MOV AX,AREA1 ;
4、隐含操作数:这类操作数被操作助记符隐含着。 如,对压缩BCD加法结果进行调整的DAA,其操 作数就是隐含操作数AL。
5 、I/O端口操作数:可以作源操作数或目的操作数。 (I/O端口地址,可以直接或寄存器间接给出)
如: IN AL, 44H
OUT 量和常量三个概念:
例如:MOV AX,BX
3
8086/8088指令概述
例如:MOV AX,BX
用 MOV表示进行数据传送的操作码,用 AX、 BX表示操作数, 显然这样的表示方式更清晰,更便于记忆和使用。 用符号、助记符书写的指令称为符号指令。用符号指令书写程 序的规范称为汇编语言,对应的程序称为汇编语言源程序。
第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)。
第二章 80868088寻址方式和指令系统
65536个字节单元的存储容量就是64K,
其地址编号的范围用十六进制数表示为:0~FFFFH。如下所示: 0000,0001,0002,0003,……0009,000A,000B,000C,000D,000E,000F, 0010,0011,……, 0019,001A,001B,001C,001D,001E,001F,
1、立即寻址方式
操作数就包含在指令中,它作为指令的一部分, 跟在操作码 后存放在代码段。 这种操作数称为立即数。 立即数可以是8位的可以是16位的。 如果立即数是16位的按‘高高低低的原则。 例如:指令:MOV AX,1234H 的存储和执行情况如下图:
AH AL
AX 12 34
存储器
… OP 34 12 … 指令 代码段
对于8位操作数,寄存器可以是:
AL、AH、BL、BH、CL、CH、DL、DH。
这种寻址方式由于操作数就在寄存器中,不需要访问存储器来取得操作数, 因而可以取得较高的运算速度。
其中:存储单元的物理地址是12345H, 标出的:两个重叠段的段值分别是:1002H和1233H, 在对应段内的偏移分别是2325H和0015H。
采用段值和偏移构成逻辑地址后,段值由段寄存器给出,偏移可由指令指针IP、堆栈指针SP 和其他可作为存储器指针使用的寄存器(SI、DI、BX和BP)给出,偏移还可直接用16位数给 出。
但IBM PC机对段的起始地址有所限制,段不能起始于任意地址,而必须从任一小段的首地址 开始。
机器规定:从0地址开始,每16个字节为一小段(16的倍数),
下面列出了存储器最低地址区的三个小段的地址区间,每行为一小段。
00000,00001,00002,…, 0000E,0000F; 00010,00011,00012,…, 0001E,0001F; 00020,00021,00022,…, 0002E,0002F; ………… 第一列就是每个小段的首地址。其特征是:在16进制表示的地址中,最低为0(即20位地址 的低4位为0)。 在1M字节的地址空间里,共有64K个小段首地址,可表示如下: 00000H 00010H …… 41230H 41240H …… FFFE0H
8086及8088指令系统1(寻址方式)
助记符
数据传送 MOV,PUSH/POP,XCHG等
8088/8086的操作数分为 类 的操作数分为4类 的操作数分为
操作数
数据(立即数) 数据(立即数) 地址: 寄存器(名称 存储器单元(地址) 名称)、 地址 寄存器 名称 、存储器单元(地址) I/O接口的端口(地址) 接口的端口( 接口的端口 地址)
3、存储器操作数
表示当前参加运算的数存放在存储器的某1/2/4个单元中 个单元中 表示当前参加运算的数存放在存储器的某
类型
字节 存储器操作数 字 双字
存储单元个数
1 2 4
11
一般不允许两个操作数同时为存储器操作数 一般不允许两个操作数同时为存储器操作数 不允许两个
存储单元的物理地址 存储单元的物理地址 = 段基地址×16 + 偏移地址
15
3.2
8086的寻址方式 8086的寻址方式
寻址方式——寻找操作数的方法 寻址方式 寻找操作数的方法
寻找操作数的地址(一般指源操作数) 寻找要执行的下一条指令的地址 在8086指令系统中,操作数所在地址的寻址 方式可分为8种:
①立即寻址 ②直接寻址 ③寄存器寻址 ④寄存器间接寻址 ⑤ 寄存器相对寻址 ⑥基址-变址寻址 ⑦相对的基址-变址寻址 ⑧隐含寻址
,立即 存放在
存的
码 中18
3.2.3 寄存器寻址
操作数放在某个寄存器中 源操作数与目的操作数字长要相同 寄存器寻址与段地址无关 例: MOV MOV MOV 错误例: 错误例: × MOV × MOV AX, BX [3F00H], AX CL, AL AX, BL ES: AX, DX ; 字长不同 ; 寄存器与段无关
8088/8086指令系统 指令系统: 指令系统 系列) (1)指令向后兼容(x86系列) )指令向后兼容( 系列 (2)应用广泛,资料易于寻找 )应用广泛,
汇编语言程序设计 第3章 8086 8088寻址方式和指令系统
以 MOV 指令为例:
•立即寻址 •寄存器寻址 •直接寻址 MOV AX , 3069H MOV AL , BH MOV AX , [ 2000H ] MOV AX , [ BX ]
•寄存器间接寻址
•寄存器相对寻址
•基址变址寻址
MOV AX , COUNT [ SI ]
MOV AX , [ BP ] [ DI ]
–一方面,会影响处理器执行指令的速度和效率 –另一方面,对程序设计也很重要
寻址方式 与数据有关的寻址方式 与转移地址有关的寻址方式
MOV指令
2013-12-10
第3章
8086/8088寻址方式和指令系统
10
安徽工业大学
网络工程系
《汇编语言程序设计》
3.2 8086/8088寻址方式 3.2.1 与数据有关的寻址方式
第3章 8086/8088寻址方式和指令系统
6
2013-12-10
安徽工业大学
网络工程系
《汇编语言程序设计》
操作码
操作数1,操作数2
;注释
• 操作数2,常被称为源操作数src,它表示参与指 令操作的一个对象 • 操作数1,成被称为目的操作数dest,它不仅可以 作为指令操作的一个对象,还可以用来存放指令 操作的结果 • 分号后的内容是对指令的解释
操作数 n
2013-12-10
第3章
8086/8088寻址方式和指令系统
12
安徽工业大学
3.2
网络工程系
《汇编语言程序设计》
8086/8088寻址方式
3.2.1
与数据有关的寻址方式
【例】 MOV AX, 4576H
执行后(AX)=?
该例中源操作数为立即寻址方式,立即数为4576H,存放 在指令的下一单元。 执行:4576H→AX
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)。
一、 8088的指令格式 二、汇编语言 三、操作数存在方式 四、有效地址 五、寻址方式
一、 指令格式: 指令的一般格式为:
操作码 操作数 , 操作数
操作码 —— 告诉计算机要执行的操作是什么,如:加、减、逻辑与等。 操作数 —— 执行操作过程所要操作的数,如加运算的两个加数。
上指令中包含的8位或16位位移量。
五、寻址方式
EA的组成不同,寻找其中的操作数的方式也随之不同。如何寻找操作 数的有效地址,进而找到所需操作数的方式就是寻址方式
因为EA的组成方式都体现在指令中,故寻址方式也可以说是在指令中获 得操作数所在地址的方法。
1.立即寻址方式 2.寄存器寻址 3.直接寻址方式 4.寄存器间接寻址 5.寄存器相对寻址 6.基址加变址寻址 7.相对基址加变址寻址
1.立即寻址方式 这种寻址方式
所提供的操作数直 接放在指令中,紧 跟在操作码的后面 ,与操作码一起放 在码段区域中。立 即数可以是8位的 ,也可以是16位.
立即寻址主要 是用来给寄存器赋 初值.
2.寄存器寻址
操作数包含在 CPU的内部寄存器 中,例如寄存器AX 、BX、SI、DI等, 虽然操作数可在 CPU的内部通用寄 存器的任一个中, 且它们都能参与算 术运算和逻辑运算 并存放运算结果。 但是,AX是累加器 ,若结果是存放在 AX中,则通常指令 要更短些,更紧凑 些。
二、汇编语言
汇编语言是一种符号语言,它用: 助记符——表示操作码; 符号或符号地址——表示操作数或操作数地址.
三、操作数存在方式
在微型计算机中,操作数可能以以下三种方式存在: • 操作数包含在指令中——即指令的操作数部分就包含着操作数本身。
MOV AX, 1234 ; ADD AL, 2 • 操作数包含在CPU的某一个内部寄存器中 —— 这时指令中的操作数是CPU内部的某一个寄存器 MOV DS, AX • 操作数在内存的数据区中—— 这时指令中的操作数包含着此操作数的地址 MOV AX,[2000] ; MOV buffer[SI],AX
四、有效地址
8088的内存地址 : 段地址
存放在 CS DS ES SS 中
+ 段内偏移量。
存放 在 BX、BP、SI、DI 中 , 或 直接地址 如 [3000H]中, 或 上述形式的组合中。
段内偏移量可以由几部分组成,组成后的地址称为有效地址 EA。
EA可以由以下各种情况构成:
• 直接地址 —— 包含在指令中的16位地址偏移量。
3.直接寻址方式
操作数的地址的 16位偏移量直接包含 在指令中,它与操作 码一起在码段区域中 ,但操作数一般在数 据段区域中,它的地 址为数据段寄存器 DS 加 上 它 的 16 位 地 址偏移量。
指 令 中 的 16 位 地址偏移量是低位字 节在前,高位字节在 后。
这种寻址方法,是 以数据段寄存器的地 址为基础,可在多达 64K字节的范围内寻 找操作数。
例:MOV AX,[BP]
5.寄存器相对寻址 又称变址寻址。
所谓变址寻址即以基 准寄存器BX、BP、 SI 、 DI 加 上 给 定 的 8 位或16位偏移量作为 操作数的有效地址。 段地址规则同上。
例:
MOV AX,MASK[SI]
6.基址加变址寻址
基址加变址寻址即 以某一基地址寄存器( 通常为BX、BP)的内 容,加上某 一变址寄存 器(通常为SI,DI)的 内容,形成操作数的有 效地址。段地址规则同 上。
例:
MOV AX, [X][SI]
7.相对基址加变址寻址
相对基址加变址寻 址即以某一基地址寄存 器(通常为BX、BP)的 内容,加上某 一变址寄 存器(通常为SI,DI) 的内容,再加上给定的8 位或16位偏移量,形成 了操作数的有效地址。
段地址规则同上。
例:
MOV AX,MASK[BX][SI]
• 间接地址—— 由CPU内部某个16位寄存器的内容决定,如 BX、BP、SI、DI。
• 基址—— 基址寄存器BX或BP加上指令中包含的8位或16位位移量。
• 变址—— 变址寄存器SI或DI加上指令中包含的8位或16位位移量。 • 基址加变址—— 由一个基址寄存器BX或BP加上一个变址寄存器SI或DI,再加
4.寄存器间接寻址
在这种寻址方式中, 操作数是在存储器中, 但是,操作数的地址的 16位偏移量包含在以下 四个寄存器SI、DI、BP 、BX之一中。这又可分 成两种情况:
1、 BX、SI、DI间址 时以DS为默认段地址;
例:MOV AX,[SI]
2 、 BP 间 址 时 以 SS 为 默认段地址。