前面的几种寻址方式都是对存储单元的整个字节进行操作,如果要对某存储单元中的某位数进行操作,就要用位寻址方式。
位寻址并不能操作存储器中任何单元中的某位数,它只能操作能进行位寻址的存储单元。可位寻址的单元如下:
1)数据存储器内部的位寻址区。该区的字节单元地址是20H~2FH,共有16个存储单元,每个单元有8位,共有128位,这128位的位地址见表2-3。
2)SFR中一些可位寻址的寄存器。SFR中可位寻址的寄存器有11个(可位寻址的寄存器见表2-4的第1列),每个寄存器有8位,共有88位。
位寻址的方法通常有以下几种:
1)直接使用位地址。
例如:MOV C,01H
这条指令的含义是将01H位(即20H单元的第1位)的数据送入程序状态字寄存器(PSW)的CY位(进位标志位)。PSW各位的功能见第2章的相关内容。
2)采用“字节地址.位序号”形式。
例如:MOV C,20H.1
这条指令的含义是将20H单元的第1位数据送入PSW的CY位。
3)采用“位的符号地址”形式。
例如:CPL AC
这条指令的含义是将PSW的AC位(辅助进位标志位)取反。CPL意为“位取反”。
4)采用“寄存器符号.位序号”形式。
例如:ANL C,PSW.0
这条指令的含义是将PSW的第0位与CY位进行相与运算,再将相与的结果保存在CY位。
MCS-51系列单片机采用的七种寻址方式见表3-1。
表3-1 七种寻址方式
(www.xing528.com)
【例3-1】 图3-6为单片机系统硬件图,把8个LED分成两组,分别用立即数寻址、直接寻址、寄存器寻址、寄存器间接寻址方式实现LED0、LED2、LED4、LED6灭,LED1、LED3、LED5、LED7亮。
解答:
若LED亮,则P1口对应的位输出0,因此P1=01010101B(化成十六进制为55H)。本
图3-6 例3-1硬件图及运行结果图
程序比较简单,程序流程图略,程序主体如下:
立即寻址:ORG 00H
MOV P1,#55H
END
直接寻址:MOV A,#55H
MOV P1,A
寄存器寻址:MOV R1,#55H
MOV P1,R1
寄存器间接寻址:MOV 40H,#55H
MOV R0,#40H
MOV P1,@R0
编译程序并仿真实现功能:
1)以上程序为程序主体结构,4种方式需要建立4个汇编(asm)文件分别验证,每个汇编文件均以ORG起始,以END结束。
2)将产生的4个HEX文件分别烧写,分别验证。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。