




已阅读5页,还剩33页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机原理及应用 第四章汇编语言程序设计 单片机原理及应用 单片机原理及应用 第一节伪指令 伪指令汇编时不产生机器代码 仅提供汇编控制信息 1 定位ORGmm 十六位地址值ORG指令出现在程序或数据的开始 指明语句后的程序 数据的起始地址 例 ORG0030H 单片机原理及应用 单片机原理及应用 2 等值字符名称EQU使两边的两个量等值 例如 TESTEQU76HCOUNEQU5 单片机原理及应用 单片机原理及应用 3 定义字节 DB项或项表指一个字节或用逗号分开的字节数据 或用引号括起的字符串 DB指令将指定的字节数据存入程序存储器的数据区 左边的标号就是DB定义的第一个字节数据的存储地址 例 ORG2000HFIRSTDB12H 34HSECONDDB ERROR 单片机原理及应用 单片机原理及应用 4 定义字 DW项或项表指一个字或用逗号分开的字数据 DW常用来定义16位地址 例 ADDRDW2000H注意 高八位在前 低八位在后 单片机原理及应用 单片机原理及应用 5 定义存储区 DS标号所指的单元开始 保留一定数量的内存单元 以备后用 6 位地址赋值字符名称BITnn 位地址将位地址n赋给字符名称 程序中用字符名称用作位地址 单片机原理及应用 单片机原理及应用 7 汇编结束END告诉汇编程序 该程序段已结束 END后的源程序将不进行汇编处理 3 单片机原理及应用 单片机原理及应用 第二节汇编语言程序设计 一 顺序程序设计 例4 2 将一个字节内的两位压缩BCD码拆开并转换成相应的ASCII码 存入两个RAM单元 单片机原理及应用 单片机原理及应用 ORG0100HMOVR0 90HMOVA R0PUSHACCANLA 0FHORLA 30HINCR0MOV R0 APOPACCANLA 0F0HSWAPAORLA 30HINCR0MOV R0 ASJMP END R0 地址指针 入栈保存 两位BCD码送A 低位BCD转换 存ASCII码 存ASCII码 高位BCD转换 取BCD码 单片机原理及应用 单片机原理及应用 二 分支程序设计 例4 5 两个带符号数分别存于ONE和TWO单元 试比较它们的大小 并将较大者存入MAX单元中 两数相等则将任一个存入MAX即可 解 将其相减结果的正负和溢出 OV 标志结合在一起判断大小 单片机原理及应用 单片机原理及应用 1 结果若为正则 ACC 7 0 OV 0 X YACC 7 0 OV 1 X Y 2 结果若为负则 ACC 7 1 OV 0 X YACC 7 1 OV 1 X Y 单片机原理及应用 单片机原理及应用 ONEEQU30HTWOEQU31HMAXEQU32HCLRCMOVA ONESUBBA TWOJZXMAXJBACC 7 NEGJBOV YMAXSJMPXMAXNEG JBOV XMAXYMAX MOVA TWOSJMPRMAXXMAX MOVA ONERMAX MOVMAX ASJMP X Y 为负转NEG X Y转XMAX 正 溢出 Y大 无溢出 X大 负 溢出 X大无溢出 Y大 较大值送MAX 单片机原理及应用 单片机原理及应用 三 循环程序设计 例4 6 内部RAM中30H开始存放有10个单字节无符号数 试编程求和 并将所求得的和存放到3EH和3FH单元中 3EH存放和的低字节 y xi化为0y 1iy xiy i 1i i n 单片机原理及应用 单片机原理及应用 MUAD MOV3EH 0MOV3FH 0MOVR0 30HMOVR7 10MU1 MOVA R0ADDA 3EHMOV3EH ACLRAADDCA 3FHMOV3FH AINCR0DJNZR7 MU1SJMP 累加和清0 R7循环次数 R0地址指针 8位相加 修改指针 进位位加和高8位 未加完继续 单片机原理及应用 单片机原理及应用 例1 指针值作为循环终止条件 将内部RAM中30H 32H的内容左移4位 移出部分送R2 56 00 A R0 32H 思路 利用字节交换和半字节交换指令累加器A与R0所指的单元内容交换 单片机原理及应用 单片机原理及应用 RL43 MOVR0 32HCLRALOOP XCHDA R0SWAPAXCHA R0DECR0CJNER0 2FH LOOPSWAPAMOVR2 ARET 半字节交换 字节交换 高低字节交换 单片机原理及应用 单片机原理及应用 例2 多重循环 延时程序 DEL MOVR7 2001DEL1 MOVR6 1231NOP1DEL2 DJNZR6 DEL22DJNZR7 DEL12RET2 12M晶振 机器周期为1 s 2 123 1 1 2 200 1 2 50 003ms 单片机原理及应用 单片机原理及应用 四 查表程序设计把事先计算或实验数据按一定顺序编成表格 存于程序存储器内 然后根据输入参数值 从表中取得结果 查表程序可完成数据补偿 计算和转换等功能 线性表 n个元素a0 a1 an 1 具有线性 一维 的位置关系 每个元素占L个存储单元 addr ai addr a0 i L 单片机原理及应用 单片机原理及应用 例4 9 某求函数Y X X 0 7 的值 设自变量存放在ABC单元 表头的地址为TABL Y值为双字节存放在R2和R3中 R3存放低位 采用 MOVCA A DPTR 指令实现表格以BCD码的格式存放Y值0001 0001 0002 0006 0024 0120 0720 5040 高八位先放 低八位后放 单片机原理及应用 单片机原理及应用 ORG0100HABCEQU30HL1 MOVDPTR TABLMOVA ABCADDA ABCMOVR3 AMOVCA A DPTRXCHA R3INCAMOVCA A DPTRMOVR2 ASJMP TABLDB01 00 01 00 02 00 06 00DB24H 00 20H 01 20H 07 40H 50H DPTR表格首址 X 2 查低字节送A 查高字节送R2 高字节的偏移 BCD码格式存放的Y值 单片机原理及应用 单片机原理及应用 例4 10 已知R0低4位有一个十六进制数 请编程将它转换成相应ASCII码并送入R0 解 采用 MOVCA A PC 指令实现 注意 必须将累加器A中的变址值作相应修正 其修正值为 MOVCA A PC 指令与数据表首地址之间的偏移量 本例中为3个字节 单片机原理及应用 单片机原理及应用 MOVA R0ANLA 0FHADDA 03HMOVCA A PCMOVR0 A 该指令占1字节SJMP 该指令占2字节ASCTAB DB 0 1 2 3 DB 4 5 6 7 DB 8 9 A B DB C D E F 1位BCD送A 用偏移量对A进行修正 查表得ASCII 1 2 3 单片机原理及应用 单片机原理及应用 五 散转程序设计散转程序是分支程序的一种 它根据某种输入或运算的结果 分别转向各个处理程序 使用AT89C52指令 JMP A DPTR 可以容易地实现散转功能 单片机原理及应用 单片机原理及应用 1 使用转移指令表的散转程序 例4 12 根据R2的内容 转向各个处理程序 根据R2的内容是0 1 2 n 分别转向处理程序0 1 2 n 我们用AJMP或LJMP指令组成一个转移表 首址送DPTR 单片机原理及应用 单片机原理及应用 JMP1 MOVDPTR TABMOVA R2ADDA R2JNCNADDINCDPHNADD JMP A DPTRTAB AJMPPRG0AJMPPRG1 AJMPPRGn注意 AJMP TAB和处理程序在同一2K内 转移指令表 散转 首址 R2 2 单片机原理及应用 单片机原理及应用 2 使用转移地址表的散转程序当转向范围较大时 可以直接使用转向地址表的方法 例4 14 各处理程序的入口地址组成表格 使用查表指令 按R2内容查表 找到对应的转向地址 送DPTR 清A 用JMP A DPTR指令转向各个处理程序 单片机原理及应用 单片机原理及应用 JMP2 MOVDPTR TAB1MOVA R2ADDA R2JNCNADDINCDPHNADD MOVR3 AMOVCA A DPTRXCHA R3INCAMOVCA A DPTR 取高八位地址 DPH加1 首址 R2 2 取低八位地址 单片机原理及应用 单片机原理及应用 MOVDPL AMOVDPH R3CLRAJMP A DPTRTAB1 DWPRG0DWPRG1 DWPRGn说明 A实现64K范围内的散转 n 256 转移地址表 散转 单片机原理及应用 单片机原理及应用 六 子程序设计 1 用工作寄存器或累加器传递参数 例4 16 编制c a2 b2程序 设a和b均为小于10的整数 a b c放在内部RAMXA XB XC三个单元中 通过A累加器传递参数 单片机原理及应用 单片机原理及应用 XAEQU40HXBEQU41HXCEQU42HMOVA XALCALLSQRMOVXC AMOVA XBLCALLSQRADDA XCMOVXC ASJMP SQR MOVB AMULABRET 取出数a到累加器 调子程序 调子程序 取出数b到累加器 乘法子程序 c a2 b2 单片机原理及应用 单片机原理及应用 2 用指针寄存器传递参数 数据放在存储器中 内部或外部RAM 用地址指针指示数据位置 例3 将R0和R1指出的内部RAM中的两个3字节无符号数相加 结果送R0所指的内部RAM中 单片机原理及应用 单片机原理及应用 NADD MOVR7 3CLRCNADD1 MOVA R0ADDCA R1MOV R0 ADECR0DECR1DJNZR7 NADD1RET 指针R0R1 单片机原理及应用 单片机原理及应用 3 用堆栈传递参数 例4 15 在寄存器R2中存放有两位16进制数 试将它们分别转换成ASCII码存入Y1和Y1 1单元 解 由于要进行两次转换 故可通过调用子程序的方式来完成 用堆栈完成参数传递 单片机原理及应用 单片机原理及应用 HASC DECSPDECSPPOPACCANLA 0FHMOVCA A DPTRPUSHACCINCSPINCSPRETTABDB 01234567 DB 89ABCDEF 如何取出参数 取出参数 参数进栈 得到ASCII Y1EQU30HMOVDPTR TABPUSH02HACALLHASCPOPY1 ASCII码表 R2进栈 单片机原理及应用 单片机原理及应用 调用上述的子程序 将R2单元的两位十六进制数转换为ASCII码送Y1和Y1 1单元 Y1EQU30HMOVSP 5FHMOVDPTR TABPUSH02HACALLHASCPOPY1MOVA R2SWAPAPUSHACCACALLHASCPOPY1 1SJMP 设SP 十六进制数入栈 转换低位 ASCII出栈 转换高位 高低四位交换 DPTR表格首址 单片机原理及应用 单片机原理及应用 4 程序段参数传递 大量常数 可用程序段来传递 常数作为程序代码的一部分 放在程序存储器中 用MOVC指令取出 单片机原理及应用 单片机原理及应
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 药物浓度与疗效研究-洞察及研究
- 多中心试验的优化方案设计-洞察及研究
- 建筑规划方案设计评审意见
- 江门美式花园施工方案
- 窗帘盒内部施工方案
- 活动策划方案纸质版封面
- 淄川区庭院施工方案
- 机械车改造施工方案范本
- 武汉建筑装饰方案设计公司
- 测绘安全生产培训课件
- 2025年中航油招聘笔试参考题库附带答案详解
- DB54∕T 0275-2023 民用建筑节能技术标准
- 办公室设备领用管理制度
- 部编版九年级历史上册第19课法国大革命和拿破仑帝国 课件(内嵌视频)
- 多发性结肠息肉的护理查房
- 2025至2030年中国环保胶黏剂行业市场运行格局及产业需求研判报告
- 自动生成的文档-202504081202-70
- JG/T 503-2016承插型盘扣式钢管支架构件
- 2024年新疆温宿县事业单位公开招聘辅警考试题带答案分析
- 亚马逊项目合伙协议书
- 2024吉林省农村信用社联合社招聘笔试历年典型考题及考点剖析附带答案详解
评论
0/150
提交评论