设ar2=2060h,作为基地址,指向x(0)的存储单元。
ar0=0008h
第2次*ar2+0b寻址 ;ar2=2068h, 即x(8)
第3次*ar2+0b寻址 ;ar2=2064h即x(4)
第4次*ar2+0b寻址 ; ar2=206dh即x(12)
1、coff (common object file format,coff) :汇编器和链接器所创建的目标文件 。
段——就是在编写汇编语言源程序时,采用的**块或数据块,它占据存储器的某个连续空间。
段的作用:。让程序是按段组织的,;使用**块(段)和数据块(段)编程,而不是指令或数据简单的顺序编写,将每行汇编语句从属一个段。
三个已初始化段。
text段:存放程序**。
data段:存放已初始化数据。
sect段:自定义段,存放初始化数据或程序**。
两个未初始化段。
bss段:为未初始化变量保留存储空间。
usect段:自定义段,保留存储空间。
作用:给程序提供数据并且控制汇编过程。
汇编伪指令分成8类(根据功能):
1.对各种段进行定义的伪指令;
2.对常数(数据和存储器)进行初始化的伪指令;
3.调整spc(段寄存器)的指令;
4.输出列表文件格式伪指令;
5.引用其他文件的伪指令;
6.控制条件汇编的伪指令;
7.在汇编时定义符号的伪指令;
8.执行其他功能的伪指令。
bss为未初始化的变量保留空间;
.data通常包含了初始化的数据;
.sect定义已初始化的带命名段,其后的数据存入该段;
.text该段包含了可执行的**;
.usect在一个未初始化的有命名的段中为变量保留空间。
5、链接命令文件的作用:一个或多个coff目标文件链接起来;将各个段配置到目标系统的存储器中;对各个符号和段进行重新定位,并给它们制定一个确定的地址;
将扩展名为。obj的一个或多个coff目标文件链接起来,生成可执行的输出文件(.out)和存储器映像文件(.map)。
-o -m -e start
memory
page0: progorg=0f600h, len=100h
vecsorg=7600h, len=8000h
page1: sramorg=01f10h, len=4000h
dramorg=05f10h, len=1000h
sections
.text> prog page 0
.data>ra mpage 1
.bss> rampage 1
.vectors :>vecspage 0
8、如果没有利用memory和sections命令,链接器就按缺省算法来定位输出段:
memory
page 0:prog:origin=0x0080, length=0xff00
page 1:data:origin=0x0080, length=0xff80
sections
.text: page=0
.data: page=0
.cinit: page=0
.bss: page=1
9、.title “
mmregs
stack .usect “stack”, 30h
bss data1, 10
bss data2, 10
data table: .word 1,2,3,4,5,6,7,8,9,10
def start
textstart: stm #data1, ar1
rpt #mvpd table, *ar1+ ;程序存储器传送到数据存储器。
stm #data1, ar2
stm #data2, ar3
rpt #mvdd *ar2+, ar3+ ;数据存储器传送到数据存储器。
end: b end
end 链接命令。
-o -m -e start
memory
page 0:
eprom: org=0e000h len=01f80h
vecs: org=0ff80h len=00080h
page 1:
spram: org=00060h len=00020h
daram: org=00080h len=01380h
sections
vectors:> vecs page 0
text:> eprom page 0
data:> eprom page 0
bss:> spram page 1
stack:> daram page 1
10、.title “
mmregs
stack .usect “stack”, 10h堆栈的设置。
bss a,3为变量分配10个字的存储空间。
bss x,3
bss mpadd, 1
bss min, 1
def start
data tableword 1, 5, 3
word 8, 6, 7
textstart: stm0, swwsr插入0个等待状态。
stmstack+10h,sp ;设置堆栈指针。
stma, ar1
rpt5 mvpd table, *ar1+
call sum调用乘累加子程序。
call mini调用求最大值子程序。
endbend
sum: stm #a, ar3
stm #x, ar4
rptz a, #
mac *ar3+, ar4+, a
stla, @mpadd存放乘累加的值。
ret mini: stma, ar1
stm #x, ar2
stm #1,ar3
ldar1+, t
mpy *ar2+, a第一个乘积在累加器a中。
loop: ldar1+, t
mpyar2+, b其他乘积在累加器b中。
min a累加器a和b比较,选大的存在a中。
banz loop, *ar3- ;此循环中共进行3次乘法和比较。
stla, @min存放的最小值。
retend
11、 .title “
mmregs
stack .usect “stack”, 30h
bss data, 64h
data table: .word 01,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,5,3,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99
def start
textstartstm #data, ar1
rpt #mvpd table, *ar1+ ;
ld0, b
ld1, 16, b
stm #99,brcbrc赋值为99
s***ata,ar4
rptb next-1n ext-1为循环结束地址。
DSP答案
1.流水线?答 dsp芯片采用多组总线结构,允许cpu同时进行指令和数据的访问。因而,可在内部实行流水线操作。执行一条指令,总要经过取指 译码 取数 执行运算,需要若干个指令周期才能完成。流水线技术是将各个步骤重叠起来进行。既第一条指令取指 译码时,第二条指令取指 第一条指令取数时,第二条指令译码,...
DSP作业答案
第九章。1.利用gp定时器1在gpiof8引脚上产生0.2s的方波,用一个贴片led闪烁来表示。系统时钟150mhz,高速外设时钟25mhz,定时器1预分频因子的128分频,试编写相关程序。答 系统时钟150mhz,通过高速外设时钟预定标器 hispcp 得到25mhz的高速外设时钟,再通过定时器1...
DSP作业答案
1.dsp有哪些显著特点?答 dsp的特点有 1 在一个指令周期内可完成一次乘法和一次加法 2 程序和数据空间分开,可以同时访问指令和数据 3 片内有大容量的快速ram 4 快速中断处理和硬件i o支持 5 可以并行执行多个操作 6 支持流水线操作,使取指 译码和执行等操作可以重叠执行。2.简述tm...