教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 高等教育 >

第八讲 汇编语言程序的阅读与理解111201

来源:网络收集 时间:2026-07-17
导读: 第八讲 汇编语言程序的阅读与理解 数据块传送程序 单字运算程序 小数运算程序 数据块传送程序 共有4种类型(10条指令): 共有 种类型( 条指令): 种类型 条指令 (1) 程序存储器 程序存储器←→数据存储器 数据存储器(MVPD,MVDP)。 数据存储器 , 。 (2) 数据存

第八讲 汇编语言程序的阅读与理解

数据块传送程序 单字运算程序 小数运算程序

数据块传送程序 共有4种类型(10条指令): 共有 种类型( 条指令): 种类型 条指令 (1) 程序存储器 程序存储器←→数据存储器 数据存储器(MVPD,MVDP)。 数据存储器 , 。 (2) 数据存储器 数据存储器←→数据存储器 数据存储器(MVDK,MVKD,MVDD)。 数据存储器 , , 。 (3) 数据存储器 数据存储器←→MMR(MVMD、MVDM,MVMM) 、 , (4) 程序存储器 由ACC寻址 程序存储器(由 寻址)←→数据存储器 数据存储器(READA,WRITA) 寻址 数据存储器 , 这些指令的特点如下: 这些指令的特点如下: 传送速度比加载和存储指令要快; 传送速度比加载和存储指令要快; 传送速度比加载和存储指令要快 传送数据不需要通过累加器; 传送数据不需要通过累加器; 传送数据不需要通过累加器 可以寻址程序存储器; 可以寻址程序存储器; 可以寻址程序存储器 与RPT相结合时,都变成单周期指令,可以实现数据块传送。 与 相结合时, 相结合时 都变成单周期指令,可以实现数据块传送。

赋值, 例23: 编写一段程序,首先对数组 : 编写一段程序,首先对数组x[20]赋值,再将 赋值 数据存储器中的数组x[20]复制到数组 复制到数组y[20]。 数据存储器中的数组 复制到数组 。 .title “exp15.asm” .mmregs STACK .usect “STACK”, 30h .bss .bss .data table: .word 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 .def .text start x, 20 y, 20

Start: STM #x, AR1 RPT #19 ; 程序存储器传送到数据存储器 MVPD table, *AR1+ STM #x, AR2 STM #y, AR3 RPT end: B .end #19 ; 数据存储器传送到数据存储器 end MVDD *AR2+, *AR3+

/ c5416.cmd*/链接命令 链接命令 MEMORY { PAGE 0: VECT: origin = 0x28100, len = 0x100 IPROG1: origin = 0x200, len = 0x7c00 IPROG2: origin = 0x28200, len = 0x7c00 IPROG3: origin = 0x38000, len = 0x8000 FLASHL: origin = 0x40000, len = 0x40000 FLASHH: origin = 0x4000000,len = 0x80000

PAGE 1: SPRAM: origin = 0x60, len = 0x20 DARAM: origin = 0x80, len = 0x3f80 SARAM: origin = 0x8000, len = 8000 }

SECTIONS { .vector: .text: .cinit: .switch: .const: .stack: .data: .bss: STACK: }

{} > VECT PAGE 0 {} > IPROG2 PAGE 0 {} > IPROG2 PAGE 0 {} > IPROG2 PAGE 0 {} > IPROG2 PAGE 0 {} > IPROG1 {} > DARAM {} > DARAM {} > IPROG1

PAGE 0 PAGE 1 PAGE 1 PAGE 0

程序存储器 Table 000A8h 000A9h .data 1 2 … … 19 000BBh 20 00083h 00080h 00081h

数据存储器 .bss x1=1 x2=1 00094h 00095h

数据存储器 .bss y1=1 y2=1

x19=19 x20=20 000A7h

y19=19 y20=20

单字运算程序 4 试编一程序, 的值,并找出4项乘积 例24: 试编一程序,计算 y = ∑ ai xi 的值,并找出 项乘积 i =1 中的最大值, , , , 中的最大值 放入累加器A中 ai xi (i=1,2,3,4)中的最大值,放

入累加器 中。 .title “exp16.asm” .mmregs STACK .usect “STACK”, 10h ;堆栈的设置 .bss a, 4 为变量分配10个字的存储空间 ;为变量分配 个字的存储空间 .bss x, 4 .bss y1, 1 .bss y2, 1 .def start .data table: .word 1, 5, 3, 4 .word 8, 6, 7, 2 .text

start: STM STM STM RPT MVPD CALL SUM CALL MAX End: B SUM: STM STM RPTZ MAC STL RET

#0, SWWSR 插入0 ;插入0个等待状态 #STACK+10h,SP ;设置堆栈指针 #a, AR1 #7 table, *AR1+ ;调用乘累加子程序 ;调用求最大值子程序 end #a, AR3 #x, AR4 A, #3 *AR3+, *AR4+, A A, *(y1) 变量y1存放乘累加的值 ;变量 存放乘累加的值

MAX: STM STM STM LD Loop: LD MAX BANZ STL RET .end

#a, AR1 #x, AR2 #2,AR3 *AR1+, T;第一个乘积在累加器A中 第一个乘积在累加器 中

