当前位置:文档之家› 快速乘法汇编程序

快速乘法汇编程序

;---------------------------------------------------------------------------
;两字节乘法
;R0R1R6R7=R3R4*R6R7
;R6734=R34*R67
;使用到的变量:
; R6 R7
; X R3 R4
; -----------------------------
; C0&C1 R47H R47L
; R46H R46L
; C2&C3&C4 R37H R37L
; R36H R36L Make C0&C1
; Make C2&C3&C4
;------------------------------------
; R6 R7 R3 R4
;---------------------------------------------------------------------------
;===========================================================================
;NAME | QMUL
;FUNCTION | (R6R7R3R4):= (R6R7) * (R3R4)
;KEEP MORE | R5
;--------------------------------------- ChenMao ---------------------------
;Date:2009-09-20
;R6R7R3R4=R6R7*R3R4, R0,R1,R5 & RAM No Use
;Time:44 T
;Code:24H=36
;---------------------------------------------------------------------------
; R6 R7
; * R3 R4
;------------------------------
; R47H R47L
; R46H R46L&C1
; C1
; R36H R36L&C2
; C2
; R37H&C4 R37L&C3
; C3
; + C4
;------------------------------
; R4=R47L
; R3=R37L+R46L+R47H
; R7=R36L+R46H+C1+R37H+C3
; R6=R36H+C2+C4
;---------------------------------------------------------------------------
QMul: Mov A,R4 ;A=R4
Mov B,R7 ;B=R7
Mul AB ;R4*R7,A=R47L,B=R47H
Xch A,R4 ;A=R4,R4=R47L
Xch A,B ;A=R47H,B=R4
Mov R2,A ;R2=R47H
Mov A,R6 ;A=R6
Mul AB ;R4*R6,A=R46L,B=R46H
Add A,R2 ;A=R46L+R47H,C1:Undo
Xch A,R6 ;A=R6,R6=R46L+R47H
Xch A,B ;A=R46H,B=R6
AddC A,#0 ;A=R46H+C1,C1:Done
Mov R2,A ;R2=R46H+C1
Mov A,R3 ;A=R3
Mul AB ;R3*R6,A=R36L,B=R36H
Add A,R2 ;A=R36L+R46H+C1,C2:Undo
Xch A,R3 ;A=R3,R3=R36L+R46H+C1
Xch A,B ;A=R36H,B=R3
AddC A,#0 ;A=R36H+C2,C2:Done
Xch A,R7 ;A=R7,R7=R36H+C2
Mul AB ;R3*R7,A=R37L,B=R37H
Add A,R6 ;A=R37L+R46L+R47H,C3:undo
Xch A,R3 ;A=R36L+R46H+C1,R3=R37L+R46L+R47H
AddC A,B ;A=R36L+R46H+C1+R37H+C3,C3:Done,C4:Undo
Xch A,R7 ;A=R36H+C2,R7=R36L+R46H+C1+R37H+C3
AddC A,#0 ;A=R36H+C2+C4,C4:Done
Mov R6,A ;R6=R36H+C2+C4
Ret
;-------------------------------------------------------------------------------

相关主题
文本预览
相关文档 最新文档