Freescale MC9S08AW60汇编学习笔记(五)

发布者:水手谷水手最新更新时间:2021-08-13 来源: eefocus关键字:Freescale  MC9S08AW60  汇编 手机看文章 扫描二维码
随时随地手机看文章

前面学习了查表的功能,可以用查表的功能实现不少强大的功能,如查立方表、平方表、函数表、数码管显示的段码表等。这里还有一种由查表和转移指令配合使用而实现的一种强大的功能:散转。散转是指根据输入数据的不同来跳转到不同的程序入口进行处理,也就是说如果有多个子程序,我们不仅可以让它们按顺序一个个执行,还可以根据做判断用的数据的值来决定跳转到哪一个子程序。实现散转的具体做法是:在程序中定义一块连续存储单元作为跳转表,表中顺序存放各分支处理程序的跳转地址。各跳转地址在表中的偏移地址等于跳转表首地址加上它们各自的序号所占字节数的乘积。感觉关于跳转地址这一块有点不好理解,就用一个例子来说明一下:


设字节变量Num的取值范围为0~3,另有程序入口地址Pro0~Pro3,编写子程序,要求根据Num的值转向不同的Pro程序。如Num为2则转向Pro2。代码如下:

 org $0070
Num ds.b 1

 org $1860

Pro0:nop                    ;子程序群,这里都让他们空操作。
   rts
Pro1:nop
   rts
Pro2:nop
   rts
Pro3:nop
   rts

Sbranch:                   ;分支程序,有点像c语言中switch
  ldx Num              ;Num-->X
  lda #05h        
  mul                     ;Num*5-->X:A
  tax                      ;A-->X  
  clrh                     ;查表之前别忘清零
  jmp Pro_Tab,x

Pro_Tab:                   ;跳转表
  jsr Pro0               ;跳转到Pro0,3B
  bra Sb_End          ;调用Pro0完毕,返回,2B

  jsr Pro1
  bra Sb_End

  jsr Pro2
  bra Sb_End

  jsr Pro3
Sb_End: rts

main:
  clra
  clrx
  clrh

  mov #$01,Num     ;设定Num的值,用来作为选择子程序的判断数

  bsr Sbranch


again:
  nop
  jmp again


 org $fffe
 dc.w main


细心的人肯定会发现Num是先乘以5之后才用来做散转的,其原因在于Pro_Tab标号后面的JSR指令是3字节指令,BRA指令值2字节指令,故数值Num、标号Pro_Tab的地址Addr_Pro和指令语句JSR  Pro_n的首地址Addr_Pro_n之间的关系为:


Address_Pro_n=Addr_Pro+Num*5


是不是突然发现汇编的强大了,从一开始汇编给人的感觉是在寄存器之间跳来跳去变成了汇编可以实现这个功能那个功能,只要设计足够精巧、心思足够细腻,就算是汇编这种呆板的机器语言也可以焕发勃勃生机,举个例子:MenuetOS是一款完全用汇编语言写成的操作系统。 因此它运行起来超快,体积也非常小,它甚至可以放在一张软盘内。MenuetOS提供了抢占式多任务处理,一个引人注目的漂亮GUI,用于网络接入的 TCP/IP堆栈等等。由此可见:强大的不是工具而是人。当然,如果强大的工具加强大的人必然可以爆发出惊人的力量。

关键字:Freescale  MC9S08AW60  汇编 引用地址:Freescale MC9S08AW60汇编学习笔记(五)

上一篇:Freescale MC9S08AW60汇编学习笔记(二)
下一篇:Freescale MC9S08AW60汇编学习笔记(六)

推荐阅读最新更新时间:2024-11-10 11:07

