DSP汇编语言初步资料

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

.L1
.S1
.D1
或 ADD .?
BIT/TI

A5, A7, A7
第四讲 汇编语言初步 18
4.存储结果
BIT/TI
第四讲 汇编语言初步
19
完整的y=mx+b汇编程序
.title "lab4.asm" mvk .s1 y,A6 ; A6=&y /*定义数据结构*/ mvkh .s1 y,A6 .sect "myData” /*取数据*/ m .short 10 ldh .d1 *A0,A1 ; A1= m x .short 5 ldh .d1 *A2,A3 ; A3=x b .short 2 ldh .d1 *A4,A5 ; A5=b y .short 0 nop 4 /*算法*/ /*核心算法*/ .sect "myCode" start: mpy .m1 A1,A3,A7 ; A7=mx /*指针初始化*/ nop 1 init: mvk .s1 m,A0 ;A0=&m add .l1 A5,A7,A7 ; A7=mx+b mvkh .s1 m,A0 sth .d1 A7,*A6 mvk .s1 x,A2 ;A2=&x /*结束循环*/ mvkh .s1 x,A2 b$ ; endless loop mvk .s1 b,A4 ;A4=&b nop 5 mvkh .s1 b,A4
8
搬移指令
搬移指令共有3类:MV, MVC, MVK:
MV指令用于在通用寄存器之间传送数据。 MVC指令用于在通用寄存器与控制寄存器之 间传送数据,此条指令只能使用.S2功能单元. MVK类指令用于把16位常数送入通用寄存器。 在C6000指令集内,只能往寄存器送16位常数, 可选择MVK 、MVKH或MVKL指令向寄存 器的高16位送数。
3
常用伪指令
汇编指令 .sect .usect .int .long .word .short .half .byte 说明 定义一个代码段或数据段 定义一个未初始化数据段 定义和初始化32位变量 定义和初始化16位变量 定义和初始化8位变量
注意
BIT/TI
在C语言里long是40位,在汇编语言里long是32位
完整的汇编程序构成
m: x: b: y:
.sect “myData” .int 5 .int 10 .int 2 .int 0
BIT/TI
.sect “myCode” start: LD .D1 *A0,A1 . . . ST .D1 A7,*A6 end: B end NOP 5
第四讲 汇编语言初步
MVK/ MVKL把一个16位常数放入寄存器
BIT/TI
第四讲 汇编语言初步
12
1b.取数据
LDH .D1 LDH .D1 LDH .D1 NOP
BIT/TI
*A0, A1 *A2, A3 *A4, A5 4
第四讲 汇编语言初步
; 取m ; 取x ; 取b
13
LD/ST指令
• 三种Load指令,对应不同长度的数据 – LDW 取32位字(word) – LDH 取16位的半字(short) 数据取入寄存器 – LDB 取8位字节(byte) 后进行符号扩展 • 对无符号数(字节、16位半字) – LDBU 无符号扩展 – LDHU • 指令延迟:四个延迟间隙 • 三个存储指令 – STW – STH – STB
BIT/TI
m, A0 m, A0 x, A2 x, A2 b, A4 b, A4
第四讲 汇编语言初步
; &m->A0 ; &x->A2
; &b->A4
11Baidu Nhomakorabea
指令MVK
MVK/MVKL - Move a Signed Constant into a Register and Sign-Extend (~C64x)
第四讲 汇编语言初步 4
二、汇编程序的构成
程序=数据结构+算法
C程序的数据结构和算法实现
数据结构
算法
BIT/TI
第四讲 汇编语言初步
5
汇编程序-数据结构
用汇编语言声明数据结构
: : : :
BIT/TI
第四讲 汇编语言初步
6
汇编程序-算法
用汇编语言编写算法


BIT/TI 第四讲 汇编语言初步 7
BIT/TI 第四讲 汇编语言初步 20
例程2:乘加运算汇编程序
BIT/TI
第四讲 汇编语言初步
– MPYH(U/US/SU)
– MPYH(U/S)L(U/S) – MPYL(U/S)H(U/S) 16LSB×16MSB • 指令延迟槽:1
16MSB×16MSB
16MSB×16LSB
• 两个乘法单元可以在一个周期内做两次乘法
BIT/TI 第四讲 汇编语言初步 17
3.加法
ADD.? 应该使用哪个功能单元?
汇编语言初步
目的:用汇编语言编写简单程序
BIT/TI
第四讲 汇编语言初步
1
学习内容
• 汇编代码的结构 • 汇编程序的构成 • 编写简单算法:y = mx+b
BIT/TI
第四讲 汇编语言初步
2
一、汇编代码的构成
label: || [cond] instruction .unit operand ;comment
BIT/TI 第四讲 汇编语言初步 14
指令延迟间隙
延迟间隙:多周期指令所需要插入的NOP指令个数
BIT/TI
第四讲 汇编语言初步
15
2.乘法
MPY .M1 A1, A3, A7 NOP
BIT/TI
第四讲 汇编语言初步
16
乘法指令
• 四种乘法指令
– MPY(U/US/SU) 16LSB×16LSB
BIT/TI
第四讲 汇编语言初步
9
三、用汇编指令编写y=mx+b
1.数据取入寄存器:m,x,b存储器->寄存器
1a. 初始化数据指针 1b. 取数据
2.乘法 3.加法 4.存储数据:y寄存器->存储器
BIT/TI
第四讲 汇编语言初步
10
1a.指针初始化
32位常量 MVK .S1 MVKH.S1 MVK .S1 MVKH.S1 MVK .S1 MVKH.S1
功能单元(可选) 操作数: • 寄存器 • 常量 • 指针 条件寄存器
注释
标号:代码或 变量地址 x .int 10 MPY .M1 A1, A3, A7 || ADD .L1x A2, B2, A5
BIT/TI 第四讲 汇编语言初步
指令: • 助记符(mnemonic) • 伪指令(directive)
相关文档
最新文档