Addition von 36 Bit mit Overflow und Carry
Addition von 36 Bit
Operanden | high | low |
Summand1 | r12 | r13 |
Summand2 | r14 | r15 |
Ergebniss | high | low |
Summe | r12 | r13 |
Carry | r14 | |
Overflow | r15 |
Durch die Bereitstellung von Carry und Overflow kann das Programm auch auf 72 Bit kaskadiert werden.
; ; UP ADD36 ; add36: ; ; Addieren von 36 Bit Werten mit Vorzeichen ; ; (Wird eine feste Anzahl von Bit addiert, so sind im Ergebnis diese Bits nur dann ; >= einem der beiden Summanden, wenn kein Übertrag entstanden ist!) ; ; im Aufruf intern ; Summand 1: R12 | R13 R4 | R5 (High | Low) ; Summand 2: R14 | R15 R6 | R7 ; Rückgabe intern ; Ergebnis : R14 | R12 | R13 R6 | R4 | R5 ; Overflow : R15 R7 ; ADDU R5, R7 ; Summe Low ADD R4, R6 ; Summe High movs2i r10, SFR_CC ; Overflow bei Summe High SLTU R4, R6 ; Übertrag bei High ? -> cc = 1 movs2i r8, SFR_CC ; r8 = Übertrag bei high SLTU R5, R7 ; Übertrag bei Low ? -> cc = 1 movs2i r9, SFR_CC ; r9 = Übertrag bei low add r4, r9 ; low Übertrag auf high addieren movs2i r7, SFR_CC ; Overflow bei Summe High + Übertrag low SLTU R4, r9 ; Übertrag dabei ? -> cc = 1 movs2i r6, SFR_CC ; r6 = Übertrag bei add low Übertrag ADDU R6, R8 ; Gesamtübertrag von High bilden xor r7, r10 ; Overflow gesamt. jrs r11 ; ;
Testprogramm: Ass-Quelle, Liste, Protokoll
SPHO-Format Start mit "G" im Monitor.
Include Datei für das Programm: spartan_equ.inc
UP add36 als Macro
Include Dateien für das Macro: add36m.incTestprogramm: ASS-Quelle, Liste SPHO-Format Start mit "G" im Monitor.