关于8086寻址方式
3个回答
展开全部
1.
寻址方式概念
寻址方式
是指在指令中用以说明操作数所在地址(位置)的方法。
段超越
不是按照系统的约定,而是在指令中指定某一段寄存器作为存储器操作数的段地址。
[注]8086/8086指令系统对存储单元的访问,其段地址都是从系统事先约定好的段寄存器中获取,若不遵循系统的约定,则要制定段寄存器,即段超越。
2.
与操作数有关的寻址方式
(1)立即寻址方式:操作数含在指令代码中,由指令直接给出。
例如:MOV
AL,50
MOV
BX,1000H
(2)寄存器寻址方式:指令中指定某个寄存器的内容作为操作数。
例如:MOV
AL,BL
ADD
AL,5
MOV
DATA,AL
(3)直接寻址方式:指令中直接给出操作数的地址(偏移地址)。
例如:MOV
AL,[100H]
MOV
BX,ES:[100H]
MOV
DATA,-1
MOV
BYTE
PTR[1000H],0
(4)寄存器间接寻址方式:指令中指定某个寄存器(SI、DI、BX、BP)中的一个内容作为操作数的地址(偏移地址)。
例如:MOV
AX,[BX]
MOV
[BP],AL
MOV
DS:[BP],AX
MOV
WORD
PTR[SI],-1
(5)寄存器相对寻址方式:指令中指定某寄存器内容与一个位移量相加作为操作数的地址(偏移地址)。
例如:MOV
AX,[SI+2]
MOV
[BP-6H],AL
ADD
BYTE
PTR[BX+10H],5
MOV
BX,DATA[SI]
MOV
DATA[BP],0
(6)基址变址寻址方式:指令中,指定一变址寄存器内容与基址寄存器内容相加作为操作数的地址。
例如:MOV
AL,[BX+SI]
MOV
[DI+BX],DX
ADD
[BP+SI],AL
寻址方式概念
寻址方式
是指在指令中用以说明操作数所在地址(位置)的方法。
段超越
不是按照系统的约定,而是在指令中指定某一段寄存器作为存储器操作数的段地址。
[注]8086/8086指令系统对存储单元的访问,其段地址都是从系统事先约定好的段寄存器中获取,若不遵循系统的约定,则要制定段寄存器,即段超越。
2.
与操作数有关的寻址方式
(1)立即寻址方式:操作数含在指令代码中,由指令直接给出。
例如:MOV
AL,50
MOV
BX,1000H
(2)寄存器寻址方式:指令中指定某个寄存器的内容作为操作数。
例如:MOV
AL,BL
ADD
AL,5
MOV
DATA,AL
(3)直接寻址方式:指令中直接给出操作数的地址(偏移地址)。
例如:MOV
AL,[100H]
MOV
BX,ES:[100H]
MOV
DATA,-1
MOV
BYTE
PTR[1000H],0
(4)寄存器间接寻址方式:指令中指定某个寄存器(SI、DI、BX、BP)中的一个内容作为操作数的地址(偏移地址)。
例如:MOV
AX,[BX]
MOV
[BP],AL
MOV
DS:[BP],AX
MOV
WORD
PTR[SI],-1
(5)寄存器相对寻址方式:指令中指定某寄存器内容与一个位移量相加作为操作数的地址(偏移地址)。
例如:MOV
AX,[SI+2]
MOV
[BP-6H],AL
ADD
BYTE
PTR[BX+10H],5
MOV
BX,DATA[SI]
MOV
DATA[BP],0
(6)基址变址寻址方式:指令中,指定一变址寄存器内容与基址寄存器内容相加作为操作数的地址。
例如:MOV
AL,[BX+SI]
MOV
[DI+BX],DX
ADD
[BP+SI],AL
上海巴鲁图工程机械科技有限公司_
2022-05-15 广告
2022-05-15 广告
光电编码器,是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量的传感器。光电编码器每转输出60(我们用老板没有说)个脉冲,五线制。其中两根为电源线,三根为脉冲线(A相、B相、Z)。电源的工作电压为 (+5~+24V)直流电源。光...
点击进入详情页
本回答由上海巴鲁图工程机械科技有限公司_提供
展开全部
8086一共有7种寻址方式~~
1立即寻址
就是
指令中的操作数在操作码的后面
例如
MOV
AL,09H
2寄存器寻址
指令的操作数存放在寄存器里
例如
MOV
AX,BX
3直接寻址
例如
MOV
AL,[0005]
3寄存器间接寻址
MOV
AL,[BX]
4相对基址寻址
MOV
AL,[BX]+1
或是MOV
AL,[BX+1]在或是
MOV
AL,1[BX]
5相对变址寻址
MOV
AL,[DI]+1.....
6基址变址寻址
MOV
AL,[BX]+[DI]+1
.....
1立即寻址
就是
指令中的操作数在操作码的后面
例如
MOV
AL,09H
2寄存器寻址
指令的操作数存放在寄存器里
例如
MOV
AX,BX
3直接寻址
例如
MOV
AL,[0005]
3寄存器间接寻址
MOV
AL,[BX]
4相对基址寻址
MOV
AL,[BX]+1
或是MOV
AL,[BX+1]在或是
MOV
AL,1[BX]
5相对变址寻址
MOV
AL,[DI]+1.....
6基址变址寻址
MOV
AL,[BX]+[DI]+1
.....
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是指CPU在执行指令时寻找操作数或操作数地址的方式。
1.
立即寻址:直接放在指令中的常数称为立即数,立即数只能是源操作数,立即数存放在指令操作码之后的存储单元中。
例:MOV
AL,50H
2.
寄存器寻址:存放在寄存器中的数据为操作数,寄存器操作数可以是源操作数,也可以是目的操作数。
例:MOV
AL,BL
以下寻址方式3~8,操作数都在存储器中。存储器操作数具有类型属性,如字节(BYTE)、字(WORD)、双字(DWORD)等,反映了数据占用存储单元的字节数,指令书写中,约定用方括号内容表示存储器操作数的偏移地址;用类型名
PTR
偏移地址的形式说明指令中存储器操作数的类型,例:WORD
PTR
[1000H];用变量名DB/DW/DD数据序列的形式分别定义具有“变量名”的字节、字或双字存储器操作数,如BUF
DB
10H,20H。
3.
存储器寻址
(1)直接寻址:存储器操作数的16位偏移地址直接包含在指令的方括号中。
例:MOV
AL,[1000H]
约定由DS提供段地址
MOV
AL,CS:[1000H]
;段超越,由CS提供段地址
MOV
AL,SS:[1000H]
;段超越,由SS提供段地址
(2)寄存器间接寻址:操作数所在的存储单元的偏移地址放在指令给出的寄存器中。可用于这种寻址方式的寄存器只能是SI、DI、BP和BX。其中,SI、DI、BX约定的段寄存器是DS,而BP约定的段寄存器SS。
例:MOV
AX,[SI]
;AX←DS:[SI]
MOV
[BX],AX
;DS:[BX]←AX
(3)基址寻址:操作数的有效地址是指令给定的位移量(8位或16位)与BX、BP内容之和,段寄存器约定同寄存器间接寻址,允许段超越。
例:MOV
AX,[BX+3AH]
;AX←DS:[BX+3AH]
MOV
[BP+4EB3H],AX;SS:[BP+4EB3H]←AX
(4)变址寻址:操作数的有效地址是指令给定的位移量与寄存器SI或DI内容之和,段寄存器约定在DS中,允许段超越。
例:MOV
[DI+12H],AX
;DS:[DI+12H]
←AX
MOV
BX,SS:[DI+45H]
;BX←SS:[DI+45H]
(5)基址变址寻址:操作数的有效地址是指令给定的位移量和一个基址寄存器(BX或BP)及一个变址寄存器(SI或DI)的内容之和,段寄存器约定由基址寄存器决定,若为BX,段寄存器约定为DS;若为BP,段寄存器约定为SS,允许段超越。
例:MOV
BX,[DI+BP+45H]
;BX←SS:[DI+BP+45H]
MOV
AX,ES:[SI+BX+76H];AX←ES:[SI+BX+76H]
注意:基址寄存器BX和BP不能同时出现在一个方括号内,变址寄存器DI和SI亦如此。
(6)串寻址:用于数据串操作指令,它隐含地运用:SI指出源串偏移地址,DI指出目的串偏移地址,指令执行后,SI和DI的内容自动加1或减1(操作数为字节类型时)、加2或减2(操作数为字类型时);约定源串段地址在DS中,目的串段地址在ES中。不允许段超越。
例:MOVSB
;ES:[DI]
←DS:[SI],SI←SI
1,DI←DI
1
MOVSW
;ES:[DI]
←DS:[SI],SI←SI
2,DI←DI
2
(7)端口寻址:操作数在外设端口中。
直接端口寻址:指令中直接给出的8位常数是外设端口地址。
例:IN
AL,34H
;AL←[34H]
OUT
34H,AL
;[34H]←AL
间接端口寻址:指令中外设端口的16位地址在DX中。
例:MOV
DX,280H
IN
AL,DX
;AL←[280H]
OUT
DX,AL
;[280H]←AL
(8)隐含寻址:指令中没有给出操作数,但却隐含在固定对象中。
例:AAA
;隐含对AL操作,
1.
立即寻址:直接放在指令中的常数称为立即数,立即数只能是源操作数,立即数存放在指令操作码之后的存储单元中。
例:MOV
AL,50H
2.
寄存器寻址:存放在寄存器中的数据为操作数,寄存器操作数可以是源操作数,也可以是目的操作数。
例:MOV
AL,BL
以下寻址方式3~8,操作数都在存储器中。存储器操作数具有类型属性,如字节(BYTE)、字(WORD)、双字(DWORD)等,反映了数据占用存储单元的字节数,指令书写中,约定用方括号内容表示存储器操作数的偏移地址;用类型名
PTR
偏移地址的形式说明指令中存储器操作数的类型,例:WORD
PTR
[1000H];用变量名DB/DW/DD数据序列的形式分别定义具有“变量名”的字节、字或双字存储器操作数,如BUF
DB
10H,20H。
3.
存储器寻址
(1)直接寻址:存储器操作数的16位偏移地址直接包含在指令的方括号中。
例:MOV
AL,[1000H]
约定由DS提供段地址
MOV
AL,CS:[1000H]
;段超越,由CS提供段地址
MOV
AL,SS:[1000H]
;段超越,由SS提供段地址
(2)寄存器间接寻址:操作数所在的存储单元的偏移地址放在指令给出的寄存器中。可用于这种寻址方式的寄存器只能是SI、DI、BP和BX。其中,SI、DI、BX约定的段寄存器是DS,而BP约定的段寄存器SS。
例:MOV
AX,[SI]
;AX←DS:[SI]
MOV
[BX],AX
;DS:[BX]←AX
(3)基址寻址:操作数的有效地址是指令给定的位移量(8位或16位)与BX、BP内容之和,段寄存器约定同寄存器间接寻址,允许段超越。
例:MOV
AX,[BX+3AH]
;AX←DS:[BX+3AH]
MOV
[BP+4EB3H],AX;SS:[BP+4EB3H]←AX
(4)变址寻址:操作数的有效地址是指令给定的位移量与寄存器SI或DI内容之和,段寄存器约定在DS中,允许段超越。
例:MOV
[DI+12H],AX
;DS:[DI+12H]
←AX
MOV
BX,SS:[DI+45H]
;BX←SS:[DI+45H]
(5)基址变址寻址:操作数的有效地址是指令给定的位移量和一个基址寄存器(BX或BP)及一个变址寄存器(SI或DI)的内容之和,段寄存器约定由基址寄存器决定,若为BX,段寄存器约定为DS;若为BP,段寄存器约定为SS,允许段超越。
例:MOV
BX,[DI+BP+45H]
;BX←SS:[DI+BP+45H]
MOV
AX,ES:[SI+BX+76H];AX←ES:[SI+BX+76H]
注意:基址寄存器BX和BP不能同时出现在一个方括号内,变址寄存器DI和SI亦如此。
(6)串寻址:用于数据串操作指令,它隐含地运用:SI指出源串偏移地址,DI指出目的串偏移地址,指令执行后,SI和DI的内容自动加1或减1(操作数为字节类型时)、加2或减2(操作数为字类型时);约定源串段地址在DS中,目的串段地址在ES中。不允许段超越。
例:MOVSB
;ES:[DI]
←DS:[SI],SI←SI
1,DI←DI
1
MOVSW
;ES:[DI]
←DS:[SI],SI←SI
2,DI←DI
2
(7)端口寻址:操作数在外设端口中。
直接端口寻址:指令中直接给出的8位常数是外设端口地址。
例:IN
AL,34H
;AL←[34H]
OUT
34H,AL
;[34H]←AL
间接端口寻址:指令中外设端口的16位地址在DX中。
例:MOV
DX,280H
IN
AL,DX
;AL←[280H]
OUT
DX,AL
;[280H]←AL
(8)隐含寻址:指令中没有给出操作数,但却隐含在固定对象中。
例:AAA
;隐含对AL操作,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询