8051和x86寻址方式

 

 

1.立即寻址
立即寻址也称立即数,它是在指令操作数中直接给出参加运算的操作数,也就是存放在程序存储器中的常数,换句话说就是操作数(立即数)是包含在指令字节中的,其指令格式如下:
MOV A,#70  (注意51单片机中常数前边要加#)
MOV AX,1A2BH(8086汇编中不用加前缀)

2.直接寻址
指令操作数域给出的是参与运算操作数地址。直接寻址方式只能表示特殊功能寄存器、内部数据寄存器和位地址空间。其中特殊功能寄存器和位地址空间只能用直接寻址方式。也就是说特殊功能寄存器直接用就好了,比如给P1端口赋值,只能用MOV P1,#0,直接给地址送操作数就行。
ANL 70H,#48H (51单片机中表示内部数据存储器地址70H中的数直接和立即数48H相“与”,其中70H是直接地址。)
MOV AX,[2000H]   (8086汇编中2000H是数据在存储器中的16位偏移地址,这个偏移地址也被称为有效地址,操作数默认存储在数据段,但是可以进行段超越,在指令前加操作数限制前缀)
MOV BX,ES:[1000H],表示在附加段偏移地址为1000H

3.间接寻址
间接寻址采用在寄存器R0或R1前添加@符号来表示,表示将寄存器中的数作为直接地址,表示内部数据存储器RAM中的一个单元。
MOV  A,@R1   (51单片机中假设R1中的数据是40H,内部数据存储器40H单元所包含的数据为55H,这条指令表示将数据55H传送到累加器中)
MOV AL,[BX]   (8086汇编中就是将指定的寄存器内容作为地址,现在寄存器BX的数就是直接地址,可以存放偏移地址的寄存器有BX,BP,SI,DI。其中BP位于SS段 ,其余的位于DS段)

4.寄存器寻址
操作数放在 MCU内部的寄存器中,指令执行过程中无需访问内存,因此指令的执行速度较快。
INC R0  (表示R0=R0+1,51单片机中寄存器工作区的选择有程序状态字寄存器PSW中的RS1,RS0来决定,指令操作数指定的寄存器均指当前工作区的寄存器)
MOV AX,BX(8086中将BX中的赋给AX)

5.相对寻址
相对寻址是将程序计数器PC中的当前值与指令给出数相加,其结果作为偏移指令的转移地址。转移地址也称为转移目的地址,PC当前的值称为基地址,指令给出的数为偏移地址,由于目的地址是相对于PC的基地址而言,所以这种寻址方式称为相对寻址。偏移量为带符号的数,所能表示的范围是+127~-128,这种指令主要用于转移指令。
JC 80H(51系列中表示当C=1时,跳转)
8086中是寄存器相对寻址,指定寄存器上的内容加上指令中给出的位移量,并以一个段寄存器为基准。
MOV [BX+100H],AX (物理地址=(DS)*10H+(BX)+100)
注意:单片机系列中寄存器指定为PC,而且单片机中RAM没有分段的概念,因为哈佛结构中数据存储和程序存储是分开的。

6.变址寻址
指令操作数指定一个存放变址基值的寄存器,变址时偏移量和变址基值相加,结果作为操作数的地址。变址寄存器有程序计数器和PC和地址寄存器DPTR
MOVC A,@A+DPTR (A为偏移量寄存器,其内容与地址寄存DPTR中的内容相加,其结果作为操作数的地址,取出该单元的数送入累加器A)
注意:这里比较一下相对寻址,只不过是基址寄存器规定为PC而已,再比较一下寄存器寻址,只不过是加了一个基地址的值PC或DPTR而已。
8086中基址变址寻址是指把一个基值寄存器BX或BP加上变址寄存器SI或DI的内容作为操作数的偏移地址,并以一个段寄存器作为地址基准,形成操作数的物理地址。
MOV AX,[BX+SI]
注意8086中还有相对基址变址寻址,顾名思义就是把相对寻址和变址寻址结合起来,直接参考下边的例子:
MOV AX,[BX+SI+10H]

7.位寻址
    位寻址是指对一些内部数据存储器RAM和特殊功能寄存器进行位操作时的寻址 。在进行位操作时,借助于进位位C作为位操作累加器,指令操作数直接给出该位的地址,然后根据操作码的性质对该位进行位操作。位地址与字节直接寻址中的字节形式完全一样,主要有操作码加以区分,使用时应注意。
    MOV C,20H (片内位单元位操作型指令)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值