Konvertierung 9 Stellen BCD zu 36 Bit BIN
Konvertierung bcd2bin für 36 bit
Operanden | high | low |
Stellen 8-0 in bcd | r12 | r13 |
Ergebniss | high | low |
binärer Wert | r12 | r13 |
Fehler r15 != 0 | r15 |
Zur Nutzung des Unterprogramm sind auch die Unterprogramme add36u und div361836 notwendig.
; ; UP Konvertierung bcd nach bin für 9 Stellen Dezimal ; bcd2bin: ; ; im Aufruf intern ; Wert BCD: R12 | R13 R4 | R5 Stellen [8:0] ; Rückgabe intern ; Wert Bin: R12 | R13 R4 | R5 (High | Low) ; Fehler: R15 r7 != 0 ; ; Dezimal: 100000000 ; HEX: 0x5F5E100 (Assembler kann nur 32 Bit!) ; mov r6, r4 mov r7, r5 xor r4, r4 ; high xor r5, r5 ; low lhi r8, 0x5F5E100 >> 27 ori r8, (0x5F5E100 >> 18) & 0x1ff lhi r9, (0x5F5E100 >> 9) & 0x1ff ori r9, 0x5F5E100 & 0x1ff ; ; Wert der höchsten Stelle nach r10 ; bin_z: xor r10, r10 ; Zahl in der aktuellen Stelle mov r12, r10 mov r13, r6 movi r14, 4 ; eine Stelle links trap 25 ; sll36 oberen 4 Bit nach r12 mov r10, r12 ; höchste Stelle nach r10 mov r12, r6 mov r13, r7 movi r14, 4 ; eine Stelle links trap 25 ; sll36 slei r10, 9 mov r6, r12 ; reststellen high mov r7, r13 ; reststellen low beqzc bin_err ; ; Test auf Ende der Konvertierung bei r8|r9 = 1 ; mov r12, r8 or r12, r9 seqi r12, 1 mov r12, r4 bnezc bin_end ; ; 10 er Potenz entsprechend Anzahl in r10 zu r4|r5 addieren ; mov r13, r5 bstelle: beqz r10, bfertig ; Stelle ist 0 mov r14, r8 mov r15, r9 jals addu36 ; 10 Potenz addieren addi r10, -1 j bstelle ; bfertig: mov r4, r12 mov r5, r13 ; ; 10 Potenz durch 10 und Ende bei 1 ; mov r12, r8 mov r13, r9 movi r15, 10 jals div3618 mov r8, r12 mov r9, r13 j bin_z ; ; Einer Stelle aus r10 noch zu r4|r5 addieren ; bin_end: mov r12, r4 mov r13, r5 xor r14, r14 mov r15, r10 jals addu36 mov r4, r12 mov r5, r13 xor r7, r7 ; Kein Fehler bei der Konvertierung jrs r11 ; ; Eine Stelle der BCD Zahl war groesser als 9 ; bin_err: movi r7, 1 jrs r11 ;
Testprogramm mit dezimaler E/A: Ass-Quelle, Liste, Protokoll
SPHO-Format Start mit "G" im Monitor.
Testprogramm mit dezimaler E/A und HEX Kontrolle: Ass-Quelle, Liste, Protokoll
SPHO-Format Start mit "G" im Monitor.
Include Datei für beide Programme: spartan_equ.inc
UPs bcd2bin, bin2bcd, d361836u, sub36 und addu36 als Macro
Include Dateien für die Macros: bcd2binm.inc, bin2bcdm.inc, d361836um.inc, sub36m.inc, addu36m.incTestprogramm mit dezimaler E/A und HEX Kontrolle: Ass-Quelle, Liste, SPHO-Format Start mit "G" im Monitor.