位寻址

对字节地址中的位地址进行寻址的寻址方式称为位寻址。
采用位寻址方式的指令,其操作数是8位二进制数中的某一位,在指令中要给出的是内部RAM单元中的某一位,即位地址,其在指令中用bit表示。
8051单片机内部有1个可位寻址区,地址为20H~2FH,共16个单元。其中每个单元中的每一位都可单独作为操作数,共128位。另外,如果SFR(特殊功能寄存器片—内高128单元)的地址值能被8整除,则该SFR也可以进行位寻址。可位寻址的SFR有ACC,B,PSW,P0,P1,P2,P3,IP,IE,TCON,SCON。
由于单片机中只有内部RAM和特殊功能寄存器的部分单元有位地址,因此位寻址只能对有位地址的这两个空间进行寻址操作。位寻由指令给出直接位地址。与直接寻址不同的是,位寻址只给出位地址,而不是字节地址。
指令中直接给出了操作数所在的位地址。
例: CLR P1.0 ;(P1.0) ← 0
SETB ACC.7 ;(ACC.7)← 1
CPL C ;( C )← NOT( C )
 
首先,地址的作用只有一个,就是用来寻址。
其次,51单片机的的片内寄存器都是可以字节寻址的。
字节地址就是用来寻址一个字节的内容,和位地址相对应,位地址就只能寻址一个位(bit)。
在单片机指令中寻址任何一个字节都需要字节地址,寻址任何一个位都需要位地址。
所谓的IP、IE不过是我们给这个寄存器取了另外一个名字而已。
如:MOV IP,#00H 和 MOV B8H,#00H 这两条语句是一样的效果。
另外,从这些寄存器的使用上来说,IP、IE等特殊功能寄存器既可以字节寻址也可以位寻址,是同样的效果。
比如:SETB PX0;和 MOV IP,#01H;是一样的,都是将IP的第0位即PX0置1。
不同的是,字节寻址的时候是8位一起操作的,会对其它的位赋值,有时不想改变其它位的值,就用位寻址。
所以,字节地址是用来寻址字节的,位地址是用来寻址位的。
就这样。
另外,IP也好,IE也好,也都是寄存器,要访问它们也需要地址(访问字节用字节地址,访问位用位地址),不同的是它们用来对处理器进行配置,我们给它们取了一些特定的名字而已。
posted @ 2017-02-02 18:28  泮聪  阅读(1314)  评论(0编辑  收藏  举报