就是想做一个32位被除数除以一个16位除数的小实验。
然后保留商和余数。
我刚学这些东西,对指令不太熟悉,所以现在写到这些就卡住了。。。。
其中AR1存放被除数,AR2存放除数,然后AR5和AR6存最后的余数和商。
.MMREGS
.GLOBAL _MAIN
.TEXT
_MAIN:
.GLOBAL _MAIN
.TEXT
_MAIN:
XOR A
XOR B
STM #0100H,AR1
STM #0106H,AR2
STM #0110H,AR3
STM #0120H,AR4
STM #0130H,AR5
STM #0132H,AR6
LD *AR1+,A
MPYA *AR2
NOP
ABS A
RPT #15
SUBC *AR2,A
STH A,*AR4
STL A,*AR3
XOR A
ADD *AR4,16,A
ADD *AR1,A
RPT #15
SUBC *AR2,A
XC 1,BLT
NEG A
STH A,*AR5
STL A,*AR6+
NOP
B $
XOR B
STM #0100H,AR1
STM #0106H,AR2
STM #0110H,AR3
STM #0120H,AR4
STM #0130H,AR5
STM #0132H,AR6
LD *AR1+,A
MPYA *AR2
NOP
ABS A
RPT #15
SUBC *AR2,A
STH A,*AR4
STL A,*AR3
XOR A
ADD *AR4,16,A
ADD *AR1,A
RPT #15
SUBC *AR2,A
XC 1,BLT
NEG A
STH A,*AR5
STL A,*AR6+
NOP
B $
在添加MPYA和下面的XC以及NEG这三条指令之前,正数的除法还是能简单做一下的。但还是有很多问题,就像被除数最高位不能是1的问题。
所以~~请教一下