MCS-51系列单片机是单片机家族中很有生命力的品种。MCS-51编译器、仿真器也顺应操作系统从DOS到Windows的转换而不断进步。但是,很多编译器往往会设置一些限制:“文件太大!这个编译器软件限制编辑区缓存为32字节”,如图1所示。如果使用早期没有限制的DOS版的编译器A51.exe或ASM51.exe,首先得有DOS命令行外挂参数的基础,其次它特别挑剔文件的地址,不方便使用中文名字或是长文件夹名,而且它所编译的程序文件格式是OBJ格式,并不是相关工具所要求的HEX格式,还得找到Oh.exe工具把OBJ格式变为HEX格式。那么,怎样才能简单又不受限制地编译51 汇编程序文件呢?

本文介绍一款由笔者编写的小巧软件“XA51汇编助手”,不受文件大小和长文件名、汉字文件夹名的限制,直接由.a51或.asm文件生成.LIS(列表文件)、.OBJ、.HEX(十六进制格式数据文件)。同时,兼有汇编语言编辑器和方便的程序错误对照修改功能。所提供的错误信息也是经过汉化的,更容易看懂。下面对其使用方法进行介绍。
一、编译器功能的使用
“XA51汇编助手”(图2)的使用非常简单。只需单击“文件—打开后即汇编”(或使用快捷键Ctrl+F7),在弹出的“打开文件对话框”中找到并打开你要编译的51汇编语言程序文件,即可完成编译。51汇编语言程序文件可以是.a51和.asm两种格式的文件,甚至是任何扩展名的纯文本格式文件,只要其文件内容是符合51汇编语言规范的。

打开51汇编语言程序文件,就会自动进行汇编和OBJ文件的格式转换。如果51汇编语言程序文件不存在特别重大的语法错误,在原先的51汇编语言文件所在文件夹下就已经多出了由汇编过程生成的.LIS、.OBJ、.HEX三个新文件。如果51汇编语言文件正确无误,那么编译工作就可圆满完成。
如果51汇编语言程序文件还有一些错误,那也不要紧。首先,编译程序将会跳出一个对话框,告诉你编译过程中总共发现了几处警告、几处错误(见图3)。 “警告”部分一般是可以忽略的,“错误”就必须要修改了。

