在上一个8051微控制器教程,我们已经看到了8051微控制器指令集和寻址模式。在本教程中,我们将查看8051 MicroController Assembly语言编程,8051汇编语言的结构,示例程序等。
在探讨8051微控制器汇编语言和编程的详细信息之前,让我们简要了解有关编程语言(特定于微控制器)以及编程语言的类型。
什么是编程语言?
从微控制器(或任何计算机)的意义上进行编程是指编写由处理器按特定顺序执行以执行预定义任务的一系列指令。编程还涉及调试和故障排除指令和指令序列,以确保执行所需的任务。
像任何语言一样,编程语言具有某些单词,语法和规则。8051微控制器有三种类型或级别的编程语言。这些级别基于语言中的语句类似于微控制器执行的操作或任务的近距离。
编程语言的三个级别是:
- 机器语言
- 组装语言
- 高级语言
机器语言
在机器语言或机器代码中,指令以二进制位模式(即二进制数字1和0的组合)编写,它们存储为高电压和低电压级别。这是编程语言的最低级别,并且是微控制器或微处理器实际理解的语言。
组装语言
编程语言的下一个级别是汇编语言。由于机器语言或代码涉及1和0中的所有说明,因此人类很难使用它进行编程。
汇编语言是机器语言的伪英语表示。8051微控制器组装语言是英语的组合,如称为mnemonics和十六进制代码。
它也是一种低级语言,需要对微控制器的体系结构进行广泛的了解。
高级语言
该名称高级语言意味着您不必担心微控制器的架构或其他内部细节,并且他们使用人类易于理解的单词和陈述。
很少有高级语言的示例是基本的,c pascal,c ++和java。一个名为编译器的程序将将以高级语言编写的程序转换为机器代码。
为什么要组装语言?
尽管高级语言易于使用,但以下原因指出了汇编语言的优势
- 组装中编写的程序的执行速度更快,并且记忆力较少。
- 借助汇编语言,您可以直接利用微控制器的所有功能。
- 使用汇编语言,您可以直接,准确地控制Microcontroller的所有资源,例如I/O端口,RAM,SFRS等。
- 与高级语言相比,汇编语言的规则和限制更少。
还请阅读这篇有趣的文章:8051微控制器指令集
8051微控制器组装语言的结构
这里讨论了8051微控制器组装语言的结构或语法。8051微控制器的汇编语言程序的每行或语句包括三个字段:标签,指令和评论。
这些字段的排列或它们出现的顺序如下所示。
笔记:标签和评论的括号意味着这些字段是可选的,并且在程序中的所有语句中都不得使用。
在查看这三个字段之前,让我们首先查看一个示例,说明8051微控制器汇编语言中的典型语句或行的样子。
TestLabel:Mov A,24h;这是示例评论
在上述语句中,“ TestLabel”是标签的名称,“ Mov A,24H”是指令,“这是示例评论”是评论。
标签
该标签是记忆位置或程序中的语句选择的程序员名称。该语句的标签部分是可选的,如果存在,则必须用结肠终止标签(:)。
在选择标签的名称时要记住的一个重要点是,它们应减少文档的需求。
操作说明
该指令是8051微控制器汇编语言编程的主要部分,因为它负责微控制器执行的任务。汇编语言中的任何说明都由两个部分组成:OP代码和操作数。
指令的第一部分是OP代码,该代码是操作代码的简短,指定了由MicroController执行的操作。装配语言中的操作编码称为助记符。OP编码以二进制格式(用机器语言使用),而助记符(等效于OP编码)的英语语句类似于语句。
指令的第二部分称为操作数,它表示执行操作的数据。操作数有两种类型:源操作数和目标操作数。源操作数是操作的输入,目标操作数是结果存储的地方。
注释
8051汇编语言结构的最后一部分是评论。评论是开发人员包含的陈述,以便于理解代码,并用于适当的程序文档。
注释是可选的,如果使用,则必须以半斜率(;)或双斜线(//)开始,具体取决于汇编器。
以下语句将显示一些使用标签,指令和评论的方法。
没有指示和评论的标签:标签:
与标签和指令排队:标签:MOV A,22H
与指示和评论相符:MOV A,22H;这是评论
与标签和评论排列:标签:;这是评论
仅注释:;这是评论
另请阅读:8051微控制器体系结构
8051微控制器组装语言指令
汇编语言指令并不是8051微控制器汇编程序的说明,即使它们是在程序的助记符字段中写的。汇编语言指令实际上是对汇编程序的说明,并指示汇编程序在组装过程中该做什么。
汇编语言指令对8051微控制器内存的内容没有任何影响(DB和DW指令除外)。
这些指令取决于汇编程序程序,如果ASM51汇编程序,以下是指令的类别。
现在,我们将看到一些重要和常用的集会语言指令。
org - 设置起源
8051 MicroController Assembly语言程序将从程序内存地址0000H开始组装。这也是8051微控制器将开始执行代码的地址。
为了将程序和数据放在8051微控制器的地址空间中的任何位置,您可以使用ORG指令。
例子
org 0000h;告诉汇编器将下一个语句在0000h组装
LJMP主;0000H的代码内存。跳到主。
org 000bh;告诉汇编器将下一个语句组装为000BH
主:nop;代码存储器以000BH为单位。主要开始。
DB - 定义字节
DB指令用于定义字节类型变量。使用此指令,您可以以十进制,二进制,十六进制或ASCII格式定义数据。二进制的“ b”应该有一个后缀,而“ h”的后缀为hex。ASCII字符放在单引号(例如“字符串”)中。
例子
org 0000h
DB 10;定义字节10(十进制),并在0000H处存储
db 30h;定义字节30(十六进制),并以0001H存储
db“ string”;定义字符串“字符串”,并以0002h至0007h的价格存储
db 00001111b;定义字节00001111(二进制),并以0008h的价格存储
DB 1234H;定义字节34(十六进制),并以0009H存储。只有较低的字节是
被接受为DB只能分配内存的字节。
DW - 定义单词
定义单词(DW)指令用于在程序中包含16位数据。DW的功能与DB的功能相似,除了DW生成16位值。
等等 - 等同
使用Equ指令,您可以将符号(或标签)与一个值相关联。
例子
TMP Equ#30;将值#30分配给名称TMP
red_led equ p1.0;P1.0定义为红色
结尾
最终指令用于停止组装过程。这应该是程序中的最后一句话。End Directive无法具有标签,并且汇编程序将不会处理超出终点的语句。
例子
org 0000h
移动A,20小时
MOV R0,#30
结尾
8051微控制器组装语言编程的示例
示例1
以下是8051 MicroController的简单组装语言,该语言将Bank0 R0的数据复制到Bank3的R0。
org 00h
mov r0,#33h
移动A,R0
SETB PSW.3
SETB PSW.4
mov r0,一个
结尾
示例2
在下一个示例中,您可以打开和关闭LED(闪烁的LED),这些LED连接到8051 MicroController的Port1。
在本教程中,我们看到了8051微控制器汇编语言编程的基础知识,8051的汇编语言结构,汇编语言指令和很少的示例。
9个回应
Es El Mismo Codigo Maquina Que Para El 8085,8080。ya que yo Programe variosañosen ense lenguage en los 80
我喜欢通过实践学习8051微控制器。您是否有工具套件。如果是这样,请告诉我价格和运输所需的时间。
嗨,我叫Harijeet,我是移动技术人员,但我可以学习微控制器编程,所以请帮助我的乐队给我一些想法
我想逐步解释这个程序。.您能解释一下吗?
它对我很有帮助!我很感激!!!
10q很多…。
Weldu k。
它帮助到我
你能帮助我吗。我需要一个8051组件的Laungauge程序来找到两个布尔钻头的Xnor。将结果保存在随身携带的标志中。请在我的电子邮件accont上发送此答案ajay9517519527@gmail.com
是的,好一些参考链接也添加了
我相信您已经提到了一些非常有趣的细节,谢谢您的帖子。