您的位置:首页 > 其它

汇编语言设计

2009-12-16 21:35 78 查看
汇编语言1
用符号来表示指令和地址的语言称作符号语言,又称作汇编语言。这是一种面向机器的语言,不同的机器就要有不同的汇编语言,要用汇编语言写程序,就必须对该种处理器十分熟悉(包括指令系统以及硬件),而且编写的程序只能在这种机器上使用(这就是个人电脑的驱动程序要到相应的官网下载的原因,联想的电脑,就得用联想的驱动来驱动电路,其他的不行)。

  MCS51系列单片机汇编语言

  各种汇编语言的格式是相同的,表示如下:

  【标号:】操作码助记符 【第一操作数】,【第二操作数】,【第三操作数】,【;注释】

  即一条汇编语句由标号,操作码,操作数和注释四个部分组成。其中括号中的内容是可选择部分,可有可无,视需要而定。

一.标号

  标号表示指令位置的符号地址,它是一英文字母开始的由多个字母或者数字组成的字符串,并以“:”结尾。通常在子程序入口或者转移指令的目标地址出才赋予标号。并不是每条语句都需要标号,只有那些欲被其他语句引用的语句之前才要加标号。

  MCS51汇编语言有关标号的规定如下:

  1.。 标号一般由1到8个ASCII码字符组成,最多可由31个字符构成,字符可以是字母,数字和其他字符

  2。第一个字符必须是字母

  3.不能使用本汇编语言已经定义了的符号作为标号,如助记符,伪指令以及寄存器的符号名称等

  4.标号后必须跟以冒号

  5.同一标号在一个程序中只能定义一次,不能重复定义

二。操作码

  操作码助记符是指令操作功能的英文缩写。每条指令都有操作码,这是指令的核心部分,是唯一不能空缺的部分。

三。操作数

  操作数用于给指令的操作提供地址或者数据。

四。注释

  注释不属于语句的功能部分,只起到解释作用,增加语句可读性。

  为了增强感性认识,我在这里写一个小程序说明一下

  此程序为流水灯(俗称“跑马灯”),执行程序后,四个LED循环点亮。

  ORG  0000H  ;程序开始,首地址为0000H

  AJMP  MAIN  ;跳转到主函数执行

  ORG  0030H  ;主函数入口地址0030H

MAIN:          ;主函数

  MOV  P1,#0FEH  ;将0FEH十六进制数(转化为二进制是1111 1110)送到P1口

   ACALL  DEL  ;调用DEL延时程序

  MOV  P1,#0FDH  ;将0FDH送到P1口

  ACALL  DEL  ;调用延时函数

  MOV  P1,#0FCH  ;送值

  ACALL  DEL  ;调用

  MOV  P1,#0FBH  ;送值

  ACALL  DEL  ;调用

  AJMP  MAIN  ;跳转到主函数,无限循环执行

DEL:  MOV  R5,#05H  ;延时函数,给寄存器R5赋值05H

DEL1:  MOV  R6,#0FFH  ;延时函数,给寄存器R6,赋值FFH

DEL2:  MOV  R7,#0FFH  ;延时函数,给寄存器R7赋值FFH

DEL3:  DJNZ  R7,DEL3  ;如果R7减一后大于零,则跳转到DEL3执行,若等于零,向下执行

  DJNZ  R6,DEL2  ;若R6-1大于0,则跳转到DEL2执行,否则继续向下执行

  DJNZ  R5,DEL1  ;同上

END  ;程序结束

说明:十六进制数,如果开头是大写字母,则前面要加0,如0FEH

  DEL是延时函数,被主函数调用,所以要加标号。DEL程序包括DEL,DEL1,DEL2,DEL3,他们整体叫延时程序,延时可以理解为一个姓氏,这个姓氏有不同的人,比如你(主程序)要找姓付的人(延时程序)干活,你大叫一声(调用):“姓付的!!!出来干活!!”然后,付老大,付老二,付老三,付老四都出来了,理解吧?

  上面程序中,P1,0FEH等叫做操作数,P1 在上面的程序中始终为第一操作数,作用是提供地址。后面的十六进制数提供数据,LED是低电平驱动,即遇到“0”亮,那么,0FEH是1111 1110B就是最后一个灯亮,0FDH同理,倒数第二个灯亮,以此类推。

  分号后面的汉字就是注释,只起到解释作用,但最好在重要的语句后加上注释,以便阅读和修改。注释本身不影响程序的任何功能,你写:“程序开始执行”,和写:“不许你执行,听到没有?”都不影响程序的功能
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: