★ CODING ★ SOURCES ★ Assembler-Tips ★ |
MOD Constant multiplication (CPC Amstrad International) | Coding Sources |
Ein “Ready to use“-Tip und Hilfe für 'Oldtimer' Mit diesem Artikel wollen wir eigentlich zwei Fliegen mit einer Klappe schlagen. Zuerst können Sie etwas über ein Assembler- Utility lesen, das in die Sparte “Optimizing“ (das Bestreben, einen bestimmten Programmteil effektiver zu programmieren) fallt, es behandelt die Multiplikation von Konstanten in Maschinensprache. Der Rest des Artikels steht dann ganz im Zeichen von Ergänzungen, Verbesserungen und Anpassungen von vor einiger Zeit erschienenen Assembler-Routinen. Oft ist es nötig, eine variable Zahl in einem Register mit einem festen Wert zu multiplizieren - wir nennen es der Einfachheit halber Konstanten-Multiplikation. Meist wird dabei eine Multiplikations-Routine für ZWEI variable Werte benutzt, zum Beispiel HL=DE*HL. Das ist jedoch im vorliegenden Fall wenig sinnvoll, denn dies kostet nicht nur Platz, sondern auch Zeit. Jetzt kann man es aber auch übertreiben, werden Sie sicherlich sagen. Da haben Sie auch nicht ganz unrecht, aber das Thema ist trotzdem interessant genug, um untersucht zu werden. Wir präsentieren Ihnen hier eine Sammlung von relativ kurzen Assembler-Unterroutinen, die das Register HL mit 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 16, 32, 64 oder 128 multiplizieren und das Ergebnis wieder in HL zurückgeben. Wollen Sie nun zum Beispiel HL mit 3 multiplizieren, so können Sie einfach das dazu geschriebene Modul verwenden, das sogar noch kürzer ist, als der Aufruf des allgemeinen Multiplikationsprogrammes, einschließlich dem Laden der dazu nötigen Register! Und das ist doch wohl durchaus erfreulich, oder? Assembler-Splitter So, und nun wollen wir noch ein paar Verbesserungen , Korrekturen und Dementi zu schon veröffentlichten “Ready to use“-Tips bringen und ein paar Fragen beantworten, die sich in bezug auf unsere Assembler-Programme ergaben: “ent$“ — Was ist denn das? Immer wieder tauchen Fragen auf, was es mit dem “ent $“ in den Assemblerprogrammen, die unter der Rubrik 'Ready-to-use-Tips' erscheinen, auf sich hat. Der Befehl “ent“ ist eine sogenannte Assemblerdirektive, also eine Steueranweisung an den Compiler. Diese macht im Prinzip nichts anderes, als die gegebene Adresse für den Einsprung vorzumerken. Für den GEN A-Assembler von HiSoft bedeutet das, daß die angegebene Adresse nachher intern gespeichert worden ist und Sie dann mit dem Befehl “R“ vom Editor aus das Programm probeweise starten können, “ent“ ist nicht bei jedem Assembler vorhanden. Das Zeichen “$“ heißt nur, daß für die Adresse der aktuelle Befehlszähler bei der Compilierung eingesetzt werden soll. Mit dem eigentlichen Assemblerprogramm hat dieser also nichts zu tun. Texteingabe Invert Noch faster... Erweiterter “erweiterter Zeichensatz“ B6=064= Invertederhält man durch folgende Änderungen beziehungsweise Erweiterungen des CHAR-Assemblerprogrammes (Heft 8/87): Änderung von Zeile 1790 in jr z,inverssowie eine Einfügung ab Zeile 1821 (GENA mit 11821,1): invers: bit 6 ,a |
|
|