在之前的8051单片机教程中,我们已经了解了8051单片机指令集和寻址模式。在本教程中,我们将看一看8051单片机汇编语言的编程,8051汇编语言的结构,示例程序等。
在进入8051单片机汇编语言和编程的细节之前,让我们简单了解一下一般的编程语言(特定于微控制器)以及编程语言的类型。
什么是程序设计语言?
在微控制器(或任何计算机)的意义上,编程意味着编写一系列指令,这些指令由处理器按特定顺序执行,以执行预先确定的任务。编程还涉及到指令和指令序列的调试和故障排除,以确保所需的任务得以执行。
像任何语言一样,编程语言也有特定的词汇、语法和规则。8051单片机有三种类型或级别的编程语言。这些级别是基于语言中的语句与微控制器执行的操作或任务的相似程度。
编程语言的三个层次是:
- 机器语言
- 汇编语言
- 高级语言
机器语言
在机器语言或机器代码中,指令是用二进制位模式写的,即二进制数字1和0的组合,它们被存储为高电压电平和低电压电平。这是最低层次的编程语言,是微控制器或微处理器真正理解的语言。
汇编语言
编程语言的下一个层次是汇编语言。由于机器语言或代码包含了所有以1和0开头的指令,人类很难用它来编程。
汇编语言是机器语言的一种伪英语表示。8051单片机的汇编语言是一种类似英语的单词,称为助记符和十六进制代码的组合。
它也是一种低级语言,需要对微控制器的架构有广泛的了解。
高级语言
高级语言的名称意味着您不需要担心微控制器的架构或其他内部细节,它们使用人类容易理解的词汇和语句。
很少有高级语言的例子是BASIC, C Pascal, c++和Java。一个叫做编译器的程序将用高级语言编写的程序转换成机器代码。
为什么汇编语言?
虽然高级语言易于使用,但以下原因指出了汇编语言的优势
- 用汇编编写的程序执行得更快,占用的内存也更少。
- 在汇编语言的帮助下,您可以直接利用微控制器的所有功能。
- 使用汇编语言,您可以直接和准确地控制所有微控制器的资源,如I/O端口,RAM, SFRs等。
- 与高级语言相比,汇编语言具有较少的规则和限制。
还可以读读这篇有趣的文章:8051单片机指令集
8051单片机的汇编语言结构
本文讨论了8051单片机汇编语言的结构或语法。8051单片机汇编语言程序的每一行或每一条语句由三个字段组成:标签、指令和注释。
这些字段的排列或它们出现的顺序如下所示。
注意:标签和注释的方括号表示这些字段是可选的,并且不能在程序中的所有语句中使用。
在了解这三个字段之前,让我们先看看8051单片机汇编语言中典型的语句或行是怎样的。
测试标签:MOV A, 24H;这是一个示例注释
在上面的语句中,“TESTLABEL”是标签的名称,“MOV A, 24H”是指令,“这是一个示例注释”是注释。
标签
标号是程序员为一个内存位置或程序中的一条语句选择的名称。语句的标签部分是可选的,如果存在,标签必须以冒号(:)结束。
在为标签选择名称时需要记住的重要一点是,它们应该减少对文档的需求。
指令
该指令是8051单片机汇编语言编程的主要部分,它负责单片机所执行的任务。汇编语言中的任何指令都由两部分组成:操作码和操作数。
指令的第一部分是操作码,它是操作码的缩写,指定了微控制器要执行的操作。汇编语言中的操作码称为助记符。操作码是二进制格式(在机器语言中使用),而助记符(相当于操作码)是类似于英语的语句。
指令的第二部分称为操作数,它表示执行操作所依据的数据。有两种类型的操作数:源操作数和目标操作数。源操作数是操作的输入,而目标操作数是存储结果的地方。
评论
最后一部分是8051汇编语言的结构注释。注释是开发人员为了更容易理解代码而包含的语句,并用于适当的程序文档。
注释是可选的,如果使用,它们必须以分号(;)或双斜杠(//)开头,这取决于组装程序。
下面的语句将展示一些使用标签、指令和注释的可能方法。
标签:标签:
行带标签及说明:标签:MOV A, 22H
带指令和注释的行:MOV A, 22H;这是一个评论
带Label和注释的行:Label:;这是一个评论
只带注释的行:;这是一个评论
还读:8051单片机的体系结构
8051单片机汇编语言指令
汇编语言指令不是给8051微控制器汇编器的指令,即使它们写在程序的助记符域中。汇编语言指令实际上是给汇编程序的指令,指示汇编程序在汇编过程中要做什么。
汇编语言指令对8051微控制器内存的内容没有任何影响(除了DB和DW指令)。
这些指令依赖于汇编程序,对于ASM51汇编程序,以下是指令的类别。
现在我们来看几个重要的和经常使用的汇编语言指令。
ORG -设定原点
8051单片机汇编语言程序将从程序内存地址0000H开始汇编。这也是8051单片机开始执行代码的地址。
按照顺序将程序和数据放置在8051微控制器地址空间的任何位置,可以使用ORG指令。
例子
ORG 0000 h;告诉汇编程序在0000H处汇编下一条语句
LJMP主要;代码内存在0000H。跳转到主要。
ORG 000 bh;告诉汇编程序在000BH处汇编下一条语句
主要:NOP;代码内存为000BH。主要从这里开始。
DB -定义字节
DB指令用于定义一个字节类型变量。使用此指令,您可以定义十进制、二进制、十六进制或ASCII格式的数据。应该有一个后缀' B '表示二进制,' H '表示十六进制。ASCII字符放在单引号中(如' string ')。
例子
ORG 0000 h
DB 10;定义字节10(十进制)并存储在0000H
DB 30 h;定义字节30(十六进制)并存储在0001H
DB '字符串';定义字符串' String '并存储在0002H到0007H
DB 00001111 b;定义字节00001111(二进制)并存储在0008H
DB 1234 h;定义字节34(十六进制)并存储在0009H。只有更低的字节
因为DB只能分配一个字节的内存。
DW -定义词
定义字(DW)指令用于在程序中包含16位数据。DW的功能与DB相似,只是DW生成16位的值。
装备——等同起来
使用EQU指令,你可以将一个符号(或标签)与一个值相关联。
例子
TMP方程式#30;将值#30分配给名称TMP
RED_LED EQU P1.0;P1.0被定义为RED_LED
结束
END指令用于停止装配过程。这应该是程序中的最后一条语句。END指令不能有标号,而且超过END的语句不会被汇编程序处理。
例子
ORG 0000 h
MOV, 20 h
MOV R0, # 30
结束
8051单片机的汇编语言编程示例
示例1
下面是一个简单的8051单片机汇编语言,它将Bank0的R0数据复制到Bank3的R0。
ORG 00 h
MOV R0, # 33 h
MOV, R0
SETB PSW.3
SETB PSW.4
MOV R0,
结束
示例2
在下一个示例中,您可以打开和关闭连接到8051微控制器PORT1的led(闪烁的led)。
在本教程中,我们已经了解了8051单片机汇编语言编程的基础知识,8051汇编语言的结构,汇编语言指令和几个例子。
8反应
这是我写的8085 8080段。你的程序有各种各样的años语言80
我想通过实践来学习8051单片机。你有那方面的工具箱吗?如果是这样,请让我知道价格和多久装运。
嗨,我的名字是harijeet,我是移动技术员,但我可以学习微控制器编程,所以请帮助我带给我一些想法
我想一步一步地讲解一下这个程序,你能解释一下吗?
这对我很有帮助!!我明白! !
10问很多…
weldu k。
它帮助我
你能帮我吗?我需要一个8051装配laungauge程序来找到两个布尔位的XNOR。在携带标志中保存结果。请把这个答案发送到我的电子邮件帐户ajay9517519527@gmail.com
是的,好一些更多的参考链接也添加