单片机汇编语言程序设计

时间:2023-03-14作者:佚名
1、汇编语言源程序的格式
1.内部数据传送指令
汇编语言是面向机器的,因此,语言格式因机器不同而异。对MCS-51系统来说,汇编语言中每条语句的格式包括下列4项内容:
标号: 操作码 操作数; 注释

汇编语句中,标号和操作码要用冒号“:”隔开;操作码和操作数之间的分隔符是空格,多个操作数之间用“,”分隔;操作数与注释之间用“;”分隔;操作码是必选项,其余都是可选项,即任何语句都必须包含操作码,其他部分因语句不同而异。
1.ORG伪指令
ORG伪指令称为起始汇编伪指令,一般用于汇编语言源程序或某数据块的开头,格式为:
[标号]:ORG 16位的地址或标号
2.END伪指令
END伪指令称为汇编结束伪指令,经常用在汇编语言源程序的末尾,用来指示源程序结束汇编的位置。即表明程序的结束。一般格式为:
[标号]:END
3.EQU伪指令
EQU伪指令称为赋值伪指令,用于给左边的“字符名”赋值。此伪指令的格式为:
字符名 EQU 数据或汇编符号
4.DATA伪指令
DATA伪指令称为数据地址赋值伪指令,它用来给左边的“字符名”赋值。其一般格式为:
字符名 DATA 数据或表达式
5.BIT伪指令
BIT伪指令称为位地址符号伪指令,用来给符号形式的位地址赋值,此伪指令的格式为:
字符名 BIT 位地址
6.DB伪指令
DB伪指令称为定义字节伪指令,它的功能是从指定单元开始定义(存储)若干个字节的数据或字符,字符若用引号括起来则表示ASCII码。其一般格式为:
标号:DB 字节常数或字符
7.DW伪指令
DW伪指令称为定义字伪指令,其功能为在程序存储器中从指定单元开始,定义若干个字,一个字相当于两个字节。此伪指令的一般格式为:
标号: DW 字常数或字表
8.DS伪指令
DS伪指令称为定义存储空间伪指令,格式为:
标号: DS 表达式

2、MCS—51单片机汇编语言程序设计举例
1. 简单程序设计
例:将一个字节内的两位压缩BCD码拆开并转换成相应的ASCH码,存入两个RAM单元。
解:设两位压缩BCD码已放在内部RAM的20H单元,转换后的ASCII码放在21H和22H单元。根据ASCII码表,字符0~9对应的ASCII码为30H~39H,之间仅相差30H。因此,转换时,只需把20H单元中两位压缩BCD码拆开后,将BCD的高四位置成“0011”即可。相应程序如下:
ORG 1000H
MOV R0, #20H
MOV A, @R0 ;两位BCD码送A
PUSH ACC
ANL A, #0FH ;取低位BCD码
ORL A, #30H ;完成低位转换
INC R0
MOV @R0, A ;低位BCD码的转换结果存入21H中
POP ACC
ANL A ,#0F0H ;取高位BCD码
SWAP A
ORL A, #30H ;完成高位转换
INC R0
MOV @R0, A ;存数
SJMP $ ;结束
END
2. 分支程序设计
例:设变量X存放于R2,函数值Y存放在R3。试按照下式的要求给Y赋值:

单片机汇编语言程序设计
解:这是一个三分支的条件转移程序,可采用CJNE和JC或JNC指令进行判断。
ORG 0500H
MOV A, R2 ;自变量→(A)
CJNE A,#10,L1 ;(A)与10比较
L1:JC L2 ;若X<10,则转L2
ADD A, #01H
MOV R3, A ; 设X>20,Y=1
CJNE A,#21,L3
L3:JNC L4 ;X>20,则转L4
MOV R3,#0 ;20≥X≥10,Y=0
SJMP L4
L2:MOV R3,#0FFH
L4:SJMP $
END
3. 循环程序设计
循环程序一般由以下几部分组成:
1)循环初始化部分
2)循环体部分
3)循环结束部分
例:在内部RAM的20H~2FH连续16个单元中存放单字节无符号数。求16个无符号数之和。
解 这是重复相加问题。16个单字节数的和最大不会超过两个字节,设和存放在31H,30H中。用R0作加数指针,R7作循环次数计数器。程序流程如图3-11所示。
ORG 1000H
MOV R7,#0FH
MOV R0,#21H
MOV 31H,#00H
MOV A,20H
LOOP1: ADD A,@R0
MOV 30H, A
JNC LOOP2
INC 31H
LOOP2: INC R0
DJNZ R7, LOOP1
SJMP $
END
4.查表程序设计
查表程序是根据查表算法设计的。它有两条专门的查表指令:
例:设计一个将16进制数转换成ASCII码的子程序。设16进制数存放在R0中的低4位,要求将转换后的ASCII码送回R0中。
解:给出二种方案。
①计算求解。由ASCII码字符表可知0~9的ASCII码为30H~39H,A~F的ASCII码为41H~46H。因此,计算求解的思路是:若(R0)≤9,则R0内容只需加30H;若(R0)>9,则R0需加37H。相应程序为:
ORG 1000H
MOV A,R0 ;取转换值到A
ANL A,#0FH ;屏蔽高4位
CJNE A,#10,NEXTl
NEXTl:JNC NEXT2 ;若A>9,则转NEXT2
ADD A,#30H ;若A<10,则A (A) 30H
SJMP DONE
NEXT2:ADD A,#37H ;A (A) 37H
DONE: MOV R0,A ;存结果
SJMP $
END
②查表求解。求解时,两条查表指令任选其一。现以“MOVC A,@A PC”指令为例,给出相应程序:
地址 机器码 ORG 1000H
1000 E8 MOV A,R0 ;取转换值
1001 54 0F ANL A,#0FH ;屏蔽高4位
1003 24 03 ADD A,#03H ;计算偏移量
1005 83 MOVC A,@A PC ;查表
1006 F8 MOV R0,A ;存结果
1007 80 FE SIMP $
1008 30 31 32 33 ASCTAB: DB 30H,31H,32H,33H
100C 34 35 36 37 DB 34H,35H,36H,37H
1010 38 39 41 42 DB 38H,39H,41H,42H
1014 43 44 45 46 DB 43H,44H,45H,46H
END
5. 子程序设计
子程序在结构上应具有通用性和独立性,在编写子程序时应注意:
①程序第一条指令的地址称为入口地址,该指令前必须有标号,最好以子程序任务名作为标号,例如显示程序常以DIR作为标号;
②调用子程序指令设在主程序中,在子程序的末尾一定要有返回指令。一般说来,子程序调用指令和子程序返回指令要成对使用,子程序应只有一个出口;
③子程序调用和返回指令能自动保护和恢复断点地址,但对需要保护的寄存器和内存单元的内容,必须在子程序开始和末尾(RET指令前)安排保护和恢复它们的指令;
④调用子程序时,要了解子程序的“入口信息”和“出口信息”,即进入子程序前应给哪些变量赋值,子程序返回时结果存在何处,以便主程序应用这些结果。这就是所谓的参数传递。一般称传入子程序的参数为入口参数,由子程序返回的参数为出口参数。
例:用程序实现C=a2 b2。设a、b均小于10。a存在21H单元,b存在22H单元,结果C存在20H单元。
解:因本题中两次用到求平方的运算,故此把求平方运算编成子程序。依题意编写主程序和子程序如下:
ORG 1000H
MAIN: MOV SP,#60H ;设堆栈指针
MOV A,21H ;取a值
LCALL SQR ;求a2
MOV 20H,A ;a2值送入20H单元
MOV A,22H ;取b值
LCALL SQR ;求b2
ADD A,20H ;求a2 b2
MOV 20H,A ;结果存入20H单元
SJMP $
ORG 2000H
SQR: MOV B,A ;求平方子程序
MUL AB
RET

