Subtraktion von 36 bit mit Overflow und Carry

Subtraktion von 36 Bit

Operandenhighlow
Minuendr12r13
Subtrahendr14r15
Ergebnisshighlow
Differenzr12r13
Carry r14
Overflow r15


Durch die Bereitstellung von Carry und Overflow kann das Programm auch auf 72 Bit kaskadiert werden.

;
; Subtrahieren von 36 Bit Werten mit Vorzeichen als UP
;
sub36:
;
; (Bei einer Subtraktion entsteht immer dann ein Übertrag, wenn
; ein größerer Wert von einem kleineren subtrahiert wird!)
;
;                  im Aufruf        intern  
; Minuend :        R12 | R13        R4 | R5  (High | Low)
; Subtrahend :     R14 | R15        R6 | R7
;                  Rückgabe         intern
; Differenz :      R12 | R13        R4 | R5
; Übertrag36:      R14              R6
; Overflow :       R15              R7
;
; 1. Differenz High mit Vorzeichen bilden
        SLTU    R4,     R6              ; Übertrag bei High ? -> cc = 1
        movs2i  r8,     SFR_CC          ; r8 = Übertrag bei high
        SUB     R4,     R6              ; Differenz High mit OV
        movs2i  r9,     SFR_CC          ; r9 = OV bei high
; 2. Differenz Low ohne Vorzeichen bilden
        SLTU    R5,     R7              ; Übertrag bei Low  ? -> cc = 1
        movs2i  r10,    SFR_CC          ; r10 = Übertrag bei low
        SUBU    R5,     R7              ; Differenz Low
; 3. Übertrag bei Low von High mit Vorzeichen abziehen
        SLTU    R4,     R10             ; Übertrag dabei    ? -> cc = 1
        movs2i  r6,     SFR_CC          ; r6 = Übertrag bei sub low Übertrag von high
        SUB     R4,     R10             ; Übertrag Low noch von High mit OV abziehen
        movs2i  r7,     SFR_CC          ; r7 = OV bei high - Übertrag Low
; 4. Übertrag und Overflow für das Ergebnis bilden
        ADDU    R6,     R8              ; Gesamtübertrag von High bilden
        xor     r7,     r9              ; OV bei SUB36 2* hebt sich auf.
        jrs     r11
;

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

Include Datei für das Programm: spartan_equ.inc

UP sub36 als Macro

Include Dateien für das Macro: sub36m.inc

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


SpartanMC