版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
9.1汇编语言的语句格式非数字字符开头,后跟字母、数字、“-”、“?”等不能用已定义的保留字(指令助记符、伪指令等)后跟英文冒号“:”Keil的汇编器A51可以识别的语句形式为:标号(即符号地址)[标号:]指令助记符
[操作数1,][操作数2,][操作数3,][;注释]指令助记符是指令功能的英文缩写。数据:二进制(B)十进制(D或省略D)十六进制(H),注意A~F开头时要加“0”ASCII码,如‘A’,‘1245’符号:符号名、标号或“$”(PC的当前值)表达式:由运算符和数据构成(见表4.1)操作数注释英文分号“;”开头9.2伪指令伪指令,也叫汇编命令。仅对汇编过程进行指示伪指令无对应的单片机可执行代码起始地址设定伪指令ORGORG表达式表达式通常为十六进制地址,例:
ORG2000HSTART:MOVA,#20H
…
…ORG可多次使用,但地址值的顺序要由小到大结束汇编伪指令ENDEND该伪指令位于源程序的最后一行。定义字节数据表伪指令DB定义字数据表伪指令DW[标号:]DB字节数据表如:DB 30H,2*3,‘A’,-2[标号:]DW字数据表ORG2000HDATA1:DW1234H,56H
…
…则汇编后,(2000H)=12H,(2001)=34H,(2002H)=00H,(2003H)=56H定义常值为符号名伪指令EQU符号名EQU常值表达式符号名为:地址常数段名字符串寄存器名位名比较:标号只能是地址定义位地址为符号名伪指令BIT符号名BIT位地址表达式如:STBITP1.0;将P1.0的位地址赋给符号名STCFBIT0D7H;将位地址为D7H的位定义为符号名用BIT定义的“符号名”一经定义便不能重新定义和改变其它一些伪指令参见教材表4.29.3
80C51汇编语言设计步骤源程序的编辑依据汇编语言规则用好伪指令符号不用中文SJMP$
用于调试以.ASM存盘源程序的汇编汇编源程序转为目标程序的过程叫汇编汇编通常在Windows下的集成开发环境完成用A51.EXE汇编生成.OBJ、.LIB及.LST目标程序的连接.OBJ、.LIB经BL51.EXE生成无扩展名的绝对地址目标文件绝对地址目标文件可以用于仿真器调试调试无误的目标文件用OH51.EXE转换为.HEX文件.HEX文件经编程器写入单片机存储器1顺序程序(无分支、无循环)9.4
80C51汇编语言程序结构【例】设存放在RAM的50H单元的两个BCD十进制数拆开并转换成相应的ASCII码,并分别存入两个RAM单元中。 MOV A,50H ;将两个BCD码放入A MOV R1,#52H ;(R1)52H MOV @R1,#00H ;52H单元内容清0 XCHD A,@R1 ;将低位BCD码送入52H单元 ORL 52H,#30H ;将低位BCD码转换为ASCII码 SWAP A ;高位BCD码交换到低4位 ORL A,#30H ;将高位BCD码转换为ASCII码 MOV 51H,A ;高位数存入51H单元,即按照 ;字数据的大端模式存储2分支程序(单分支、双分支、多分支)【例】设变量x以补码的形式存放在片内RAM的30H单元,变量y与x的关系是:当x大于0时,y=x;当x=0时,y=20H;当x小于0时,y=x+5。编制程序,根据x的大小求y并送回原单元。
ORG0040HSTART:MOVA,30H;取x至累加器
JZNEXT;x=0,转NEXTANLA,#80H;否,保留符号位
JZDONE;x>0,转结束
MOVA,#05H;x<0处理
ADDA,30HMOV30H,A;X+05H送YSJMPDONENEXT:MOV30H,#20H;x=0,20H送YDONE:SJMPDONEEND【例】根据R7的内容x(转移序号)转向相应的处理程序。设R7内容为0~4,对应的处理程序入口地址分别为PP0~PP4。
START:MOVR7,#3;以转移序号3为例
ACALLJPNUMAJMPSTARTJPNUM:MOVDPTR,#TAB;置分支入口地址表首址
MOVA,R7
ADDA,R7;乘2,调整偏移量
MOVR3,AMOVCA,@A+DPTR;取地址高字节,暂存于R3XCHA,R3INCAMOVCA,@A+DPTR;取地址低字节
MOVDPL,A;处理程序入口地址低8位送DPLMOVDPH,R3;处理程序入口地址高8位送DPHCLRA
JMP@A+DPTR
2024/3/19TAB:DWPP0DWPP1DWPP2
DWPP3DWPP4PP0:MOV30H,#0;转移序号为0时,置功能号“0”于30H单元
RETPP1:MOV30H,#1;转移序号为1时,置功能号“1”于30H单元
RETPP2:MOV30H,#2;转移序号为2时,置功能号“2”于30H单元
RET
PP3:MOV30H,#3;转移序号为3时,置功能号“3”于30H单元
RETPP4:MOV30H,#4;转移序号为4时,置功能号“4”于30H单元
RET
3循环程序(2种:先执行,后判断;先判断,后执行)【例】将内部RAM的50H至5FH单元初始化为00H。MAIN:MOVR0,#50H;置初值
MOVA,#00H;MOVR3,#16;LOOP:MOV@R0,A;循环处理
INCR0;DJNZR3,LOOP;循环修改,判结束
SJMP$;结束处理【例】把内部RAM以BUFFER开始的区域存有一个字符串,其最后一个字符为“$”(ASCII码为24H),统计该字符串的字符数,并将结果存入NUM单元。
CLR A ;用A来计数,先清0
MOV R1,#BUFFER ;将首地址送R1LOOP0: CJNE @R1,24H,LOOP1
;与“$”比较,不等转移 SJMP LOOP2 ;遇到“$”,结束循环LOOP1: INC A ;计数加1 INC R0 ;修改地址指针 SJMP LOOP0LOOP2: INC A ;字符总个数计入$字符 MOV NUM,A ;存入结果4子程序完成通用功能、反复使用的程序设计成子程序。使应用程序结构清晰紧凑,便于阅读和调试
执行要由其它程序来调用,执行完后要返回到调用程序
结构上仍然采用一般程序的3种结构调用时注意:一是现场的保护和恢复;二是主程序与子程序间的参数传递。
现场保护与恢复在主程序中实现(结构灵活)PUSHPSW;保护现场(含当前工作寄存器组号)PUSHACC;PUSHB;MOVPSW,#10H;切换当前工作寄存器组LCALLaddr16;子程序调用,POPB;恢复现场POPACC;POPPSW;含当前工作寄存器组切换在子程序中实现(程序规范、清晰)SUB1:PUSHPSW;保护现场(含当前工作寄存器组号)
PUSHACC;PUSHB;MOVPSW,#10H;切换当前工作寄存器组
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二四年度现代农业项目融资借款合同3篇
- 2024年度高端服装品牌代理与分销合同2篇
- 2024年农业节水灌溉装置安装合同3篇
- 2024年户外运动场所租赁合同范本版B版
- 暖通空调工程招标合同三篇
- 2024年度量子计算机技术转让合同3篇
- 二零二四年高档住宅区门窗安装工程合同2篇
- 2024年出租汽车服务标准合同模板
- 2024年专属:高级管理人员聘用协议3篇
- 2024年版教育软件开发与授权许可合同6篇
- 人教版三年级上册《道德与法治》知识点汇总
- GB/T 94.1-1987弹性垫圈技术条件弹簧垫圈
- GB/T 21709.1-2008针灸技术操作规范第1部分:艾灸
- 国家开放大学电子政务概论形成性考核册参考答案
- 急性ST段抬高型心肌梗死溶栓治疗
- 血透患者自我管理课件
- 2022年旋挖桩(全护筒)施工方案
- 国家开放大学《电子商务概论》形考任务2参考答案
- LED灯箱安装制作及施工方案
- 粮油仓库工程验收规程
- 禾川x3系列伺服说明书
评论
0/150
提交评论