汇编语言设计
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同理,倒数第二个灯亮,以此类推。
分号后面的汉字就是注释,只起到解释作用,但最好在重要的语句后加上注释,以便阅读和修改。注释本身不影响程序的任何功能,你写:“程序开始执行”,和写:“不许你执行,听到没有?”都不影响程序的功能
用符号来表示指令和地址的语言称作符号语言,又称作汇编语言。这是一种面向机器的语言,不同的机器就要有不同的汇编语言,要用汇编语言写程序,就必须对该种处理器十分熟悉(包括指令系统以及硬件),而且编写的程序只能在这种机器上使用(这就是个人电脑的驱动程序要到相应的官网下载的原因,联想的电脑,就得用联想的驱动来驱动电路,其他的不行)。
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同理,倒数第二个灯亮,以此类推。
分号后面的汉字就是注释,只起到解释作用,但最好在重要的语句后加上注释,以便阅读和修改。注释本身不影响程序的任何功能,你写:“程序开始执行”,和写:“不许你执行,听到没有?”都不影响程序的功能
相关文章推荐
- 汇编语言 王爽(第三版)课程设计一
- 王爽汇编语言课程设计1
- 基于汇编语言的电子琴设计(1)
- 实训汇编语言设计——生成方波正弦波
- 实训汇编语言设计——内存多字节10进制数相加
- 实训汇编语言设计——人机对话
- 实训汇编语言设计——删除数组中所有为零的项
- 王爽汇编语言课程设计2
- 王爽 -- 汇编语言课程设计2一些问题记录
- 王爽汇编语言课程设计1
- 实训汇编语言设计——排序& 查找
- 王爽 汇编语言 课程设计2 修正
- 用51单片机汇编语言设计程序,实现一个4位秒表
- 【汇编语言】课程设计1---------------by.龙猫
- 基于汇编语言的电子琴设计(2)
- 实训汇编语言设计——生成方波正弦波
- 汇编语言子程序设计 查找电话号码
- 实训汇编语言设计——学生的成绩统计
- 实训汇编语言设计——键盘命令
- 课程设计1 -------------- 王爽 汇编语言