首页 理论教育MCS-51单片机位操作指令及应用简介

MCS-51单片机位操作指令及应用简介

【摘要】:MCS-51单片机具有丰富的位操作指令和优异的布尔变量处理能力。进行位操作时,以进位标志位CY作为位累加器。汇编语言中位操作指令中位地址有以下4种表示形式:1)直接地址方式,如0A1H,2EH。表3-6位操作类指令注:√表示该指令影响某一标志位。直接位寻址为端口执行“读—修改—写”操作。3.位逻辑运算指令位逻辑运算指令共有6条:这两条指令可以实现位地址单元内容或取反后的值与进位位内容“与”操作,操作的结果送位CY。

MCS-51单片机具有丰富的位操作指令和优异的布尔变量处理能力。进行位操作时,以进位标志位CY作为位累加器。这点类似于字节操作,以寄存器A作为累加器。MCS-51单片机中能够进行位寻址的区域有两部分:一部分是片内RAM的20H~2FH共16个字节单元128位,其位地址为00H~7FH;另一部分是在SFR中,字节地址能被8整除的专用寄存器的各位,其位地址从80H~0FFH,中间有少数位未被定义,不能按位寻址。这类指令的助记符有MOV、CLR、CPL、SETB、ANL、ORL、JC、JNC、JB、JNB、JBC共11种操作助记符,如表3-6所示。汇编语言中位操作指令中位地址有以下4种表示形式:

1)直接地址方式,如0A1H,2EH。

2)点操作方式,如PSW.5,ACC.2。

3)位名称方式,如EA,TR0。

4)指令定义方式,如P1_3 BIT P1.3。

1.位传送指令

位传送指令共有以下两条:这组指令中C为进位CY,bit为片内RAM的20H~2FH中的128个可寻址位和特殊功能寄存器中的可寻址位。

表3-6 位操作类指令

注:√表示该指令影响某一标志位。

【例3-20】将20H.0传送到25H.3中。

【程序】

或者

这里的00H和2AH是位地址,而不是存储单元字节地址。

2.置位复位指令

置位复位指令共有4条:

这两条指令可以实现位地址内容和位累加器内容的清0。直接位寻址为端口执行“读—修改—写”操作。以下直接位寻址相同。

这两条指令可以实现进位位和直接位地址内容的置位。

3.位逻辑运算指令

位逻辑运算指令共有6条:

这两条指令可以实现位地址单元内容或取反后的值与进位位内容“与”操作,操作的结果送位CY。

这两条指令可以实现位地址单元内容或取反后的值与进位标志位的内容“或”操作,操作的结果送位CY。

这两条指令可以实现位地址单元内容或进位标志位的取反。

【例3-21】设D、E、F为位变量,试编程实现E、F内容的“异或”功能,结果送入D中。

【解】,用程序实现:

4.位控制转移指令

位控制转移指令共有5条:

1)以C状态为条件的转移指令(两条)

这两条指令的功能是对进位标志位CY进行检测,若(CY)=1(第1条指令)或(CY)=0(第2条指令),程序转向PC当前值与rel之和的目标地址去执行,否则程序将顺序执行。

2)以位状态为条件的转移指令共有3条

这3条指令的功能是对指定位bit进行检测,若(bit)=l(第1和第3条指令)或(bit)=0(第2条指令),程序转向程序计数器(PC)当前值与rel之和的目标地址去执行,否则程序将顺序执行。对于第3条指令,当条件满足时(指定位为1),还具有将该指定位清0的功能。

【例3-22】编程实现:若(A)=0,则A的内容加1,否则A的内容减1。

【程序】

或者

【例3-23】比较片内RAM 40H、50H中两个无符号数的大小,若40H中的数小,则把片内RAM中的位地址40H置1;若50H中数小,则把片内RAM中的位地址50H置1;若相等,则把RAM中的位地址20H置1。(www.chuimin.cn)

【程序】

习题3

1.填空题

(1)在程序存储器中的数据表格为

程序

执行后的结果:(A)=________,(R0)=________,(PC)=________。

(2)假定累加器A的内容为30H,执行指令“1000H:MOVC A,@A+PC”后会把程序存储器________单元的内容传送累加器A中。

(3)假定(A)=85H,(R0)=20H,(20H)=0AFH,执行指令“ADD A,@R0”后,累加器A 的内容为________,CY 的内容为________,AC 的内容为________,OV的内容为________。

(4)已知A=7AH,R0=30H,(30H)=A5H,PSW=80H,问执行以下各条指令后的结果(每条指令都以题中规定的数据参加操作)。

1)XCH A,R0 (A)=________,(R0)=________,P=________

2)XCHA,30H(A)=________,(30H)=________,P=________

3)XCHA,@R0(A)=________,(30H)=________,P=________

4)XCHD A,@R0(A)=________,(30H)=________,P=________

5)SWAP A(A)=________,P=________

6)ADDA,R0(A)=________,CY=________,P=________,OV________

7)ADDA,30H(A)=________,CY=________,P=________,OV________

8)ADDA,#30H(A)=________,CY=________,P=________,OV________

9)ADDC A,30H(A)=________,CY=________,P=________,OV________

10)SUBB A,30H(A)=________,CY=________,P=________,OV________

11)DAA(A)=________,CY=________,P=________

12)RLA(A)=________,CY=________,P=________

13)RLCA(A)=________,CY=________,P=________

14)CJNE A,#30H,ONE(A)=________,CY=________,P=________

15)CJNE A,30H,TWO(A)=________,CY=________,P=________

2.简答题

(1)指出下列指令中下划线操作数的寻址方式:

(2)已知片内RAM中,(30H)=70H,(40H)=71H,执行下列一段程序后,试分析有关单元内容。

(3)试说明下面每一条指令的作用,已知(A)=34H。

(4)说明下列指令的作用,执行后R0的结果为多少?

(5)阅读下列程序,说明其功能。

3.编程题

(1)把片内RAM 40H单元的内容传送至片外RAM 2230H单元。

(2)试编写一段程序,将P1端口的高5位置位,低3位不变。

(3)试编写一段程序,将R2中的各位倒序排列后送入R3中。

(4)设D、E、F为位变量,试编程实现E、F内容的“同或”功能,结果送入D中。

(5)试编写程序,查找片内RAM的20H~50H单元中是否有0AAH这一数据。若有这一数据,将51H单元置为01H,否则置为00H。