—— —— —— 技术资料下载中心

>> PIC单片机原理 \

PIC 8位单片机的汇编语言
要单片机完成一项基本任务，必须将任务分解成一些具体步骤，再要求它去逐项执行每个步骤，还要对它下命令。该命令在单片机术语中称为“指令”(Inetruction)。完成一项任务所需的所有指令的有序集合就称为“程序”(Programm)。这些指令要预先一条一条顺序地放到单片机的程序存贮器中，单片机在运行时，片中的CPU从程序存贮器中逐条有序取出指令，执行指令，并将有关指令执行完毕，即可完成既定任务。 不同种类的单片机有不同的一套命令(即所谓“指令系统”)。PIC系列的单片机其指令系统与51系列的完全不同。PIC16F84有30余条指令构成的指令系统。每条指令由14位(bit)构成，这些位是二进制码的0和1，如果要使16F84端口B的B0位输出高电平，以点亮一只发光二极管LED，而B口的其余各位仍保持低电平，则需要使单片机执行下列各条指令(机器码)：
11000000000000
00000001100110
11000000000001
00000010000110
10100000000100
早先的技术人员就是用这样的二进制码来编写程序的。上列程序，看起来像天书，很费解，但它完全能指挥单片机的运作。因为单片机实际上是一种复杂的数字逻辑电路。我们都知道，要数字电路运作，必须相应输入高、低电平，对正逻辑而言，高电平为1，低电平为0。上述指令顺序在不同的数位上出现的0和1，经译码后，即可完成各种不同的运作，逐步完成单片机所要执行的任务，如点亮一个LED。
上述各条指令的写法，虽然是完全面向单片机，是用来直接指示单片机该如何运作的。因此，这种由0、1组成的指令称为机器语言。
实际上，这种由二进码构成的指令集不但难读懂，而且用来编程也有困难。因为程序往往不是从头到尾顺序执行，有时还需中途转移到其它单元执行一段程序后再返回来。而指令是一条一条顺序存放在存贮器各个单元内的。因此，如果要转移，需指明具体转到哪个单元，即要写出该单元的地址。但在编写程序时，该程序有多长，具体要放到哪些单元中，都是未知数，又怎能具体指明要转到哪个单元呢?
由于用机器语言会使程序难写、难读，后来一种新型的语言形式——汇编语言就问世了。使用这种语言写程序较方便，也比较容易读懂。不过，和机器语言一样，不同类型的单片机有完全不同的汇编语言。就如不同地区的人有不同的方言一样。在汇编语言中，转移地址是用符号来表示的。现在，我们把上面由机器语言写成的程序改写成由汇编语言构成的程序：
movlw B‘00000000’
tris PORT B
movlw B‘00000001’
movwf PORT B
fin： goto 　 fin
上列各条指令实际上是英语缩写和一些数组成的。如第一条中的movlw就是move Literal to w的缩写，其意义为照原样移入工作寄存器W，而“原样”就是后接引号内的数字‘00000000’。引号前的B表示后续的是二进制数。第二句是将W内的数复制到B口的三态(tri－state)控制寄存器中，以设定B口为输出，然后将00000001送入W中，再复制到B口；最后执行一条无限循环语句以保持B口的状态不变。从单片机外部看去，16F84的第6脚(即B0)维持为高电平，以点亮LED。
由上例可知，汇编语言较之机器语言要好懂得多。同时，最后一句自身循环也是一种转移语句，转移目的地就是此句所在单元地址，如用机器语言，就难以标出具体地址，而用汇编语言助记符fin即可替代。

成都　卫东

知识竞赛试题：
7用语言把上文中汇编程序完成的功能表述出来?

[ 返回 ]