汇编语言程序设计TMSCXDSP结构原理及应用_第1页
汇编语言程序设计TMSCXDSP结构原理及应用_第2页
汇编语言程序设计TMSCXDSP结构原理及应用_第3页
汇编语言程序设计TMSCXDSP结构原理及应用_第4页
汇编语言程序设计TMSCXDSP结构原理及应用_第5页
已阅读5页,还剩25页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

11:03:191概述汇编语言源程序格式:助记符指令一般包含4个部分,其一般组成形式为:[标号][:]助记符[操作数][;注释]书写格式规则详见P138,①②③④⑤⑥!标号—所有汇编指令和大多数汇编伪指令前面都可以带有标号;必须从第一列开始书写;最多32个字符;由字母、数字、下划线和$组成,且不能以数字开头;分大小写;冒号不属于标号名;没有标号的源语句第一列必须为空格、星号或分号。助记符—不能从第一列开始,否则被认为是标号;指令助记符一般用大写;汇编伪指令一般为小写,且以“.”开头。操作数—操作数列表,可以是常数、符号或常数与符号构成的表达式。操作数间需用“,”号隔开;三种前缀形式:#,*,@。11:03:192数据类型举例二进制10011000B,01111010b(最多16位)八进制226q,1001Q,0124(多达6位)十进制略十六进制0DH,123H,0X89,0x0D(多达4位)浮点数1.786e9(浮点数仅在C语言使用)字符常数‘a’,’b’…字符串“example”常数与字符串11:03:193类型含义标号符号地址(可作为.global,.ref,.def的操作数)局部标号$n,name?(临时性的标号,.newblock,.sect,.text,.data,.include,.copy取消)符号常数.set,.struct/.tag/.endstruct(提高可读性)预定义符号常数$,寄存器符号,其他…替代符号符号替代变量,.asg“high”,AR2(可重新定义)标号11:03:194举例11:03:195序号符号运算操作求值顺序1+-~!取正、取负、按位求补、逻辑负从右至左2*/%乘法、除法、求模从左至右3+-加法、减法从左至右4^指数从左到右5<<>>左移、右移从左至右6<<=小于、小于等于从左至右7>>=大于、大于等于从左至右8!==不等于、等于从左至右9&按位与运算从左至右10∧

按位异或运算从左至右11|按位或运算从左至右汇编语言表达式11:03:196有效定义表达式:11:03:197有效定义表达式11:03:198堆栈操作11:03:199分类

指令

说明

无条件分支转移

B[D]

用该指令指定的地址加载PC

BACC[D]

用累加器的低16位指定的地址加载PC条件分支转移

BC[D]

若满足指令给定条件,用该指令指定的地址加载PC

BANG[D]

若当前选择辅助寄存器不等于0,用该指令指定的地址加载PC远程分支转移

FB[D]

用该指令指定的地址加载PC和XPC

FBACC[D]

用累加器的低23位指定的地址加载PC和XPC控制程序11:03:1910分类指令说明无条件调用

CALL[D]

将返回的地址压入堆栈,并用该指令指定的地址加载PC

CALA[D]

将返回的地址压入堆栈,用累加器A或B指定的地址加载PC条件调用

CC[D]

如果满足指令给定条件,将返回的地址压入堆栈,并用该指令指定的地址加载PC远程调用

FCALL[D]

将XPC和PC压入堆栈,并用该指令指定的地址加载PC和XPC

FCALA[D]

将XPC和PC压入堆栈,用累加器的低23位指定的地址加载

PC和XPC分支操作11:03:1911分类

指令

说明

无条件返回

RET[D]

将堆栈顶部的返回地址加载到PC。RETE[D]

将堆栈顶部的返回地址加载到PC,并使能可屏蔽中断。RETF[D]

将RTN寄存器中的返回地址加载到PC,并使能可屏蔽中断。条件返回

RC[D]

如果满足指令给定条件,将堆栈顶部的返回地址加载到PC。远程返回

FCALL[D]

将堆栈顶部的值弹出加载到XPC,将堆栈中下一个值弹出加载到PC。

FCALA[D]

将堆栈顶部的值弹出加载到XPC,将堆栈中下一个值弹出加载到PC,并使能可屏蔽中断。分支操作11:03:1912操作符号条件说明操作符号条件说明AEQA=0累加器A等于0AOVAOV=1累加器A溢出BEQB=0累加器B等于0BOVBOV=1累加器B溢出ANEQA0累加器A不等于0ANOVAOV=0累加器A不溢出BNEQB0累加器B不等于0BNOVBOV=0累加器B不溢出ALTA<0累加器A小于0CC=1ALU进位位置1BLTB<0累加器B小于0NCC=0ALU进位位置0ALEQA0累加器A小于等于0TCTC=1测试/控制标志位置1BLEQB0累加器B小于等于0NTCTC=0测试/控制标志位置0AGTA>0累加器A大于0BIOBIO低BIO信号电平为低BGTB>0累加器B大于0NBIOBIO高BIO信号电平为高AGEQA0累加器A大于等于0UNC无无条件操作BGEQB0累加器B大于等于0分支操作11:03:1913循环操作 .title "Ex534.asm" .mmregsstack .usect "STACK",10h

