在数据存储器60H-69H设置数
组a[10]= ]={5,9,3,2,6,1,4,8,7,10}
在数据存储器0100H-0109H设置数
组x[10]={25,34,15,26,31,62,51,18,26,54},要求
分别计算a0*x0,a1*x1,……,a9*x9乘积的最大值和最小值,结
果分别放在数据存储器1000H和1001H单元。
.title "min_max.asm"
.mmregs ;将寄存器符号设置为全局可用
Y .usect "Y",H ;定义一个叫 Y的寄存器
X .usect "X",H ;定义一个叫 X的寄存器
.data
table: .word ,,,,,,,,,
tal: .word ,,,,,,,,,
.def start ;.def表示某符号在本文件定义,可为其他文件引用
.text
start: STM #Y,AR2 ;将立即数存放 在AR2存储器映像寄存器
RPT #9
MVPD table,*AR2+ ;实现table里的10个数传到数据存储器60H--69H
STM #X,AR3 ;将立即数存放 在AR3存储器映像寄存器
RPT #9
MVPD tal,*AR3+ ;实现tal里的10个数传到数据存储器100H-109H
LD #0,A
STM #Y,AR3
STM #X,AR2
LD *AR3+,T
MPYU *AR2+, A
LD *AR3,T
MPYU *AR2,B
MIN B
CALL SUM
LD #0,A
STM #Y,AR3
STM #X,AR2
LD *AR3+,T
MPYU *AR2+, A
LD *AR3,T
MPYU *AR2,B
MAX B
CALL STLM ; 调用子程序
end: B end
SUM:
STM #8,AR4
loop:
LD *AR3+,T
MPYU *AR2+, A
MIN B
STL B,*(H)
BANZ loop,*AR4- ;判断AR4中的数是否为0,不为0就跳到loop
RET
STLM:
STM #8,AR4
lop:
LD *AR3+,T
MPYU *AR2+, A
MAX B
STL B,*(H)
BANZ lop,*AR4- ;判断AR4中的数是否为0,不为0就跳到loop
RET
.end