单片机的软件基础:单片机的寻址方式

来自:优秀的技师
3年前
已收藏
收藏
阅读数
148
回复数
0

大部分指令都需要有操作数,而操作数则存放在寄存器、ROM、RAM等记忆单元中。 如何得到操作数地址即为寻址。8051单片机的寻址方式有7种,立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、变址寻址、相对寻址和位寻址。


1.立即寻址方式。 立即寻址就是操作数由指令直接给出,例如:
该指令的含义是将数3AH传送至累加器A。#3AH表示立即数,存储于程序存储器中,寻址过程如图3-14所示。
立即数也可以是16位,例如:
该指令的功能是将16位二进制数1200H传送至数据指针(16位)。 立即寻址方式的特点是参加操作的数直接取自程序存储器,无需运行总线周期,速度快。
2.直接寻址方式。 直接寻址就是指令直接给出操作数的地址,例如:
该指令的含义是将片内RAM字节地址为52H单元的内容XX传送至累加器A中,寻址过程如图3-15所示。
直接寻址方式除了可访问片内RAM(包括位寻址区),还可访问特殊功能寄存器。
3寄存器寻址方式。 寄存器寻址就是在指令中给出存放操作数的寄存器,例如:
该条指令的含义是将寄存器Rn(n=0~7)的内容XX传送至累加器A中,寻址过程如图3-16所示。
寄存器寻址方式以寄存器名为操作数地址。除了R0~R7,累加器A、通用寄存器B、数据指针DPIR和进位累加Cy均可用作寄存器寻址。
4.寄存器间接寻址方式。 寄存器间接寻址就是指令中给出的寄存器存放的内容为操作数地址,例如:
指令的含义是将寄存器R1中的内容作为地址,把该地址存储单元中的内容×x传送至累加器A中,寻址过程如图3-17所示。
寄存器间接寻址方式在访问片内RAM时采用R0、R1,访问片外RAM时则要用16位的寄存器DPTR。DPTR可访问片外数据存储器RAM的64K存储空间。 注意:不能用于特殊功能寄存器SFR的寻址!
5.变址寻址方式。 变址寻址是在寄存器间接寻址的基础上加上偏移量,例如:
指令的含义是以PC为基址,加上A的内容后作为新的地址,并将新地址单元中的内容xx传送至A。取指过程如图3-18所示。
6.相对寻址方式。 在相对转移指令中使用相对寻址方式,例如:
以PC的内容为基本地址,加上指令中给定的偏移量作为转移地址,转移至目的地址。 寻指过程如图3-19所示。
指令系统中的转移指令分为直接转移和相对转移指令,相对转移指令采用相对寻址方式。指令中给定的偏移量为8位带符号常数,其范围为-128~+127。 该指令为两字节指令,CPU取出指令的第二个字节时,PC的当前值应为PC+2。
7.位寻址方式。 位寻址操作数是内部RAM单元中某一位信息,例如:
在进行位操作时,一般借助进位位Cy作为位操作累加器。位寻址是对位寻址空间按位进行寻址操作,位寻址方式属直接寻址方式,但参与的操作数是1位而不是8位。

上一篇下一篇
参与回答(0条评论)
用户头像
上传
用户头像
{{item.nickname}}{{item.pubtime}}回复
回复图片
用户头像
上传
用户头像
{{item1.nickname}}回复 {{item1.othername}} {{item1.pubtime}} 回复
回复图片
用户头像
上传
查看全部回复{{item.replylist_count}}条 查看全部
收起回复 收起全部
{{isLoadList==1?'加载中...':(isLoadList==2&&(list.length <=3||(list.length>3&&!is_hidden))?'没有更多内容了':'查看更多回答')}}
返回顶部

返回顶部