05章S12汇编程序设计与实例.pptVIP

  • 6
  • 0
  • 约6.43千字
  • 约 12页
  • 2017-02-12 发布于重庆
  • 举报
05章S12汇编程序设计与实例

重庆大学通信工程学院 任勇 第5章 S12汇编程序设计与实例 5.1 汇编语言程序基础 程序:完成特定任务的指令的集合 程序设计语言:机器语言(二进制指令代码,可直接执行) 汇编语言(特定助记符指令语句,须编译) 高级语言(通用高级语句,须编译) 单片机应用系统的程序,多用汇编语言编制(*.asm文件)或C 一个汇编程序语句---一条单片机指令 多个汇编语言语句?汇编语言程序(源代码) 注:程序需要特定的编译程序进行编译,生成二进制机器码 汇编语言指令格式 [标号]: 操作码 [操作数1], [操作数2] ;[注释] 标号---该指令的符号地址,标定程序入口或转移位置 注:标号必须以字母开始,分大小写 操作码---助记符,指令所实现的操作功能 注:不分大小写;前面无标号时,至少应保留一个空格 操作数---参加操作的数据对象,常数、符号或表达式 注:寄存器寻址已归纳到隐含寻址中,当操作数部分出现寄存器时,通常是寄存器间址;分大小写 注释---为方便阅读、修改而加的注释,可有可无 注:以“;”开始,本行其后的内容不再编译 数据的表示方法 Freescale规定,加前缀 $ 十六进制 % 二进制 @ 八进制 ’ ASCII 无 十进制 4.2 汇编程序伪指令 汇编程序使用的辅助性语句,不生成机器码 起始地址伪指令 ORG 赋值伪指令 EQU 字节常量伪指令 FCB (DC.B) 双字节常量伪指令 FDB (DC.W) 字符量伪指令 FCC 例:? 注:定界符可以是 ’、/、”,建议用 ’ 5.3 汇编语言程序设计实例 5.3.1 常用程序的设计 1. 循环控制程序 【例】2个8字节数求和,结果保存在被加数所在地址中。 2. 延时子程序 硬件延时---内部定时器实现,精确,不占CPU 软件延时---循环执行指令,粗略,占用CPU 【例】2ms延时。 CPU执行时间: T = N x TB T---总执行时间,此2ms N---总时钟周期数 TB---总线时钟周期(如1/8M=125ns) 则需N=T/TB=2ms/125ns=16000 程序运行: N=4+2+3+(1+3)(TCOUNT-1)+(1+1)+3+5 故:TCOUNT=3996.25≈3996 注:其它时间可套用此,如20ms改TCOUNT为39996(或40000) 【又例】双重循环的100ms延时。 忽略配合指令的执行时间,粗略估算: 内循环=200 x (1+1+3)T =1000T 总时间=100x1000T =100000T 2MHz晶振时,总线频率=1MHz ? T=1us 子程序延时时间即100ms 3. 数据查表程序 【例】数码管显示按键数值。 【例】将A中的两个4位十六进制数转换为ASCII码,分别存入$2080、$2081中。(0~9的ASCII码:$30~$39,A~F:$41~$46) 4. 分支跳转程序 【例】比较RAM区内两相邻单元中无符号数的大小,按小数在前、大数在后重新存放(首址在$2000)。若等则Y寄存器加1。 Freescale MCU编程几个提示------ 1、程序是被编译成二进制码放在程序存储器(FLASH)的,通过PC递加,自动逐条执行;PC值指向的下一条将要执行的指令。 2、程序处理主要是通过访问寄存器、数据存储器(RAM)的各单元实现所需功能要求的,而CPU寄存器(A,B,X,Y,CCR)是经常要用到的工作寄存器。 3、理解MCU的存储器空间分配图,寄存器、RAM、FLASH是统一编址在64K地址空间的,每单元8位;访问寄存器使用其功能符号形式,访问RAM区可用16位地址形式($xxxx)。 4、主程序通常是:初始化以后,循环等待或原地等待。 子程序用标号定义开始,用RTS结束;主程序用BSR或JSR调用之; 中断服务子程序也用标号定义开始,结束则用RTI;需要声明中断向量对应的程序入口,其执行是当中断发生时自动被执行的。 5、适当伪指令:辅助编程

文档评论(0)

1亿VIP精品文档

相关文档