Assemblerprogramm
Beim Aufräumen meines Rechners habe ich noch einen interessanten Quelltext entdeckt, der während meines Studiums entstand, den ich niemanden vorenthalten möchte. Alles was dieses Assemblerprogramm macht, ist eine Folge von Hex-Werten in ihre ASCII-Entsprechung umzuwandeln.
Das Programm sollte auf einem MC 68000 Prozessor von Motorola noch lauffähig sein.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | * Christian Meilicke, Robert Schneider ORG $0 DC.L $8000 DC.L START ORG $2000 * 16 bytes mit den ascii-werten in hex darstellung * werden im speicher abgelegt VALUES DC.B $30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$41,$42,$43,$44,$45,$46 * register D0,D1,D4 loeschen bzw auf 0 setzen START AND.L #0,D0 AND.L #0,D1 AND.L #0,D4 * wert des bytes, das umgewandelt werden soll, in das datenregister D0 schreiben MOVE.B #$FF,D0 * anfangsadresse des speicherbereichs, in dem die ascii werte abgelegt wurden * in das adressregister A0 laden LEA VALUES,A0 * damit am schluss der hex wert des bytes weiterhin in D0 steht, * kopiere ich den wert in D4 und arbeite mit diesem wert weiter MOVE.B D0,D4 * indem ich die zahl in D4 durch hex 10 teile, * habe ich danach in den bits 0-15 von D4 den qoutienten, in den bits 16-31 den rest stehen DIVU #$10,D4 * in D1 wird dann der wert der speicherstelle geschrieben, die in A0 steht, um die distanz * von dem wert der bits 0-15 in D4 erweitert MOVE.B (A0,D4),D1 * durch eine multiplikation mit hex 100 wird der inhalt an die richtige stelle nach rechts * geschoben, sprich in das 2 byte MULU.W #$100,D1 * durch den swap erreicht man eine vertauschung der 2 16-bit worten in D4 SWAP D4 * erklaerung dieses schrittes, siehe weiter oben MOVE.B (A0,D4),D1 * hilfsdatenregister D4 wieder auf 0 setzen AND.L #0,D4 END BREAK |