由于用二进制代码表示的机器语言指令不便于阅读、理解和记忆,因此在MCS-51指令系统中采用汇编语言指令来编写程序。汇编语言指令最多包含4个部分:[标号:]操作码助记符 [目的操作数] [,源操作数] [;注释]指令的表示方式称为指令格式。MCS-51指令系统具有255种操作码。图3-1汇编语言指令各部分内容示意图为了更好地理解指令格式及后续指令的寻址方式,结合第2章的内容,下面通过一个例子进行说明。......
2023-11-17
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。
有关单片机基础及应用的文章
由于用二进制代码表示的机器语言指令不便于阅读、理解和记忆,因此在MCS-51指令系统中采用汇编语言指令来编写程序。汇编语言指令最多包含4个部分:[标号:]操作码助记符 [目的操作数] [,源操作数] [;注释]指令的表示方式称为指令格式。MCS-51指令系统具有255种操作码。图3-1汇编语言指令各部分内容示意图为了更好地理解指令格式及后续指令的寻址方式,结合第2章的内容,下面通过一个例子进行说明。......
2023-11-17
MCS-51单片机的算术运算类指令包括加、减、乘、除、加1、减1等指令。这类指令有ADD、ADDC、INC、SUBB、DEC、DA、MUL、DIV共8种。表3-3算术运算类指令注:√表示该指令影响某一标志位。运算结果对PSW的影响同上述4条ADD指令。6.十进制调整指令十进制调整指令只有以下1条:该指令用于BCD码加法运算时,对BCD码的加法运算结果自动进行调整,但对BCD码的减法运算不能用此指令来调整。在运算过程中,单片机按二进制规则进行运算。......
2023-11-17
伪指令是程序员发给汇编程序的命令,用来设置符号值、保留和初始化存储空间、控制用户程序代码的位置。在汇编时伪指令自身不产生机器码,不属于指令系统。常用的伪指令有以下几种。1.汇编起始地址命令ORG该命令总是出现在源程序的开头位置,用于规定目标程序的起始地址。在END之后所写的指令,汇编程序不再处理。一个源程序只能有一个END指令,并放在所有指令的最后。例如:以上指令经汇编后,将对1000H开始的若干内存单元赋值。......
2023-11-17
MCS-51的所有指令均不超过3个字节,且多为单字节指令。为了使“乱飞”程序在程序区迅速纳入正轨,应在编程时多用单字节指令,并在关键的地方人为地插入一些单字节指令NOP,或将有效单字节指令重写,称之为指令冗余。需要注意的是,乱飞的PC必须指向程序运行区,并且必须执行到冗余指令才能使PC纳入正确轨道。......
2023-11-17
条件转移指令共有8条。1.累加器判零转移指令累加器判零转移指令共有两条:这组指令的功能是对累加器的内容为“0”和不为“0”进行检测并转移。当各自的条件满足时,程序转向指定的目标地址。目标地址的计算与SJMP指令情况相同。指令执行时对标志位无影响。例如,已知累加器=00H,执行指令:2.数值比较转移指令数值比较转移指令共有4条。利用这两条指令可实现循环控制,循环次数存放于寄存器中或直接寻址单元中。......
2023-11-17
MCS-51单片机逻辑运算及移位类指令包括与、或、异或、清0、取反、移位等操作指令。1.逻辑“与”运算指令逻辑“与”运算指令共有以下6条:这组指令中的前4条指令完成源操作数与累加器的内容相与,并将结果送入累加器中。其寻址方式、标志位影响、端口操作与ANL指令相同。表3-4逻辑运算及移位类指令注:√表示该指令影响某一标志位。......
2023-11-17
在单片机应用系统设计时,应按以下6条原则进行:1)明确设计目标。在整个设计过程中要不断地对照设计目标并满足目标要求。2)自上而下设计。3)软、硬件优化设计。大部分子任务可以以硬件为主实现也可以以软件为主实现,必须进行协调优化设计,从而提高性能质量,降低成本。6)组合及开放式设计。......
2023-11-17
数组是由若干个具有相同数据类型的数据变量组成的集合。数组名的命名规则与变量名的命名规则相同。数组元素用同一个数组名字的不同下标来区别,数组的下标放在方括号中,从0开始,是0,1,2,3,…数组元素由数组名a和下标共同表示,数组元素分别为a[0],a[1],a[2],…在C51程序设计中,八段数码管的段码表就是用数组表示的。......
2023-11-17
相关推荐