这时,51汇编语言程序文件的内容已经显示于编辑框中,汇编后生成的带错误提示的.LIS列表文件内容则已经显示于下边的列表文件框中。列表文件框和编辑框是相关联的,选中了列表文件框某一行内容,则编辑框的相应行内容会立刻被标示出来,这就极大地方便了汇编语言程序的修改工作。
“XA51汇编助手”能方便地查找并修改汇编语言程序的出错行。通过点击工具栏上的“寻错”按钮,可以依次找到有错误提示的行。出错行的最左端有“***”标记,只要点中该行,编辑框中相应的程序语句行就会被标示出来(如图2所示),可以按照错误提示信息来修改51 汇编语言源程序。是不是方便多了呢?每处出错行修改完后,再点击工具栏上的“寻错”按钮,就可以找到下一个出错行,直至全部错处改正为止。修改完成后,点击工具栏上的“汇编”按钮,修改后的51汇编语言源程序就会被保存并重新编译生成.LIS、.OBJ、.HEX文件。如果在编译过程中发现源程序仍有错,那么新一轮的修改过程将和前一次过程同样简便。
有两个在编写51汇编语言程序时常会犯的失误。如果事先避免,将会减少一大批编译错误提示信息的出现。第一个常出现的失误是语句注释前使用了中文的分号,编译程序认不出这个符号,从而提示一连串的错误信息,还会殃及之后的一行也被报出错。建议编译之前对整个51汇编语言源程序进行一次用英文分号“;”替换中文分号“;”的工作,这对于顺利完成编译过程会有很大的帮助。第二个常会犯的错误是将“PUSH ACC”和“POP ACC”指令简化为“PUSH A”、“POP A”。这在有些编译器可能是允许的,但在本编译器中将通不过。其他指令里原本使用的是“A”这一标签,所以不受影响。因此需特别注意,这两条指令是不能简化的。如果含有这种简化的指令,应该在查找出来后将后面的“ACC”补齐。另外,字母的大小写在编译过程中是不区分的,混用是没有关系的。
二、编辑器功能的使用
作为51汇编语言程序的编辑器,“XA51汇编助手”使用起来会有特别方便的地方。
51汇编语言程序可以用普通的文本编辑器来编写。相比之下,“XA51汇编助手”的第一个特色是双编辑框,当选择“新建”或“打开”一个51汇编语言程序时,就会出现如图4所示的双编辑框。上下两个编辑框显示的内容完全一样,这就给编程过程中查看程序不同位置的内容带来了方便,而且还方便了对程序不同位置的内容进行剪切、复制和粘贴,体现了其作为“助手”的特色。
“XA51汇编助手”的第二个特色是文件关联。单击菜单栏上的“工具—文件关联”(或使用快捷键Ctrl+G),就会弹出一个“设置文件关联”选项对话框(如图5所示),选中你所希望关联的文件扩展名,单击“关联”按钮,即可将相应扩展名文件设置为“XA51汇编助手”关联文件。以后,只要双击这些文件,就会直接由“XA51汇编助手”来打开。建立文件关联后,对于.a51和.asm文件,会由“XA51汇编助手”双编辑框显示出来,其他扩展名文件则由“XA51汇编助手”内带的“Hex、Bin、Txt文件查看器”来显示。
“XA51汇编助手”的第三个特色是51编译器集成。前面已经介绍了“XA51汇编助手”编译器功能的使用,51汇编语言程序编写完成后只要单击工具栏上的“汇编”按钮即可完成编译,并进行修改。在进行编译前,“XA51汇编助手”会自动将51汇编语言程序中所有中文的冒号“:”和分号“;”替换为英文的冒号“:”和分号“;”,并自动在51汇编语言程序末尾添加“END”标记,尽最大可能减少编译错误的发生,减少编程者修改程序的工作量。
三、文件查看器的功能
“XA51汇编助手”内带一个“Hex、Bin、Txt文件查看器”,可以用于查看51汇编过程中所产生的Hex、Bin、Obj、Lis等格式的文件内容。其中,Bin、Obj格式的文件将以十六进制数据的形式显示,Hex、Lis及其他格式的文件将以文本形式显示出来。
51汇编语言程序编译完成后,单击“XA51汇编助手”主界面工具栏上的“.Hex”、“.Obj”按钮,即会跳出“Hex、Bin、Txt文件查看器”并显示编译产生的Hex、Obj文件内容(如图6所示)。要想查看Lis文件,可以单击“XA51汇编助手”主界面菜单栏上的“51汇编—查看Lis文件”项。
建立文件关联后,只需双击Hex、Bin、Obj、Lis、T51等为扩展名的文件,就会跳出“Hex、Bin、Txt文件查看器”并显示选中文件的内容。在文件内容框的上边还会显示所打开文件的详细路径和文件名。
除了配合“XA51汇编助手”主程序查看51汇编过程中所产生的文件外,“Hex、Bin、Txt文件查看器”还是一个很好的文本文档查看器。点击其菜单栏上的“文件—打开”,除了Bin、Obj格式的文件将以十六进制数据的形式显示外,其他格式文件都将以文本形式显示出来,与用“记事本”打开文件时显示方式是一样的。单击“Hex、Bin、Txt文件查看器”菜单栏上的“文件—以16进制形式打开”(或使用快捷键F6),则所有的打开文件都将以十六进制数据的形式显示,所有文字将以ASC码和区位码形式出现(如图7所示)。

相信“XA51汇编助手”将会成为MCS-51单片机开发工作过程中的一个好工具。读者可在本刊网站的12期文章目录中下载本文软件。如果您在使用“XA51汇编助手”时有好的建议和意见,欢迎通过电子邮件radio@radio.com.cn提出。
文/邢矫健