📄 zhao9h.asm
字号:
*****************************************
* 完成x1*x2=0.3*(-0.8) *
* x1:被乘数 m2:乘数的尾数 *
* x2:乘数 ep:乘积的指数 *
* e1:被乘数的指数 mp:乘积的尾数 *
* m1:被乘数的尾数 product:乘积 *
* e2:乘数的指数 temp:暂存单元 *
*****************************************
.title "zhao9h.asm"
.mmregs
.def start
STACK .usect "STACK",100
.bss x1,1
.bss x2,1
.bss e1,1
.bss m1,1
.bss e2,1
.bss m2,1
.bss ep,1
.bss mp,1
.bss product,1
.bss temp,1
.data
table: .word 3*32768/10 ;0.3
.word -8*32768/10 ;-0.8
.text
start: LD #x1,DP ;设置数据页指针
STM #STACK+100,SP ;设置堆栈指针
MVPD table,@x1 ;将x1和x2传送到数据存储器
MVPD table+1,@x2
LD @x1,16,A ;将x1规格化为浮点数
EXP A
ST T,@e1 ;保存x1的指数
NORM A
STH A,@m1 ;保存x1的尾数
LD @x2,16,A ;将x2规格化为浮点数
EXP A
ST T,@e2 ;保存x2的指数
NORM A
STH A,@m2 ;保存x2的尾数
CALL MULT ;调用浮点乘法子程序
end: B end
MULT: SSBX FRCT
SSBX SXM
LD @e1,A ;指数相加
ADD @e2,A
STL A,@ep ;乘积指数->ep
LD @m1,T ;尾数相乘
MPY @m2,A ;乘积尾数在累加器A中
EXP A ;对尾数乘积规格化
ST T,@temp ;规格化时产生的指数->temp
NORM A
STH A,@mp ;保存乘积尾数在mp中
LD @temp,A ;修正乘积指数
ADD @ep,A ;(ep)+(temp)->ep
STL A,@ep ;保存乘积指数在ep中
NEG A ;将浮点乘积转换成定点数
STL A,@temp ;乘积指数反号,并且加载到T寄存器
LD @temp,T ;再将尾数按T移位
LD @mp,16,A
NORM A
STH A,@product ;保存定点乘积
RET
.end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -