Freescale HCS08 单片机原理及应用
HUST & Freescale 联合实验室 94
体值,而无需用户自己计算。由于复位矢量位于 Flash 空间,并且每个复位 /中断矢量占用 2 字节的
Flash 空间,因此用 DC.W 伪指令定义。注意不能用 DS 伪指令定义 Flash 常量。
对于有中断服务子程序的源程序, 为了在发生中断时能够响应中断进入相应的中断服务子程序,
和填写复位向量类似,只需将中断服务子程序的入口地址填入对应的中断复位向量区即可。
3.6.3 汇编程序设计
3.6.3.1 算术 /逻辑运算程序设计
MCU 主要用于控制目的,其数据运算、处理的能力并不强。 但由于 HCS08 系列 MCU 具有相
应的算 术、逻辑 指令,因此 它可以完成一些简单 的算 术/逻辑 运算 功能。
[例 3.1] 若字变量 Data1 和 Data2 分别存放着两 个 16 位无 符号 数,编 写求这两 个数 之和的子程
序,并将和 存放到 Sum 字节 存储 空间中。
两个 16 位无 符号 数相 加,和为 17 位, 至少 需要 3 个字节的 存储 空间,和 按照从高 位到低 位的
顺序依次存放 在以 Sum 为首地址的字节 存储单元 中。
Add_Pro : CLC ; 清进位 标志 位
LDA Data1+1
ADD Data2+1 ; 两数低八 位相 加
STA Sum+2 ; 存低八 位之和
LDA Data1
ADC Data2 ; 高八 位带低八 位进位 加
STA Sum+1 ; 存高八 位之和
ROLA
AND #01H
STA Sum ; 存高八 位进位位
RTS
3.6.3.2 查表和散转程序
HCS08 具有变址寻址 方式 ,实现查表操作非 常方便 。利用 查表 可以实现转换 、计算 等各种功 能。
散转是 指根据 输入数据的不 同跳转到 不同的程序入口进 行处理。
[例 3.2] 单字节 变量 Hex_Byte 中存放 了一十六 进制数, 编写子程序将其 转换 为两位 ASCII 码,
并将 结果存至以 Result 开首 的字节 存储单元 中。例如 4AH 的 ASCII 码为 3441H,$F9 的 ASCII 码为
4639H。
……
ORG 0070H ; 用户 变量一定要定位在 Ram 区域
Hex_Byte DS.B 1
Result DS.B 2
……