3.1 PIC汇编语言指令格式

PIC系列微控制器汇编语言指令与MCS-51系列单片机汇编语言一样,每条汇编语言指令由4个部分组成,其书写格式如下:

    标号         操作码助记符      操作数1,操作数2    ;注释
   (label)  (opcode)     (operand)        (comment)

指令的标号、操作码助记符和操作数之间由空格作隔离符,空格可以是1格或多格。其他有逗号和分号的地方也可插入空格。汇编语言源程序既可以用大写字母书写,也可以用小写字母书写,还可以二者混合使用。下面对指令格式进行详细说明。

(1)标号。代表指令的符号地址。在程序汇编时,已赋予指令存储器地址的具体数值。汇编语言中采用符号地址(即标号)是为了便于查看、修改,尤其是便于指令转移地址的表示。标号是指令格式中的可选项,只有在被其他语句引用时才需要加上标号。在无标号的情况下。指令助记符前面必须保留一个或一个以上的空格再写指令助记符。指令助记符不能占用标号的位置,否则该助记符会被汇编程序作为标号误处理。另外,标号可以单独占一行,但不能与系统的操作码助记符同名。

(2)操作码助记符。该字段是指令的必选项,可以是指令助记符,也可以由伪指令及宏命令组成。当编译器对其进行处理时,将“指令操作码助记符”与“操作码表”进行逐一比较,找出其相应的机器码,然后逐一代之。

(3)操作数。可以是操作数的数据值,也可以是由符号表示的数据或地址值。若操作数有两个,则两个操作数之间用逗号分开。当操作数是常数时,可以是二进制、八进制、十进制或十六进制数,还可以是被定义过的标号、字符串和ASCII码等。具体表示时,规定在二进制数后加字母“B”,例如11011101B;十六进制数后加字母“H”,例如5EH。注意:若十六进制数是以A~F开头,则应该在前面加一个0,以便汇编器将其与标号和符号名区别,例如0EEH;八进制数前冠以字母“O”,例如O125;十进制数前冠以字母“D”,例如D213。在PIC单片机中,默认的是十六进制。对十六进制数的表示,还可在前面加上0x,如3DH可以写成0x3D。指令的操作数项也是可选项。

(4)注释。用来对程序注释以便于用户理解、修改和调试。注释与程序其他部分用分号隔开。注释可以跟在操作码、操作数或标号后面,也可以单独占用一行而且可以从任何一列开始。编译器处理程序时,当检测到分号,则对其后面的字符不作处理。

在描述PIC汇编语言时将用到指令操作码,以使语句格式简洁,方便对指令系统进行介绍。现将指令操作码符号及意义说明如下:

● f:表示寄存器单元的地址,表示范围为0X00~0X7F共128个单元。

● W:表示工作寄存器。

● b:表示寄存器中一个8位数据中的某一位的地址。

● k:表示常数、立即数或标号。

● x:表示数据无关的位,一般编译器将此位生成为0。

● d:表示目标寄存器,d=0时,结果存放在W寄存器中;d=1时,结果存放在f寄存器中;默认值为d=1。

● PC:表示程序计数器。

● TO:表示计时器时间到标志位。

● PD:表示掉电标志位。