MPY *AR2+, A MPY *AR2+, B A

*AR1+, T;其他乘积在累加器B中 其他乘积在累加器 中 比较, ;累加器A和B比较,选大的存在 中 累加器 和 比较 选大的存在A中 ;此循环中共进行3次乘法和比较 此循环中共进行 次乘法和比较 ;变量y2存放的最大值 变量 存放的最大值

loop, *AR3A, *(y2)

假设.bss为变量a、x和y分配的10个字的存储空间,以数 据存储器的0060H为起始地址,结果y1=67(43h),最大 值y2=30(1Eh)。

练习: 已知 (30H)=50H,AR2=40H,AR3=60H,AR4=80H. MVKD 30H,*AR2 MVDD *AR2,*AR3 MVDM *AR3,AR4 运行以上程序后,(30H)(40H) AR3和 AR4的值分别等于多少呢?

.title " fir5.asm " .mmregs .def _c_int00 .data fir_table .word -6,28,46,27,-35,-100,-93,26,191,240,52,-291 .word -497,-278,337,888,773,-210,-1486,-1895,-442,2870 .word 6793,9445,9445,6793,2870,-442,-1895,-1486,-210,773 .word 888,337,-278,-497,-291,52,240,191,26,-93 .word -100,-35,27,46,28,-6 .data input .word 0x7FDE,0x04CF,0xF7FD,0xE2D4,0xE6F3,0x1AE5,0x9A5F,0xED44,0x0D2C,0x42A1 .word 0x48C3,0xCEF2,0x2889,0xFD21,0xFD3E,0xC78E,0x988E,0x30AC,0x0FBB,0x3216 .word 0x0000,0x058B,0x5BAF,0xDBB1,0xDD85,0xA6EE,0xEFE8,0x347D,0xD778,0x21D4 .word 0x0C7C,0x5688,0x2784,0xAC72,0xEE91,0xCC24,0x190E,0xDC23,0xD14A,0x4D7E .word 0x2A9F,0x4D7E,0xD14A,0xDC23,0x190E,0xCC24,0xEE91,0xAC72,0x2783,0x5688 .word 0x0C7C,0x21D4,0xD778,0x347D,0xEFE8,0xA6EE,0xDD85,0xDBB1,0x5BAF,0x058C .word 0x0000,0x3216,0x0FBB,0x30AC,0x988F,0xC78E,0xFD3E,0xFD21,0x2889,0xCEF2 .word 0x48C3,0x42A1,0x0D2C,0xED44,0x9A5F,0x1AE5,0xE6F4,0xE2D3,0xF7FD,0x04CF .word 0x7FDE,0x04CF,0xF7FD,0xE2D4,0xE6F3,0x1AE5,0x9A5F,0xED44,0x0D2C,0x42A1 .word 0x48C3,0xCEF2,0x2889,0xFD21,0xFD3E,0xC78E,0x988E,0x30AB,0x0FBB,0x3216 .word 0x0000,0x058B,0x5BAF,0xDBB1,0xDD85,0xA6EF,0xEFE8,0x347D,0xD778,0x21D4 .word 0x0C7C,0x5688,0x2784,0xAC72,0xEE91,0xCC24,0x190D,0xDC24,0xD149,0x4D7E .word 0x2A9F,0x4D7E,0xD14A,0xDC23,0x190E,0xCC24,0xEE91,0xAC72,0x2783,0x5688 .word 0x0C7C,0x21D4,0xD778,0x347D,0xEFE8,0xA6EE,0xDD86,0xDBB1,0x5BAF,0x058C .word 0x0000,0x3216,0x0FBB,0x30AC,0x988F,0xC78D,0xFD3E,0xFD21,0x2889,0xCEF1 .word 0x48C3,0x42A2,0x0D2C,0xED44,0x9A5F,0x1AE5,0xE6F4,0x

E2D3,0xF7FD,0x04CF fir_coff .usect "fir_coff",48 in_buf .usect "in_buf",48 .bss in,160 .bss out_buf,112 .text _c_int00: SSBx FRCT;小数乘法编程时,设置FRCT(小数方式)位 STM #in,AR1 RPT #159 MVPD input,*AR1+ STM #fir_coff,AR1 RPT #47

汇编源文件fir5.asm

FIR滤波运算FIR2: ;FIR滤波运算 滤波运算 RPTZ A,#47 MAC *AR2+0%, *AR3+0%,A ; STH A,*AR6+ MVDD *AR5+,*AR2+0%;用最新的样本值替代最旧的样本值 用最新的样本值替代最旧的样本值 BANZ FIR2,*AR7-

1.定点DSP中数据表示方法 定点DSP芯片的数值表示是基于2的补码表示 形式。数的定标有Q表示法和S表示法,表710列出了16位数的16种Q表示和S表示,以及 它们所能表示的十进制数范围。16位中有一个 符号位、Q个小数位和15-Q个整数位来表示一 个数。

表7-10 Q表示、S表 …… 此处隐藏:3655字,全部文档内容请下载后查看。喜欢就下载吧 ……

第八讲 汇编语言程序的阅读与理解111201.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/128177.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)