我是一个DSP初学者,想请教一些非常初级的问题
以下为一直接寻址的汇编源程序
.title "lab2d.asm"
.def start
.bss x,1
.bss y,1
.data
.text
start: ST #0001,*(0180h)
ST #1000,*(01ffh)
ST #500,*(0200h)
LD #x,DP
LD @x,A
; LD #y,DP
ADD @y,A
here: B here
.end
CMD源代码为
MEMORY
{
PAGE 0:
EPROM : org=0E000h, len=100h
PAGE 1:
DARAM : org=01ffh, len=10h
}
SECTIONS
{
.text : >EPROM PAGE 0
.bss : >DARAM PAGE 1
.data : >EPROM PAGE 0
}
把上面的程序经过编译和连接
得到的反汇编代码为
0000:E000 76F8 ST #1h,*(180h)
0000:E003 76F8 ST #3e8h,*(x)
0000:E006 76F8 ST #1f4h,*(y)
0000:E009 EA03 LD #3h,DP
0000:E00A 107F LD 7fh,A
0000:E00B 0000 ADD IMR,A
0000:E00C here
0000:E00C F073 B here
我的问题如下
1 在上面的LD #x,DP
中#x到底代表着什么,他为什么编译为LD #3h,DP
2 在上面的 ADD @y,A为什么编译为了ADD IMR,A
我的理解应该为
x中的低九位传给DP,但为什么是#3呢?
其次上面的@y应该是DP构成地址的低九位加上y的低七位得出地址,
但为什么是IMR呢?
务请高手详细指点,能否把过程解释清楚。