80X86寻址方式

寻址方式指指令中操作数的表示方式

//缩写对照

i: immediate

r/reg:register

m/ mem : memory

LA:LOGICAL ADDRESS

EA: EffectiveAddress

PA: physicaladdress

1、立即寻址

MOV AX,1023H

指令中给出操作数(整数或表达式,以字母开头的16进制数前必须以数字0作为前缀)

2、寄存器寻址

MOV AX,BX

MOV DS,AX

寄存器内操作,速度快

对应的位数要一致

两个操作数不能同为段寄存器

目的操作数不能是代码段寄存器

3、存储器寻址(MEMORY ADDRESSING)

//段的起始地址形式为xxxx0H,称为段基址。前16位为段基值,存放在段寄存器中。

寻址三步:求址、取值、赋值

 

直接寻址(Direct Addressing)[ i] 如[2000H] ;

(默认在数据段DS,有的汇编要指定段,如:DS:[2000H])

寄存器间接寻址(Register Indirect Addressing)[ R ] 

 

4种:[BX]、[BP]、[SI]、[DI] ([BP]没有,也不算错。寄存器中存放地址)

寄存器相对寻址(Register Relative Addressing)[Ri] 

4种:[BX+i]、[BP+i]、[SI+i]、[DI+i]

基址变址寻址(Base Indexed Addressing)[R1R2]

4种:[BX+SI]、[BX+DI]、[BP+SI]、[BP+DI]

基址变址相对寻址(Relative Based Indexed Addressing)[R1R2i] 

 

4种:[BX+SI+i]、[BX+DI+i]、[BP+SI+i]、[BP+DI+i](EA是一个基址寄存器内容,一个变址寄存器内容和一个8位或16位的位移量Disp8或Disp16三部分之和。自由度最多,最灵活)

示例:

MOV AX, 2000H

MOV DS, AX     //立即数赋值DS没有对应机械码

MOV AX,[0130H]   //默认数据段PA=DSX10H+EA

取16位数,当前地址对应低八位,地址加1对应高八位

 4、端口寻址

专用指令IN OUT​

端口直接寻址;​(0 ~ FFH)

外设端口的地址以8位立即数的形式直接出现在指令中

例:IN AL,36H   ; 从36H端口输入一个八位数据到AL寄存器

端口间接寻址:

寄存器只能用DX​

外设端口的地址先存入DX寄存器,然后再出现在指令中(端口地址超过8位必须间接寻址)

例:OUT DX,AL 将AL的内容送至DX给出的I/O口

5、其他寻址

隐含寻址:(隐含了操作数)

如:DAA;(隐含操作数:AL)

MOVSW;(隐含操作数:[SI],[DI])

转移寻址:(给出转移地址,如:JMP LCALL m 

段内直接寻址:IP ←IP+i;(i补码)

段内间接寻址:IP←r 或I P←m ;(需2个字节)

段间直接寻址:CS:IP ←L;(L远标号)

段间间接寻址:CS:IP ←m;(需4个字节)

 

 

 


 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值