Division 36/18 = 18 Bit und Carry

Division von 36/18 Bit ohne Vorzeichen

Operandenhighlow
Dividendr12r13
Divisor r15
Ergebnisshighlow
Quotient r12
Rest r13
Carry r14


;
; Dividieren von 36 Bit Werten durch 18 Bit Werte ohne Vorzeichen
;
div3618:
;                im Aufruf        intern  
; Dividend :     R12 | R13        R4 | R5    (High | Low)
; Divisor :            R15        R7
; Quotient :           R12        R4
; Rest:                R13        R5
; Carry:               R14        R6
;
; Anzahl der Zyklen laden
        movi    r15,    18+1
; Übertrag Dividend löschen
        xor     r8,     r8
; Quotient löschen
        xor     r10,    r10
; 1. Kopie von Dividend bilden
        MOV     R12,    R4
        MOV     R13,    R5
; 2. Differenz High Dividend und Divisor bilden
divz:   mov     r9,     r8              ; ist immer teilbar wenn Dividend Übertrag hatte
        bnez    r8,     ydiv
        SLTU    R12,    R7              ; teilbar ?  Ja -> cc = 0
        movi    r9,     0               ; r9 = 1 wenn teilbar
        bnezc   nodiv
        movi    r9,     1               ; r9 = 1 wenn teilbar
ydiv:   SUBU    R12,    R7              ; Differenz bilden wenn teilbar
nodiv:  addi    r15,    -1              ; Zyklenzahl - 1
; Ergebnis in den Quotient schieben
        slli    r10,    1
        movs2i  r6,     SFR_CC          ; r6 = höchtes Bit des Quotient ist Carry
        addu    r10,    r9              ; Divisionsergebnis addieren
        beqz    r15,    divend
; Dividend low linksschieben
        slli    r13,    1
        movs2i  r9,     SFR_CC          ; Übertrag merken
; Dividend high linksschieben
        slli    r12,    1
        movs2i  r8,     SFR_CC          ; Übertrag merken
        addu    r12,    r9              ; Übertrag low einfügen
;
	j       divz
;
divend: mov     r4,     r10             ; Quotient
        mov     r5,     r12             ; Rest
        jrs     r11
;

Testprogramm: Ass-Quelle, Liste, Protokoll
SPHO-Format Start mit "G" im Monitor.

Include Datei für das Programm: spartan_equ.inc

UP d361818 als Macro

Include Dateien für das Macro: d361818um.inc

Testprogramm: Ass-Quelle, Liste, SPHO-Format Start mit "G" im Monitor.


SpartanMC