1 8086 8088寻址方式
- 格式:pdf
- 大小:580.58 KB
- 文档页数:13
第三章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位的位移量与一个基址寄存器或变址寄存器的内容之和。
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区域,栈底地址较大,栈顶地址叫小。
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接口之间数据的传递。
可按字节或字进行数据传送。
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/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字节的段内寻找操作数。
直接寻址的操作数通常是程序使用的变量。
微机原理第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]
微机原理下次课见。