尽管单片机有许多特点,但仍然属于计算机的范围。这种特殊的语言就是程序设计语言,也就是由一系列语句组成的程序。程序设计语言从原理上可分为机器语言、汇编语言和高级语言三种类型,单片机也不例外。由于汇编语言指令具有直接对应机器语言指令的特点,因而生成的机器代码效率高,执行速度快,至今在单片机程序设计中仍被采用。在众多高级语言中,只有C语言成了应用于单片机系统的高级语言。......
2023-11-07
单片机指令系统是芯片生产厂商定义并为用户提供的软件资源。不同的生产厂商生产的单片机芯片型号系列不同所定义的单片机指令系统也不同。自然按照不同指令系统编写的汇编程序也不能相互移植。
1.指令系统的助记符表示法
单片机从存储器内读出的指令实际上是一系列二进制编码,一条指令由操作码和操作数组成。例如,MCS51系列单片机指令集中,一条指令用二进制表示为0111 1000 0110 1110B(其中的“B”代表是二进制数)。若用十六进制表示为78 6EH(其中的H代表是十六进制数)。这种指令表示法单片机能顺利地识别它。但为人阅读带来了一定的困难,若想准确地识别100多条各种不同的十六进制代码也是不现实的。若用有一定意义的英语字符表示就会方便多了。上面的指令可以表示为“MOV A,#6EH”。这里“MOV”是MOVE的缩写,意思是传送,“A”代表累加器,“#6EH”代表一个十六进制的立即数。整个指令的意思就是将立即数“6EH”传送到累加器“A”中,只要记住“MOV”的意思就很容易阅读。“MOV”就是助记符。将指令机器码变化为用助记符表示是很大的进步。
2.MCS51系列单片机助记符指令简介
在MCS51系列单片机助记符指令中定义并使用了一些符号,如一条数据传送指令“MOV A,#23H”,其意义是将十六进制立即数“23H”传送到累加器“A”中。在这一条指令不仅要将指令进行通用意义的表示,还要用符号“DATA”表示“23H”代表的是数据。这条指令就可以写为“MOV A,#DATA”。这就可以准确地涵盖所有的数据。下面列出说明指令中定义的各种符号及意义:
1)Rn表示当前选中的工作寄存器R0~R7(n=0~7)。
2)Ri表示可用间接寻址的寄存器R0~R1(i=0,1)。
3)DIRECT表示片内RAM单元8位地址。它可以是RAM单元地址,也可以是I/O接口的地址。
4)#DATA表示包含在指令中的8位立即数。
5)#DATA16表示包含在指令中的16位立即数。
6)ADDR16表示16位目的地址,用于LCALL和LJMP指令中,范围是64KB程序存储器地址空间。
7)ADDR11表示11位目的地址,用于ACALL和AJMP指令中。
8)REL表示8位带符号的偏移字节。它用于短转移和所有条件转移指令的相对地址。由相对于表示下一条指令的第一个字节地址计算,在-128~+127范围内取值。
9)DPTR表示数据指针,可用作16位地址寄存器。
10)BIT表示内部RAM或SFR中的直接地址位。
11)A表示累加器。
12)B表示B寄存器。用于MUL和DIV指令。
13)C表示进位标志位,或作为布尔处理机中的累加器。
14)@表示间址寄存器或基址寄存器的前缀,如@Ri,@A,@DPTR。
15)/表示位操作数的前缀,表示对该位操作数取反,如/BIT。
16)(X)表示X中的内容。
17)((X))表示X间址的内容。
3.指令格式
一般一条指令包括:<操作码><空格><操作数1><逗号><操作数2><逗号><操作数3>,在这里操作码是指令助记符,助记符规定了指令的操作内容。在空格后面是操作数,它提供操作所必需的数据或地址。操作数可以是1个、2个,最多3个,中间用逗号隔开。也可以没有操作数,而只有指令助记符。例如
4.指令类型
MCS51系列单片机指令集共有111条指令,其中数据传送类指令29条,算术运算类指令24条,逻辑运算类指令24条控制转移类指令17条布尔位运算类指令17条。共有44种不同操作类型,255个指令机器码。这44种操作类型按首字母排列其含义见表3-6。
表3-6 操作类型及其含义
(续)
MCS51系列单片机的指令集见表3-7。
表3-7 MCS51系列单片机的指令集
(续)
(续)
(www.chuimin.cn)
(续)
在上面的指令表中,指令的操作用符号化表示。例如,MOVA,#DATA执行的操作就是A←DATA,箭头代表数据DATA的传送方向。右边是源操作数,左边是目的操作数,这样整个指令的表示就非常形象一看就知道是将立即数DATA传送到累加器A。
5.MCS51系列单片机汇编语言中常用的伪指令
伪指令是程序编制者对汇编程序发出的命令。它用于标明源程序中的起始地址位置、预定义的寄存器名称、预定义的标号地址、结束汇编的位置等。这些信息是对源程序进行汇编所必需的,在源程序通过汇编后生成的机器代码文件中,这些伪指令已没有意义了。因此,也就没有伪指令相应的机器代码,即它不是直接参加程序执行的指令。
MCS51系列单片机汇编语言中常用的伪指令如下:
(1)ORG(ORIGIN)指明起始地址
用于指明源程序的起始地址及中间必须重新开始的地址。
格式:ORG<地址>
其中,地址为16位程序存储器的实际地址。在源程序起始处要设一条ORG指令。
例如 ORG 0000H
LJMPMAIN
单片机上电复位后,自动从地址0000H处执行程序,因而必须在0000H地址处设一条长转移指令,转移到实际的主程序的起始地址MAIN。
用ORG指令标明新的起始地址07FFH。
(2)END指明汇编的结束
格式
…
…
END
用于源程序的结尾,位于源程序的最后。它指示源程序到此结束后面的任何部分不予处理。
(3)EQU(EQUATE)赋值
用于给标号赋值。
格式 <字符名称><空格>EQU<空格><赋值项>
例如LED_1 EQU 0100H
(4)DB(Define Byte)定义字节
用于对程序存储器的地址定义字节内容,每行最多定义8个数据字节,中间以逗号隔开,末尾不加逗号。
格式: <DB><空格><数据1>,<数据2>,…<数据8>
例如: DB 0C0H,0FFH,88H,56H
(5)BIT定义位
用于给字符名称赋值位地址
格式 <字符名称><空格>BIT<空格><位地址>
例如 SDA BIT P1.6
SCL BIT P1.7
CLK BIT 20H
OE BIT 2FH
有关零起点学习单片机多语言编程的文章
尽管单片机有许多特点,但仍然属于计算机的范围。这种特殊的语言就是程序设计语言,也就是由一系列语句组成的程序。程序设计语言从原理上可分为机器语言、汇编语言和高级语言三种类型,单片机也不例外。由于汇编语言指令具有直接对应机器语言指令的特点,因而生成的机器代码效率高,执行速度快,至今在单片机程序设计中仍被采用。在众多高级语言中,只有C语言成了应用于单片机系统的高级语言。......
2023-11-07
1)把I/O接口的P2口中的输入数据保存在累加器A,再将累加器A中保存的输入数据输出到I/O接口的P1口。从P1口验证P2口输入的数据源程序(一)实验机的小键盘上的+1键、-1键、高一位操作键、地址键和写入键一端分别接在P2口的P2.0、P2.1、P2.2、P2.3、P2.4上,另一端接地。每次复位后可以重新输入。安装在P1口的发光二极管亮的位与接在P2口按下的键相对应。程序点评:P2口输入的数据通过芯片内部RAM用户区某地址输出到P1口。......
2023-11-07
进位后回到显示第一位数据,即循环显示。程序点评:程序中高、低两个数码管位赋值为0FEH,则显示字形“a段”。数码管数据的静态显示还可以通过查表实现。同样也可以将这种方法作为数码管数据显示制作为一套子程序或为一个程序模块。DISP是数码管显示,它的任务是将2个字形码送74HC164数码管显示。安装在单片机上的两个数码管显示器静态显示“25”。同理,可以在20H内设置0~9任意数据,观察数码管数据的静态显示。......
2023-11-07
1.基本组成微型计算机的基本组成如图1-2所示。图1-2微型计算机的组成框图中央处理器CPUCPU是计算机的核心部件,它由运算器和控制器组成,完成计算机的运算和控制功能。电池式NVRAM是由CMOS的SRAM、备用电池和切换电路组成,在电源断开或低于某值时切换电路把备用电池接入,对RAM进行写保护,防止意外数据写入和信息丢失。......
2023-11-17
对单片机来说,可以用高级语言编程,也可用汇编语言编程,两种语言各有特点。像8051具有MCS51系列单片机的指令集。用助记符指令组成的计算机语言就称为汇编语言。......
2023-11-07
单片机应用系统所使用的交流电源要与接有强电设备的动力线分开,最好从变电所单独拉一组专用供电线,或者使用一般照明电,这样可以减轻干扰的影响。如果采用磁饱和式交流稳压器,对来自电源的噪声干扰也有很好的抑制作用。此外还能检测电源瞬时短路和瞬时降压,同时产生复位信号。巧妙地利用该类芯片,可以提高单片机应用系统的可靠性。......
2023-11-17
第二行程序的开始地址是02,第二条机器码程序有两个指令有分别是“0B”、“05”,其中02地址单元中存放“0B”指令,03地址单元中存放“05”数据。第三条程序的开始地址是04,第三条机器码程序有三个指令有分别是“12”、“05”、“02”。......
2023-11-07
应用判0指令控制累加“1”循环显示的程序。程序点评:控制“01”位就改变“01”位的状态,由“0”变“1”。应用判0指令编写倒计时程序实例运行效果:在单片机键盘上输入机器码程序复位并运行后,01位灯亮,倒计时程序不运行。只有跨线一端接电源正极,另一端触接01位,01位被触接置“1”状态,倒计时程序才开始计时显示。实际中可以通过程序控制驱动执行机构做动作。程序点评:在单片机电路中“-1”键与06位相连接。......
2023-11-07
相关推荐