MCS-51单片机具有丰富的位操作指令和优异的布尔变量处理能力。进行位操作时,以进位标志位CY作为位累加器。汇编语言中位操作指令中位地址有以下4种表示形式:1)直接地址方式,如0A1H,2EH。表3-6位操作类指令注:√表示该指令影响某一标志位。直接位寻址为端口执行“读—修改—写”操作。3.位逻辑运算指令位逻辑运算指令共有6条:这两条指令可以实现位地址单元内容或取反后的值与进位位内容“与”操作,操作的结果送位CY。......
2023-11-17
早期单片机的开发主要使用机器语言和汇编语言。由于用二进制代码表示的机器语言指令不便于阅读、理解和记忆,因此在MCS-51指令系统中采用汇编语言指令来编写程序。汇编语言指令通常采用英文名称或缩写方式作为助记符来表示指令的功能和特征。
汇编语言指令最多包含4个部分:
[标号:]操作码助记符 [目的操作数] [,源操作数] [;注释]
指令的表示方式称为指令格式。指令通常由两个组成部分:操作码和操作数。操作码用来规定指令进行什么操作,而操作数则是指令操作的对象,操作数可能是一个具体的数据,也可能是指出到哪里取数据的地址或符号。
每条指令除操作码助记符是必须的外,其他带中括号的是任选项,不是必须的。
1.标号
标号是该指令的符号地址,标号代表该条指令在程序存储器区中的存放地址,其本质是地址的符号化。标号必须是以字母开始,冒号结束。标号的字符个数一般不能超过8个(根据汇编程序版本而定),一旦某个标号赋给了某条指令,其他指令的操作数就可以直接应用该标号,以便寻址或控制程序转移。标号是任选项,不是必须的。
2.操作码助记符
操作码助记符也称为操作码,通常采用英文名称或缩写方式,是每条指令必须有的部分,它决定了语句的操作性质,反映了指令的功能。操作码与操作数之间用空格分开。MCS-51指令系统具有255种操作码(00H~FFH,除A5H外)。
3.操作数
操作数指的是参加操作运算的数据,可以是数字、数据的地址、寄存器等。操作数分为目的操作数和源操作数两种,两者之间用逗号分开。当然,有些操作码可以是无操作数,或一个操作数。
4.注释
注释是以分号开始,汇编时对这部分不予处理,是程序员对指令操作的解释。必须在一行内写完,换行时需要另外以分号开始。注释内容可以为任何字符,不需要每行都加注释,仅在某些关键处注释即可,以便日后对程序的维护,如图3-1所示。(www.chuimin.cn)
图3-1 汇编语言指令各部分内容示意图
为了更好地理解指令格式及后续指令的寻址方式,结合第2章的内容,下面通过一个例子进行说明。CPU要完成一项工作,必须按要求去执行各种操作,逐条取指令并执行之,从而完成预定的任务。
【例3-1】在程序存储器中存放着一个平方表,通过查表,将数据(范围0~F)的平方值直接得到,无需计算。设该数据存放在R0寄存器中的低4位,要求数据的平方值查表后的结果仍然送回R0。
【程序】
为了完成上述功能,编写的汇编程序如上所示。程序编写完成后,用汇编编译器编译无误后,烧写至单片机程序存储器中,单片机上电后即可工作,从而完成上述任务。到此为止,很多单片机初学者可能会问,程序在单片机中的哪个地方?以什么样的一个形式,单片机如何执行的呢?下面结合图3-2来加以介绍。
图3-2 程序在程序存储器区的示意图
如图3-2所示,程序和数据表格已存放在程序存储器中,都是以二进制数的形式存放的。地址0000H~0002H和3000H~3007H对应的程序存储器中存放的是操作码和操作数,规定了CPU执行什么操作;3008H~3017H单元中存放的是0~F数据的平方结果。其中标号SQUARE和SQTAB就是地址3000H和3008H的符号化。单片机从0000H地址开始执行程序,0000H地址开始存放指令代码是023000H,其中02H是操作码表示,操作是长转移,转移地址是3000H,其他指令与机器码的关系将在后续的章节中给出。
了解了指令格式及指令在程序存储器中存放的方式及CPU执行过程,下面进一步学习指令。
有关单片机基础及应用的文章
MCS-51单片机具有丰富的位操作指令和优异的布尔变量处理能力。进行位操作时,以进位标志位CY作为位累加器。汇编语言中位操作指令中位地址有以下4种表示形式:1)直接地址方式,如0A1H,2EH。表3-6位操作类指令注:√表示该指令影响某一标志位。直接位寻址为端口执行“读—修改—写”操作。3.位逻辑运算指令位逻辑运算指令共有6条:这两条指令可以实现位地址单元内容或取反后的值与进位位内容“与”操作,操作的结果送位CY。......
2023-11-17
我们把编码表示的计算机可识别和处理的命令称为机器指令,或简称指令。为了说明方便,这里我们设计一组简单的机器指令。图3-2 机器指令格式4位操作码共可表示24=16个不同的机器指令。其余机器指令不再一一详细表示。因每个十六进制码表示4位二进制码,所以用十六进制码表示机器指令更为简洁。表3-1 机器指令举例计算机进行数据处理时,既要有程序,也要有数据。......
2023-11-18
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
条件转移指令共有8条。1.累加器判零转移指令累加器判零转移指令共有两条:这组指令的功能是对累加器的内容为“0”和不为“0”进行检测并转移。当各自的条件满足时,程序转向指定的目标地址。目标地址的计算与SJMP指令情况相同。指令执行时对标志位无影响。例如,已知累加器=00H,执行指令:2.数值比较转移指令数值比较转移指令共有4条。利用这两条指令可实现循环控制,循环次数存放于寄存器中或直接寻址单元中。......
2023-11-17
无条件转移指令共有以下4条:1.LJMP addr16LJMP addr16指令是3个字节指令,其机器码为02H,addr15~8,addr7~0。3.SJMP relSJMP rel指令是相对寻址方式转移指令,其中rel为偏移量,偏移量rel是一个带符号的8位二进制补码数。因此,有时也称其为散转指令。4条无条件转移指令的功能相同,不同之处在于转移的范围。其中长转移指令LJMP的转移范围最大,为64KB。短转移指令SJMP的转移范围最小,仅为256字节。......
2023-11-17
2)数据传送指令,加1、减1指令,逻辑运算指令不影响CY、OV和AC位。标志位的状态是控制转移类指令的判断条件。数据传送类指令是使用最频繁的指令,主要用于数据的复制、保存及交换。数据传送类指令的助记符有MOV、MOVX、MOVC、XCH、XCHD、SWAP、PUSH、POP。其通用数据传送类指令格式为MOV 目的操作数,源操作数表3-2数据传送类指令注:√表示该指令影响某一标志位。外部RAM或I/O口之间的数据传送指令共有4条。......
2023-11-17
MCS-51单片机共有7种寻址方式,即立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、变址寻址、相对寻址和位寻址。了解寻址方式是正确理解和使用指令的前提。1.立即寻址立即寻址是指在指令中直接给出操作数的寻址方式。具体来说,直接寻址方式访问以下存储空间。第二条指令是将立即数85H传送至专用寄存器IE,其目的操作数的寻址方式是直接寻址。图3-6寄存器间接寻址示意图同样采用“MOVX”类寄存器间接寻址方式操作片外RAM的指令。......
2023-11-17
MCS—51系列单片机中,有的芯片有片内程序存储器,有的芯片内没有程序存储器。MCS—51单片机片内有4 KB ROM,片外还可以扩展64 KB ROM。......
2023-10-21
相关推荐