(3)执行此段程序后,存储单元(DAT3)的运行结果
多少?
1.(1) 定义存储器映像寄存器的符号名称。 (2)宏调用。执行三个数相加。
(3) 14a7H
2.阅读下面的程序片断,写出运行结果 .mmregs DAT0 .SET 60H
LD #004h,DP
ST #0345h,DAT0
STM #0002h,T MPY DAT0,A NOP
问题:(1)寄存器T的作用是什么?
(2)执行“MPY DAT0,A”后,累加器A的内容是什么?
2.答:1、寄存器T的作用是暂存被乘数, 2、累加器A的内容为0x68A或68Ah 六、程序设计题(每小题10分,共20分) 1、编程实现y=(x+y)*8-w .title \ .mmregs
STACK .usect \ .bss x,1 .bss y,1 .bss w,1 .bss z,1
.def _c_int00 .data table: .word 6,7,9 .text
_c_int00: STM #0, SWWSR ;插入0个等待状态 STM #STACK+10H, SP ;设置堆栈指针 STM #x, AR1 ;AR1指向x RPT #2 MVPD table, *AR1+ ; 从程序存储器传送3个值到数据存储器 LD @x,A ADD @y,A ;A=x+y LD A,3 ;A=(x+y)*8 SUB @w, A ;A=(x+y)*8-w STL A, @z end: B end
2、编程利用循环缓冲区实现FIR低通滤波器。N=7 。 .title “FIR2.ASM” .mmregs .def start .bss y,1
xn .usect “xn”,7 b0 .usect “b0”,7 PA0 .set 0 PA1 .set 1
5 / 6
.data
table: .word 1*32768/10 .word 2*32768/10 .word 3*32768/10 .word 4*32768/10 .word 5*32768/10 .word 6*32768/10 .word 7*32768/10 .text
start: SSBX FRCT STM #b0,AR1 RPT #6
MVPD table,*AR1+ STM #xn+6,AR2 STM #b0+6,AR3 STM #7,BK STM #-1,AR0 LD #xn,DP PORTR PA1,@xn FIR2: RPTZ A,#6
MAC *AR2+0%,*AR3+0%,A STH A,@y PORTW @y,PA0 BD FIR2
PORTR PA1,*AR2+0% .end
6 / 6
相关推荐: