MPASM是Microchip公司推出的可适用于其PIC16/17全部单片机的宏汇编器,功能齐全,全屏幕操作。
§4.1 启动和操作
§4.2 汇编语言格式
PIC汇编语句的格式为:
〔标号〕〈指令助记符〉〔操作数〕 ;〔注释〕
指令助记符与标号间至少应有一个空格。若一行语句没有标号,则指令助记符前必须至少有一个空格,否则会当成是标号。一条语句最多字符个数为255。
一、标号
标号须由第一格起始写,最多可达31个字符,且第一个字符必须是字母。标号后可跟冒号(:)、空格或行结束符。除非使用选择项/C,否则标号中的字母大小写是不一样的,如:
START
start
是二个不同的标号。
二、指令助记符
指PIC的指令或伪指令,宏定义符等。具体参阅有关各章节和资料。
四、注释
以分号(;)起始,用户可以注释程序。
CLRF F10 ; 清F10寄存器
§4.3 伪指令
所谓伪指令,是一些用来控制汇编器的命令。它们可放在源程序(.ASM)中,但不是被翻译成可执行的机器代码,而是用来控制汇编器的输入/输出以及数据的定位等。
在MPASM中,有四类伪指令:
1、数据伪指令:用于控制程序存储器的定位,定义数据的名称等。
2、列表伪指令:用于控制MPASM产生的列表文件(.LST)的格式等。
3、控制伪指令:用于控制汇编的路径,如条件汇编等。
4、宏汇编指令:用于控制宏定义体中的运行和数据定位。
一、数据伪指令
二、列表伪指令
三、控制伪指令
注:VARIABLE也是一条定义变量的伪指令,和EQU及SET不同的是它不要求变量在定义时必须赋值给初值,如上例中的变量i。关于这条伪指令不再赘述。
四、宏定义伪指令
1. MACRO--宏定义命令。宏是一段指令,可以插在源程序中。宏必须事先定义好,宏之间可以互相调用,也可以自己递归调用。宏本身不会产生代码,只是在调用它时把宏体插入源程序,这点和子程序调用有本质不同,即宏并不会节省程序空间,它主要的好处是令程序书写简洁明了。
§4.4 错误/警告信息
MPASM汇编一个源程序后,可以产生一个.ERR文件,该文件用来存放汇编后可能产生的错误或警告信息。必须强调的是错误信息(Error)是指出源程序中出现"致命"(fatal)的错误,用户必须修改直至汇编后Errors= 0。而警告信息(Warnings)是指出源程序中可能有问题的地方,但并不一定是"致命"错误,只是提醒用户去注意这些被警告的地方。如果用户可以确认无误,便可以不理会产生的Warnings。
一、错误信息
1.Address exceeds maximum limit avaiable
程序存储器地址溢出(超出)有效范围。
2.Attempt to redefine reserved word
MPASM中的保留字如"END"、"ERROR"、"HIGH"、"LOW"和"PAGE"被重定义,用户必须避免再将其用做标号或变量。
3.Branch or jump out of range
程序跳转指令如"GOTO"、"CALL"等超出规定的范围。
4.Couldn't open…
TMPASM 不能打开".OBJ"、".map"、".Hex"、".Err"、".Lst"或".ref"文件。一般是电脑已没有足够的磁盘空间。
5.Couldn't open source file…
汇编的源程序文件不存在。
6.Duplicate lable or redefininy symbol that cannot be redefined
标号或变量名重复定义。
7.Error in parameter
参数错误。
8.Expected…
源程序行有错。
9.File not found
指定的文件找不到。
10.Illegal argument
非法参数。
11.Illegal condition
IF语句中的条件符号出错。
12.Illegal condition,EOF encountered before END or conditional end directive
IF、WHILE或MACRO语句中缺少相应的ENDIF、ENDW和ENDM。
13.Illegal conditional compile
IF/ELSE/ENDIF结构书写有错。
14.Illegal character…in label…
在标号字符中出现非法字符。合法的字符是"-"、"·"、"A"~"Z"、"a"~"z"、"0"~"9"。
15.Illegal digit
非法数字。如在十进制数中出现十六进制符等。
16.Illegal opcode
非法操作数。
17.Include file not found
Include 指令中的文件找不到。
18.Include files nested too cleep
Include 文件嵌套太多。Include 文件嵌套最多的为5重。
19.Macro name missing
缺少宏定义名称。
20.Marco nested too deep
宏体嵌套太多。宏体中最多可嵌套8重。
21.Missing arguments
缺少参数,如指令中缺少操作数等。
22.Missing terminator
缺少配对符,如各种括号")"、"〕"、"}"或"·"、空格等。
23.Nested forward reference not allowed.
使用未定义的标号、变量、宏定义等。或者是MPASM不能确认标号的类型,一般由标号重复定义引起。
24.Out of memory
程序空间溢出。
25.Overwriting previous address contents
程序空间重复使用。一般由地址定义指令ORG定义不当引起。
本文关键字:暂无联系方式综合-其它,单片机-工控设备 - 综合-其它
上一篇:自制51芯片仿真器完全手册