相关阅读

一例频敏变阻器的接线图

分享一个频敏变阻器的接线图,三相异步电动机频敏变阻器启动器的接线图,通过本例掌握下三相异步电动机频敏变阻器的接线方法,有需要的朋友参考下。 三相异步电动机频敏变阻器...
2023-06-26
一例频敏变阻器的接线图

电缆桥架弯头45°上下爬坡弯制作以及计算公式

目前电建施工中所使用的电缆桥架弯头一般是由电缆桥架厂在出厂之前完整加工好的,但是由于施工现场情况各不相同,所以有的项目需要因地制宜现场加工电缆桥架弯头,这就需要安...
2023-06-11
电缆桥架弯头45°上下爬坡弯制作以及计算公式

2021年报考低压电工的相关事项,现在公布!

【点击领取】 三菱案例 | 西门子案例 | 电工手册 | 工具箱 软件 【点击获取】 三菱PLC例程117个|西门子PLC例程777个 【点击下载】 2020最新电工仿真软件 电工证 作业种类: 电工(俗称操作...
2023-06-27

某工程的机电安装各分部优秀做法,值得借鉴

本工程有冷冻机房、热交换机房、空调机房、生活水泵房 、热回收机房、消防泵房等各类机房共计84间,机房多,安装工艺复杂,设备分批进场周期长。 针对机电设备及管线种类繁多、...
2023-06-11
某工程的机电安装各分部优秀做法,值得借鉴

关掉电灯后,电去哪儿了?

这是一年级小学生可能会问的问题,但要说清楚这个有趣的问题……嗯,允许我多说两句~ 充完电拔下插头、下班了关掉电脑、煮完饭关上电磁炉、睡觉前关了灯……生活中,“随手关...
2023-06-11
关掉电灯后,电去哪儿了?

热销商品

德国进口雅马哈风力灭火机大功率手提森林灭火器落叶工地吹雪机汽

德国进口雅马哈风力灭火机是一款高效、可靠的森林灭火和清理设备。它拥有大功率风机,能够迅速吹散落叶、杂草和积雪,有效清理工地和森林地面。这款灭火机采用先进技...
¥ 692.5

3M自粘橡胶条高硬度耐压实心幕墙玻璃舞台搭建货架专用减震密封条

3M自粘橡胶条是一款专为高要求工业及建筑场景设计的高性能密封减震材料,采用高硬度实心橡胶材质,具备优异的耐压性、抗老化性和持久弹性。其独特的自粘背胶设计,安装...
¥ 1.6

公牛官方旗舰店开关插座空调16A插座五孔10A面板暗装多孔G12白灰

公牛官方旗舰店提供一系列高质量的开关插座和空调配件。这款16A插座五孔面板采用暗装设计,适用于多种安装环境,如墙面、天花板等。它具有10A的电流容量,可以满足家庭...
¥ 5.55

电位器旋钮电流调节螺帽直流逆变电焊机二保焊送丝机通用旋钮B102

电位器旋钮电流调节螺帽适用于直流逆变电焊机和二保焊送丝机,是一款通用的旋钮B102。该旋钮采用优质材料制造,具有耐磨损、耐高温、耐腐蚀等特点,能够长时间稳定运行...
¥ 0.7

西门子开关插座无框皓彩米绒白亚光二三插USB10A五孔一开旗舰店

西门子开关插座无框皓彩米绒白亚光二三插USB10A五孔一开旗舰店,作为西门子品牌的专卖店,提供了一系列高品质、设计新颖的家居电气产品。这里销售的开关插座采用无框...
¥ 8.77

网站栏目