飞思卡尔视觉处理技术助力实现无碰撞汽车
汽车业芯片领域开拓者飞思卡尔推出具有传感器融合功能的S32V视觉处理器,建立起新的安全模式 2015年3月2日,西班牙巴塞罗那(世界移动通信大会)讯-飞思卡尔半导体(NYSE:FSL)日前推出全球首个汽车视觉片上系统 (SoC) S32V视觉微处理器,该微处理器具有必要的可靠性、安全和安防措施,可实现自我感知汽车的自动化和辅助驾驶功能。 S32V采用多种汽车级技术,使汽车业超越了现有的以便捷性为中心的 辅助 模式,推动汽车业进入一个新时代。到那时,汽车将能够捕捉数据、处理数据并在危急情况下与驾驶员联合控制,这种能力是从当前的 辅助 时代迈向未来完全无人驾驶汽车时代的基本桥梁。 作为飞思卡尔SafeAssure功能安全计划的组成
[汽车电子]
ARM汇编示例—按键LED(循环)
汇编程序是学习硬件非常好的切入点,虽然程序用C来写回比较方便,但是要想真正了解一款硬件,还是得从体系结构和汇编指令上下点功夫。 一下是一个最基础的ARM 汇编程序,程序的功能是按键,然后在LED上显示出来是哪个键按了下去。 ;引脚连线 ;GPF0~GPF3 K1~K4 ;GPF4~GPF7 LED1~LED4 ;GPG3 K5 ;GPG11 K6 ;GPxCON的配置寄存器每个引脚都占两位,00表示表示输入,01表示输出 ;GPxDAT寄存器表示引脚的高低电平状态,读写数据在这个寄存器里进行 ;程序结果:按Kx,则LED就根据x的二进制表示出来 GPFCON EQU 0x56000050 G
[单片机]
ARM汇编----IMPORT
IMPORT伪操作告诉编译器当前的符号不是在本源文件中定义的,而是在其他源文件中定义的,在本源文件中可能引用该符号,而且不论本源文件是否实际引用该符号,该符号都将被加入到本源文件的符号表中。 语法格式: IMPORT symbol{ } 其中,symbol为声明的符号的名称。它是区分大小写的。 指定这个选项后,如果symbol在所有的源文件中都没有被定义,编译器也不会产生任何错误信息,同时编译器也不会到当前没有被INCLUDE进来的库中去查找该符号。 使用说明: 使用IMPORT伪操作声明一个符号是在其他源文件中的定义。如果连接器在连接处理时不能解析该符号,而IMPORT伪操作中没有指定 选项,则连接器将会报告错误。如果连
[单片机]
ARM汇编之MOV PC,LR
BL NEXT ;跳转到子程序 ......... ;NEXT处执行 NEXT .......... MOV PC,LR ;从子程序返回 这里的BL是跳转的意思,LR(R14)保存了返回地址,PC(R15)是当前地址,把LR给PC就是从子程序返回。 1.SP(R13)、 LR(R14)、PC(R15) 2.LR(R14)的作用问题,这个LR一般来说有两个作用: (1)当使用bl或者blx跳转到子过程的时候,r14保存了返回地址,可以在调用过程结尾恢复。 (2)异常中断发生时,这个异常模式特定的物理R14被设置成该异常模式将要
[单片机]
PIC产生伪随机数汇编语言程序
PSW EQU 03 R0 EQU 08 R1 EQU 09 R2 EQU 0AH R3 EQU 0BH R4 EQU 0CH R5 EQU 0DH R6 EQU 0EH R7 EQU 0FH TEMP EQU 13H CNT1 EQU 11H CNTH EQU 12H BUF0 EQU 17H BUF1 EQU 18H ESUM1 EQU 13H ESUM2 EQU 14H ESUM3 EQU 15H ESUM4 EQU 16H DSUM1 EQU 19H DSUM2 EQU 1AH DSUM3 EQU 1BH DSUM4 EQU 1CH D
[单片机]
飞思卡尔MC9S12(X)系列的内存资源分配和.prm文件的结构
一、内存分配 1.资源分布 如上图所示,单片机型号最后的数字也就代表了单片机中Flash的大小,S12G128 表示Flash有128K Byte,S12G192 表示Flash有192K Byte。但是S12(X)所使用的内核CPU12(X)的地址总线为16位,寻址范围最大为2^16 =64K Byte,而这64K Byte的寻址空间还包括寄存器、EEPROM(利用Data Flash模拟)、RAM等,因此不是所有的64K Byte都是用来寻址FLASH。所以在S12(X)系列单片机中,很多资源是以分页的形式出现的,其中包括EEPROM、RAM、FLASH。EEPROM的每页大小为1K Byte,RAM的每页大小为4K Byt
[单片机]
<font color='red'>飞思卡尔</font>MC9S12(X)系列的内存资源分配和.prm文件的结构
飞思卡尔单片机DZ60---输入捕捉
#include hidef.h /* for EnableInterrupts macro */ #include derivative.h /* include peripheral declarations */ //TPM1通道0(与PTD2连接第三个LED灯? 产生周期为0.5s占空比为50%的PWM波 //利用TPM2通道0(与PTD0连接第一个LED灯)对这个PWM波的上升沿进行捕捉 /*************************************************************/ /* 初始化总线时钟PEE模式 */ /* 外部晶振
[单片机]
e络盟提供飞思卡尔新平台FRDM- KE02Z
一款针对噪音环境应用的高性能低成本开发板 e络盟日前宣布提供新型飞思卡尔Freedom开发平台FRDM-KE02Z,这是一款基于Kinetis E系列微控制器的低成本开发平台, 专门针对恶劣电磁干扰环境应用而设计。 FRDM-KE02Z Freedom 开发平台采用业内首款基于ARM® Cortex®-M0+内核的Kinetis E系列微控制器KE02Z64VQH2, 为设计工程师提供强大的可耐受5V电压的电磁兼容性(EMC)和静电放电(ESD)保护功能,是恶劣噪音环境的理想开发平台。亚太区用户现可通过e络盟购买,售价为12.95美元。 FRDM-KE02Z开发平台是工业应用的完美选择,其输入电源电压范围为5.5V,坚固耐
[嵌入式]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved