dsp 立即寻址、绝对寻址、直接寻址、间接寻址的差别是什么?

1个回答

  • 所有汇编语句必然是两个操作数,而其一必然是寄存器,因为寄存器速度最快,为提高处理速度必须在寄存器中完成操作.就电脑存储层次的速度而言,寄存器register>缓存cache>内存memory>硬盘hard disk,可见离cpu越近速度越快(register是直接做在cpu内部的,就像下面例子中的教学楼、教务处等,所以速度够快).DSP与此类似.

    根据另一个操作数所在的位置分类的话,就是上述几种和另外一些了寻址模式了,如堆栈寻址、MMR等.举个例子.你现在你的学校里,去找人处理一些事情,那么此人在哪里呢?几种可能:在身边、在某省市县小区幢101、你校第1教学楼301或你校第2教学楼301、此人不在学校但是教务处办公室可以查到他现在的地址,以上分别对应立即寻址、绝对寻址、直接寻址、间接寻址.例子:

    LD #10,A

    STL A,*(y)

    LD @x,A

    LD *AR1,A

    可以看到,

    立即寻址,立即数前面必须加#;

    绝对寻址是*和(),y就是这个绝对地址省市县区楼;

    直接寻址的地址x前有@,就是301,至于是1教还是2教作基地址,需要提前设置到底是到哪个教学楼去找,对应sp堆栈或者数据存储器页指针DP设置.用SSBX CPL(SET bit置CPL为1,用SP作基地址)或RSBX CPL(reset将CPL置0,用DP做基地址),到某页数据存储器中找,还需要设置此页数,如另DP为3就到第三页数据存储器中找),将堆栈当前地址sp+x低7位或将DP第三页首地址+x低7位;

    间接寻址也有*,不过紧跟的是一个寄存器AR1而不是直接存储器中的数值x.