飞思卡尔查表和散转
发表:2023-08-29 12:00:39 阅读:69

飞思卡尔查表和散转:查表是汇编程序设计的一个重要技术,巧妙地运用查表可以避免复杂的编程,如立方表、函数表、数码管的显示段码等。散转就是按照输入数据的不同转移到不同程序的过程。查表运算与转移指令配合使用,就可以方便地实现散转功能。实现散转的具体做法是,在程序中定义一块连续存储单元作为跳转表,表中顺序存放各分支子程序的跳转地址。各跳转地址在表中偏移的起始地址等于跳转表首地址加上它们各自的序号与所占字节数的乘积。

[例题4]

设单字节变量NUM放在RAM l拘0060H单元,取值范围为0~9,编写一个程序,实现求出该变量立方值的功能。

分析:此时可以用查表方式来实现,在RAM中设置一个立方表 因为7的立方已经超过一个字节的存储大小,所以,每个立方值用2个字节单元来存储。变量NUM对应的立方值

的存储地址ADD_n与立方表的首地址TAB的关系为:Add_n=TAB+NUM×2.

程序如下:

ORG$()060

NUM RMB l ;为变量保留l B单元

ANS RMB 2 ;为结果存储保留28单元

ORG$0070

TAB:FDB$oo00、$0001 1$0008、$001 8、$0040、$007D、$00DB、$0157、$0200、$02D9

SUBPR0:LDX NUM

LSLX

LDA TAB,X

STA ANS

LDA TAB+1,X

STA ANS+l

RTS

[例题5]

设单字节变量NUM的取值为0~3,其值分别对应子程PR00~PR03,编写程序,实现根据NUM变量的值跳转到对应的子程序的功能。

分析:由于TAB表中JSR为3 8指令,RTS为l B指令,所以变量NUM、散转表TAB地址、相应变量对应的子程的跳转入口地址Add—PR0—n之间的关系为:Add—PR0—n=TAB+

NUM×4 0

程序如下:

BRA:LDX NUM

LDA #$04

MUL

TAX

JMP TAB,X

TAB:JSR PR00

RTS

JSR PR0l

RTS

JSR PR02

RTS

JSR PR03

RTS

PR00: …

RTS

PR01: …

RTS

PR02: …

RTS

PR03: …

RTS

 

更多精彩请您关注:

飞思卡尔汇编源程序的格式

飞思卡尔伪指令

飞思卡尔汇编语言程序设计算术运算

freescale代理