DB 1 BIB=
NETZWERK 1
0:KF = +00000 ;Schleifenzaehler
1:KH = 0000 ;DINT-Zahl Byte 0 und 1
2:KH = 0000 ;DINT-Zahl Byte 2 und 3
3:KH = 0000 ;Divisor Byte 0 und 1
4:KH = 0000 ;Divisor Byte 2 und 3
5:KH = 0000 ;Quotient Byte 0 und 1
6:KH = 0000 ;Quotient Byte 2 und 3
7:KH = 0000 ;Rest Byte 0 und 1
8:KH = 0000 ;Rest Byte 2 unf 3
9:KH = 0000 ;Schmierwort
10:C =' ' ;Vorzeichen
11:KC =' ' ;ASCII-Zahl
16:KH = 0000 ;
FB 1 BIB=
NETZWERK 1
NAME :DINT_ASC ;
0005 :A DB 1 ;Daten-DB
0006 : ;
0007 :L KF +0 ;Schleifenzaehler initialisieren
0009 :T DW 0 ;Schleifenzaehler
000A : ;
000B :L DH 3B9A CA00 ;1000000000
000E :T DD 3 ;Divisor initialisieren
000F : ;
0010 :L KF +0 ;Divisor 2 initialisieren
0012 :T MW 10 ;
0013 :L KF +10 ;
0015 :T MW 12 ;
0016 : ;
0017 :L DD 1 ;DINT-Zahl laden
0018 :SLD 1 ;Vorzeichen rausschieben
0019 :SPZ =POS ;Springe wenn Vorzeichen positiv
001A :L KF +45 ;
001C :T DW 10 ;Minuszeichen ASCII ablegen
001D :TAK ;geschobene DINT-Zahl in Akku1
001E POS :RRD 1 ;DINT-Zahl ohne Vorzeichen
001F :T DD 1 ;Ablegen
0020 : ;
0021 LOOP :SPA FB 4 ;32-Bit-Dividierer
0022 NAME :DIV:32 ;
0023 Z12 : DW 1 ;
0024 Z11 : DW 2 ;
0025 Z22 : DW 3 ;
0026 Z21 : DW 4 ;
0027 OV : M 0.0 ;
0028 FEH : M 0.1 ;
0029 Z3=0 : M 0.2 ;
002A Z4=0 : M 0.3 ;
002B Z32 : DW 5 ;
002C Z31 : DW 6 ;
002D Z42 : DW 7 ;
002E Z41 : DW 8 ;
002F : ;
0030 :U D 0.0 ;Schleifenzaehler ungerade
0032 :SPB =UNG ;
0033 : ;
0034 :L DW 6 ;Quotient
0035 :L KH 0030 ;
0037 :OW ;
0038 :T DL 9 ;Ziffer ASCII
0039 :SPA =NEXT ;
003A : ;
003B UNG :L DW 6 ;Quotient
003C :L KH 0030 ;
003E :OW ;
003F :T DR 9 ;Ziffer ASCII
0040 : ;
0041 :L DW 0 ;Schleifenzaehler
0042 :D 1 ;
0043 :L KF +2 ;
0045 ::F ;
0046 :I 11 ;Offset fuer ASCII Zahl
0047 :T MW 2 ;Adresse Zeichen
0048 :L DW 9 ;Zeichen laden
0049 :B MW 2 ;Adresse indirekt laden
004A :T DW 0 ;ASCII Ziffer ablegen
004B : ;
004C NEXT :L DW 0 ;Schleifenzaehler
004D :I 1 ;
004E :T DW 0 ;um 1 erhoehen
004F : ;
0050 :L DD 7 ;Rest der Division
0051 :T DD 1 ;umladen als neuer Dividend
0052 : ;
0053 :SPA FB 4 ;Divisor durch 10
0054 NAME :DIV:32 ;
0055 Z12 : DW 3 ;
0056 Z11 : DW 4 ;
0057 Z22 : MW 10 ;
0058 Z21 : MW 12 ;
0059 OV : M 0.0 ;
005A FEH : M 0.1 ;
005B Z3=0 : M 0.2 ;
005C Z4=0 : M 0.3 ;
005D Z32 : MW 14 ;
005E Z31 : MW 16 ;
005F Z42 : MW 18 ;
0060 Z41 : MW 20 ;
0061 : ;
0062 :L MD 14 ;Quotient
0063 :T DD 3 ;Als Divisor fuer naechste DIV
0064 : ;
0065 :L DW 0 ;Schleifenzaehler
0066 :L KF +10 ;10 Ziffern bearbeitet
0068 :<F ;
0069 :SPB =LOOP ;
006A : ;
006B :BE ;