.bss x,10 .bss y, 1table:

.word 1,2,3,4,5,6,7,8,9,10 .def startstart:

STM #0,SWWSR STM #stack+10h,SP CALL init STM #x,AR1 STM #9,AR2 LD #0, Aloop:

ADD *AR1+,A BANZ loop,*AR2- STL A,@y B $init:

STM #x,AR1 RPT #9 MVPD table,*AR1+ RET .end11:03:1914算术运算程序11:03:1915加法/减法指定堆栈空间为变量预留空间初值序列初始化变量设置堆栈指针利用MAC和RPT求乘累加和11:03:1916算术运算11:03:191711:03:1918重复操作程序11:03:1919块重复操作11:03:1920数据块传送程序11:03:1921数据块传送程序11:03:1922小数运算程序定点DSP的小数表示法基于2的补码形式;数的定标有Q法和S法;C54X为16位:1位符号位,Q个小数位和15-Q个整数位。16位定点Q法和S法的表数范围Q法S法表数范围Q15S0.15-1≤x≤0.9999695Q14S1.14-2≤x≤1.9999390Q13S2.13-4≤x≤3.9998779Q12S3.12-8≤x≤7.9997559Q11S4.11-16≤x≤15.9995117Q10S5.10-32≤x≤31.9990124Q9S6.9-64≤x≤63.9980469Q8S7.8-128≤x≤127.9960938Q7S8.7-256≤x≤255.9921875Q6S9.6-512≤x≤511.984375Q5S10.5-1024≤x≤1023.96875Q4S11.4-2048≤x≤2047.9375Q3S12.3-4096≤x≤4095.875Q2S13.2-8192≤x≤8191.75Q1S14.1-16384≤x≤16383.5Q0S15.0-32768≤x≤3276711:03:1923小数运算程序定点DSP的小数表示法基于2的补码形式;数的定标有Q法和S法;C54X为16位:1位符号位,Q个小数位和15-Q个整数位。十进制小数的2的补码表示正数:乘以32768;负数:绝对值乘32768,再取反加1。0.5乘以327684000H-0.54000H乘以32768绝对值部分-18000H乘以32768绝对值部分C000H取反加18000H取反加111:03:1924小数乘法设字长为4位(累加器为8位),有如下小数乘法:

0.625×-0.12501011000×(0.625)(-0.125)0000000000001101(-0101)1101000(-0.078125)乘积结果为7位,送入累加器;为保持乘积的符号不变,必须进行符号位扩展;因而,经过符号扩展后累加器内容为8位:

11101000 (-0.1865)出现了冗余的符号位(两个符号位)!怎么办?ST1的FRCT小数方式控制位,可以控制乘积结果在送往累加器前是否自动左移1位!如FRCT=1,则可自动消去两个符号位中冗余的一个。11101000符号位扩展FRCT=1时110100000.07812511:03:1925【例5.7.1】求,数据全为小数a1=0.3,a2=0.2,a3=-0.4,a4=0.1x1=0.6,x2=0.5,x3=-0.1,x4=-0.2分析存储空间要求?采用何种指令?小数如何表示?冗余符号位的消去:需预留9个存储单元;典型的乘-累加运算:MAC与RPT指令结合0.3=3*32768/10SSBX FRCT11:03:1926实现源代码 .title

"Ex_571.asm" .mmregsstack .usect

"STACK",10H .bss

a,4 .bss

x,4 .bss

y,1 .def

start .datatable: .word

3*32768/10,2*32768/10,-4*32768/10,1*32768/10 .word

6*32768/10,5*32768/10,-1*32768/10,-2*32768/10 .textstart:

SSBX FRCT STM #a,AR1 RPT #7 MVPD table,*AR1+ STM #a,AR3 STM #x,AR4 RPTZ A,#3

MAC *AR3+,*AR4+,A

;只能最多用到AR5,教材代码有误

STH A,@ydone: B done .end11:03:1927浮点运算浮点数的表示包含尾数和指数两部分如:定点数0x2000(0.25)用浮点数表示时,尾数为0x4000(0.5),指数为1,即0.5×2-1;尾数和指数都可正可负:尾数符号表示浮点数的正负,指数的符号表示浮点数的绝对值大小。定点数转换成浮点数Step1:EXPAStep2:STT,EXPONENTStep3:NORMA定点数=尾数×2-指数11:03:1928浮点运算浮点数转换为定点数将尾数按指数值进行左移(指数为负)或右移(指数为正)浮点运算举例编写浮点运算程序,完成x1*x2=0.4*(-0.9)。分析:首先确定需要分配的存储单元确定需要用到的关键指令流程图11:03:1929浮点运算实现代码 .title

"Ex_581.asm" .mmregsstack .usect

"STACK",100H .bss

a,2 .bss

b,2 .bss

c,2 .bss

ep,1 .bss

mp,1 .bss

product,1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论