Linux命令行51单片机汇编语言开发环境搭建和开发入门:vim+as31+emu8051

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


Keil?

如果你已经查阅了一些关于使用汇编语言进行51单片机开发的资料,你会发现他们大多使用了keil作为开发ide。客观的说,keil作为一个入门ide有其不可替代的优势。使用keil你可以几乎不去关心代码的编译过程和环境的配置,这显然是对新手入门极其友好的。

但是,如果你深入希望了解单片机结构,或者你是一个已经有相当的开发经验,希望提高开发效率并深入底层,又或者你希望使用linux进行51单片机的开发,那么keil不甚良好的扩展性和无法跨平台的特性就显得有些不合时宜了。因此,本文介绍了在linux下进行8051单片机汇编语言开发的编译和仿真工具。


一、工具介绍

as31

as31是一个linux下的命令行汇编语言编译工具,遵循intel 8051标准。
其manal页面如此描述:

DESCRIPTION
As31 assembles infile.asm into one of several different output formats. The output will be in a file called infile.obj. The .asm extenstion is required.
As31 将 infile.asm 汇编成几种不同的输出格式之一。输出将位于名为 infile.obj 的文件中。 .asm 扩展名是必需的。

关于8051汇编语言的标准

8051汇编语言有多种标准,常见的如:

intel 8051: 8051微控制器的原始汇编语言,由Intel设计。
keil 8051: 是Intel 8051的超集,添加了一些额外的指令和功能。但基本语法与Intel 8051兼容。
其他: SDCC 8051、Hi-Tech 8051…

as31使用intel标准的intel 8051汇编,如果你尝试使用它进行编译使用keil汇编语言编写的程序,你会得到一堆的错误 : )
因此,如果你的程序在编译是出现了语法错误,请检查你的程序是否遵循了intel 8051汇编语言的标准。
你可以使用man as31查看as31支持的汇编语言语法格式。
在这里插入图片描述

emu8051

emu8051是linux下的8051 单片机的仿真器和模拟器,主要用于程序的仿真验证。
它同时具备命令行模式和gui模式,你可以在命令行使用emu8051-cli使用命令行模式,emu8051-gtk使用gui模式。
在这里插入图片描述
在这里插入图片描述
其manal页面:

DESCRIPTION
emu8051 is a simulator/emulator for the Intel 8051 family of microcon‐trollers. It is available in two versions: a console (text-only) ver‐sion and a graphical version (using the GTK+ toolkit). This is an Open-Source project. The program can load Intel HEX files.
Once loaded, a program can be run (it will run indefinitely or until a breakpoint is encountered). You can also use the STEP button to execute only a single instruction at a time and see the effects on registers and memory.
It is written in C++, and uses Perl scripts to generate automatically C++ functions corresponding to each assembly instruction of the 8051 microcontroller.
emu8051 是 Intel 8051 系列微控制器的模拟器/仿真器。 它有两个版本:控制台(纯文本)版本和图形版本(使用 GTK+ 工具包)。 这是一个开源项目。 该程序可以加载 Intel HEX 文件。
一旦加载,程序就可以运行(它将无限期地运行或直到遇到断点)。 您还可以使用 STEP 按钮一次仅执行一条指令,并查看对寄存器和内存的影响。
它是用C++编写的,并使用Perl脚本自动生成与8051微控制器的每条汇编指令相对应的C++函数。

vim配置

本文假定你已经接触过vim,如果你想了解vim的基本使用,请搜索vim相关文章。

一般来说,汇编文件不太需要语法检查。
如果你已经开启vim的语法检查功能,在asm中你可能会因为检查规则不正确得到莫名其妙的报错,如果你遇到了这一问题,你可以在你的vimrc文件中添加let g:syntastic_mode_map = { 'mode': 'active', 'passive_filetypes': ['asm'] }以关闭asm文件的语法检查功能。

二、工具安装

在debian系的linux发行版中,您可以使用apt工具进行安装。

sudo apt install as31 emu8051

三、编写汇编程序

作为例子,我们使用vim编写一个交换字节高低位并赋给其他地址的程序,源码如下:
在这里插入图片描述

四、编译得到hex文件

使用as31进行编译
在这里插入图片描述
编译成功。
可以看到得到了hex文件,这就是我们的输出了。

三、仿真验证

尝试gui仿真

首先尝试使用gui界面,如果你想使用命令行请跳过这一段。

在命令行使用emu8051-gtk打开gui界面。

1 准备工作

为了方便我们观察,我们选择页面顶部的view -> layout -> layout2并重启emu8051。
在这里插入图片描述
在这里插入图片描述

2 导入hex文件

左上角选择File -> Open Intel Hex file
在弹出的窗口中找到我们刚刚生成的hex文件并点击确认。
这样我们的hex文件就成功导入了。

3 界面元素介绍

我们可以看到界面分为4个区:分别是
Registers: 寄存器
Program: 程序,即我们的汇编程序
Internal memory: 内置存储
External memary: 外置存储

左上角有四个按钮:从左向右依次为复位、运行、停止、单步运行。

按钮右侧为PSW寄存器和仿真时间。

4 开始调试

我们在IRAM中将0000H的值改为7F,开始运行。
等待一段时间,点击停止。
可以看到程序运行成功。
在这里插入图片描述

命令行仿真

在命令行输入emu80051-cli打开命令行仿真器:
在这里插入图片描述
完成仿真。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值