学习利用汇编语言写单片机程序的第一步是要学习汇编语言的相关理论知识,那么实践操作的第一步肯定是从点灯开始啦!
编译环境:keil4
编译语言:汇编语言
内容:
一、keil4建立AT89C52的工程环境
二、程序
三、分析
一、keil4建立AT89C52的工程环境
1、建立新工程 --> Atmel --> AT89C52
2、 选中后会弹出是否导入启动文件
如果是C语言环境选择“是”,这里我们是汇编,选择“否”
3、创建汇编文件,后缀名 .asm,将文件添加到工程
4、环境搭建完成
二、程序
这里我们直接上汇编点亮AT89C52单片机P1.0口的程序,然后再进行语句分析
ORG 0000H
LJMP MAIN1
MAIN:
MOV P1,#001H
MAIN1:
MOV P1,#00AH
END
分析:
1、ORG:规定程序块或数据块存放的起始地址,即规定程序从0000H地址开始,换句话说,以上述程序为例,ORG 0000H 使得LJMP MAIN1这条指令的机器码就在hex文件的0x00的位置
2、LJMP:长转移指令(64KB范围内转移指令)
长转移指令的功能是:把指令码中的目标地址装入程序计数器PC(Program Counter)中,地址范围:0000H - FFFFH,为了使程序设计方便易编,目标地址常采用标号地址(如:MAIN,MAIN1,LOOP…),换句话说,相当于C语言中的goto语句
3、在51单片机中P1口的字节地址为90H,位地址位90H - 97H,可位寻址
MOV P1,#00AH 语句的含义是将P1的低4位赋予立即数,即将90H - 93H 地址赋予 “1”,即将P1.0 - P1.3口拉高
4、#的作用
立即数的标志,如#0FFH,表示的是一个十六进制的数FF,若没有“#”,0FFH则表示位直接地址为00AH的存储单元,AT89C52单片机的RAM中有256个存储单元,每个单元8位,即一个字节,FFH就是最后的那个单元