首页 理论教育 MCS-51单片机寻址方式解析及应用

MCS-51单片机寻址方式解析及应用

时间:2023-10-17 理论教育 版权反馈
【摘要】:计算机中,寻找操作数或操作数地址的方法称为寻址方式。MCS-51单片机中,操作数的存放范围是很大的,可以放在片外ROM/RAM中,也可以放在片内ROM/RAM中以及特殊功能寄存器SFR中,为此,MCS-51指令系统中共使用了7种寻址方式。为了和寄存器寻址方式区别,寄存器间接寻址中寄存器名称前加了前缀@。

MCS-51单片机寻址方式解析及应用

指令执行时都要用到操作数。计算机中,寻找操作数或操作数地址的方法称为寻址方式。

MCS-51单片机中,操作数的存放范围是很大的,可以放在片外ROM/RAM中,也可以放在片内ROM/RAM中以及特殊功能寄存器SFR中,为此,MCS-51指令系统中共使用了7种寻址方式。即立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、相对寻址、变址寻址和位寻址。寻址方式越多,计算机的功能就越强大,更能灵活、有效地处理各种数据。

MCS-51单片机指令操作数或操作数地址有以下7种寻址方式:

1.立即寻址

立即寻址指令的特点是操作数直接出现在指令中。该操作数称为立即数,可以是8位或16位的二进制常数。也可以用十六进制表示。立即数通常用#data或#data16表示,#是立即数区别direct(或bit)的唯一标志。

例:MOV A,#3AH ;将立即数3AH送入累加器A中

MOV DPTR,#1234H ;DPH←12H,DPL←34H

2.直接寻址

直接寻址就是在指令中直接给出了操作数所在的单元地址,机器执行时可根据该地址(用direct表示)找到所需要的操作数。

在MCS-51单片机中,可以直接寻址的存储空间主要有片内RAM的低128个字节和特殊功能寄存器SFR(8052片内RAM的高128字节只能被间接寻址)。

例:MOV A,70H ;A←(70H)

这条指令的功能是把片内RAM 70H地址单元的内容送入累加器A中。

3.寄存器寻址

寄存器寻址就是操作数存放在寄存器中,指令中提供了存放操作数的寄存器,指令码中含有相应的寄存器号,执行时通过寻找寄存器得到操作数。常用的寄存器有累加器A、DPTR和某个工作寄存器R0~R7等。

例:MOV A,R5 ;A←(R5)

这条指令的功能是把R5中的内容61H(设R5中的内容为61H)送入累加器A中。

4.寄存器间接寻址

寄存器间接寻址是使用指令中提供的寄存器存放操作数的存储地址的方法。需要强调的是,寄存器的内容不是操作数本身,而是操作数的地址。通过寻找指定的寄存器,取出其内容作为操作数的地址,从而得到操作数。因此,寄存器间接寻址实际上是一个二次寻址的过程。(www.xing528.com)

为了和寄存器寻址方式区别,寄存器间接寻址中寄存器名称前加了前缀@。

例:MOV A,@R1 ;A←((R1))

这条指令用于将以寄存器R1中的内容作为地址的单元的内容送入累加器A中。

5.变址寻址

以16位寄存器(DPTR或PC)作为基址寄存器,加上地址偏移量(累加器A中的8位无符号数)形成操作数地址的方式称为变址寻址。

例:MOVC A,@A+DPTR ;A←((A)+(DPTR))

这条指令的功能是把DPTR中的内容和A中的内容相加作为16位的程序存储器地址,再把该地址对应单元的内容送入累加器A中。

6.相对寻址

相对寻址是以指令中给出的操作数作为程序转移的偏移量。相对寻址用于访问程序存储器,通常在相对转移指令中使用。

在MCS-51单片机指令系统中,通常以rel表示地址偏移量,rel是一个带符号的8位二进制补码数,其范围是-128~+127。相对转移指令的目标地址为“目标地址=转移指令首地址+转移指令字节数+rel”,其中“转移指令首地址+转移指令字节数”称为PC的当前值。

例:JZ 30H; A=0条件成立转移

这条指令是一条条件转移指令。它表示若A≠0,则不跳转,继续执行下一条指令;若A=0,则以PC中的当前值为基地址,加上偏移量30H后所得到的结果为该转移指令的目的地址,从而实现程序的转移。

7.位寻址

位寻址指令中给出的操作数是片内RAM的位寻址区和某些有位地址的特殊功能寄存器的可寻址位地址。位地址与直接寻址中的字节地址形式完全一样,主要由操作码来区分,使用时应注意。

例:MOV C,07H

这条指令属于位寻址指令,功能是把内部RAM 20H单元的D7位(位地址为07H)的内容传到位累加器C(即程序状态字寄存器PSW中的CY)中。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