APPLICATIONSPROGRAMMATION ★ CPC International Z80-ASSEMBLER ★

CPC International Z80 - Assembler|CPC Amstrad International)Applications Programmation
★ Ce texte vous est présenté dans sa version originale ★ 
 ★ This text is presented to you in its original version ★ 
 ★ Este texto se presenta en su versión original ★ 
 ★ Dieser Text wird in seiner Originalfassung präsentiert ★ 

Der Einstieg in die Maschinensprache ist nicht einfach, insbesondere, wenn es auch noch am richtigen Werkzeug mangelt. Wem bisher zum Z 80 Assemblerkurs ein passender Assembler fehlte, der findet hier, was er braucht: Der gesamte Z 80-Befehlssatz und alle gängigen Assemblerdirektiven werden verarbeitet. Das Listing kann wahlweise auf dem Bildschirm oder Drucker ausgegeben werden, und nach der Übersetzung stehen drei Aufzeichnungsformate für Cassette/Diskette zur Verfügung. Das Quellprogramm wird in Form von Basiczeilen eingegeben, so daß Hilfsmittel wie LIST, EDIT, AUTO, DELETE usw. in gewohnter Weise benutzt werden können.

Aus diesem Grund ist der Assembler nicht nur für fortgeschrittene Programmierer geeignet, sondern auch für den Anfänger eine ideale Ergänzung zum Assemblerkurs. Allerdings legt der Assembler, genau wie der Basic-Interpreter des CPC, großen Wert auf korrekte Eingaben. Die folgende Anleitung sollte deshalb sorgfältig studiert werden.

Hinweise zum Abtippen:

Die REM-Kommentare im Listing brauchen nicht mit eingegeben zu werden. Sie dienen nur als Orientierung und Hilfe bei einer hoffentlich nicht notwendigen Fehlersuche. Beachtet werden muß der Unterschied zwischen der normalen Division und der Ganzzahldivision (umgekehrter Schrägstrich). Wichtig ist weiterhin, daß die Leerzeichen in den Befehls- und Registertabellen im Initialisierungsteil korrekt mit eingegeben werden.

Die Eingabe des Quellcodes:

Das Quellprogramm wird in Form von Basiczeilen eingegeben: es kann beliebig Groß- und Kleinschreibung benutzt werden. Jede Zeile beginnt also mit einer Zeilennummer, wobei der Bereich von 1-9999 zur Verfügung steht. Auf die Zeilennummer muß ein REM-Apostroph (") folgen, da die Zeile sonst in den Interpretercode umgewandelt wird und vom Assembler nicht mehr gelesen werden kann. Für die Eingabe des Quellprogramms ist der Assembler nicht notwendig, er kann nachträglich mit MERGE dazugeladen und mit RUN gestartet werden.

Die Syntax:

Eine Quellprogrammzeile setzt sich wie folgt zusammen:

Zeilennummer Label Befehl Operand; Kommentar

Label, Befehl und Operand müssen durch mindestens ein Leerzeichen getrennt sein, dürfen aber selber keine Blanks enthalten. Falsch wäre zum Beispiel:

  • 10 START LD A, (HL); Akku laden
Hier meldet der Assembler einen Fehler, da der Operand ein Leerzeichen enthält.

Alles, was auf ein Semikolon folgt, wird als Kommentar betrachtet und bei der Assemblierung nicht weiter berücksichtigt.

Die Eingabe von Zahlen:

Zahlen werden in der beim CPC üblichen Weise angegeben, also mit einem vorangestellten "&" für Hexadezimalzahlen bzw. "&X" für Binärzahlen. Der Assembler akzeptiert auch negative Zahlen, die automatisch ins Zweierkomplement umgerechnet werden. Die Verwendung von Labels:

Programmzeilen können mit einem Namen (Label) gekennzeichnet werden, der dann bei Sprungbefehlen die absolute oder relative Adresse ersetzt. Weiterhin ist es möglich, einem Label mit Hilfe der Assemblerdirektive EQU einen Wert zuzuweisen. Dazu ein Beispiel:

10 WERT EQU 32
20 START LD A, WERT; Akku mit 32 laden

:

: 100 JR START; relativer Sprung nach START

Der Assembler merkt sich den zu m Label gehörenden Wert in einer Tabelle und baut ihn korrekt in das Maschinenprogramm ein.

Ein Label muß mit einem Buchstaben beginnen und kann maximal 6 Zeichen lang sein: der Rest wird erbarmungslos abgeschnitten.
Zum Abschluß der Übersetzung gibt der Assembler die gesamte Labeltabelle auf dem Bildschirm aus. Wurde ein Label benutzt, aber nicht im Programm definiert, so erfolgt eine Fehlermeldung.

Die Pseudobefehle:

Das sind Anweisungen, die nicht zum Z 80-Befehlssatz gehören, sondern direkt vom Assembler ausgeführt werden. Der CPC International-Assembler versteht folgende Kommandos:

  • ORG adr: Bestimmt die Startadresse des Maschinenprogramms. Normalerweise reserviert der Assembler den Bereich ab Adresse &A000 für Maschinencode (Objektcode). Wird diese Grenze mit einer ORG-Anweisung unterschritten, paßt der Assembler HIMEM automatisch an, damit das Programm nicht durch Basic überschrieben wird,
  • label EQU wert: Weist einem Label einen Zahlenwert zu.
  • DB n : Schreibt das Byte n ins Programm.
  • DW nn : Schreibt den 2-Byte-Wert nn ins Programm.
  • DS n : Reserviert einen Speicherbereich mit einer Länge von n Bytes für Variablen.
  • DM "text" : Erlaubt die Eingabe eines Textes in das Maschinenprogramm. Der Text muß in Anführungszeichen eingeschlossen sein. Jede DM-Anweisung kann maximal 10 Zeichen übergeben.
  • END : Bezeichnet das Ende des Quellprogramms. Trifft der Assembler auf eine Zeilennummer >9999, so wird die Übersetzung ebenfalls beendet.
  • Anmerkung: Die Kommandos DB, DW, DS und DM tauchen in Assemblerlistings auch häufig in der Form DEFB, DEFW. DEFS und DEFM auf, haben aber die gleiche Bedeutung.
  • Relative Sprünge und Restart-Befehle: Bei relativen Sprüngen kann die Zieladresse oder die Sprungdistanz in der Form S+dis bzw. $-dis angegeben werden. Auf Restart-Befehle muß die zugehörige Adresse folgen. z.B. RST&18.
  • Das Listing: Bei der Übersetzung wird ein Listing des Quellprogramms erstellt und zusätzlich noch der Objektcode und die dazugehörige Adresse angegeben.
    Bei der Verwendung von Labels ist eine Besonderheit zu beachten: Trifft der Assembler auf ein Label, das erst zu einem späteren Zeitpunkt im Programm definiert wird (zum Beispiel bei Vorwärtssprüngen), so kann er den Objektcode noch nicht vollständig angeben und setzt provisorisch Nullbytes ein. Diese Zeilen sind,mit einem Stern (*) gekennzeichnet. Nach Abschluß der Übersetzung steht das Maschinenprogramm trotzdem komplett im Speicher, da die fehlenden Werte nachträglich eingesetzt werden. Falls ein vollständiges Listing des Objektcodes gewünscht wird, kann ein zweiter Durchlauf (Pass) gestartet werden, bei dem der Assembler dann über die vollständige Labeltabelle verfügt.
  • Die Fehlerbehandlung: olgende Fehlermeldungen können unter Angabe der Zeilennummer bei der Assemblierung auftreten:
  • ' missing: Der REM-Strich am Anfang der Zeile fehlt. Dieser Fehler führt allerdings in den meisten Fällen schon gleich nach dem Programmstart mit RUN zu einem Syntax-Error, der durch den Interpreter des CPC angezeigt wird.
  • Syntax Error: Die Zeile kann nicht übersetzt werden, da ein Befehl oder das Format unzulässig ist.
  • Distance out of Range : Bei einem relativen Sprung oder einem indizierten Befehl wurde eine zu große Distanz angegeben.
  • Operand missing: Ein Operand fehlt oder enthält Leerzeichen.
  • Improper Argument : Ein Operand enthält einen unzulässigen Ausdruck. Im Unterschied zum Basic-Interpreter bricht der Assembler nach einer Fehlermeldung nicht ab. Dadurch können alle in einem Programm enthaltenen Fehler ermittelt werden, ohne daß der Übersetzungsvorgang jedesmal neu gestartet werden muß. Zum Abschluß gibt der Assembler die Gesamtzahl der Fehler an.
  • Die Aufzeichnung: Das Maschinenprogramm kann nach der Assemblierung unter dem beim Programmstart angegebenen Namen mit dem Zusatz "/OC" (Objektcode) als Binärfile gespeichert werden. Weiterhin ist eine Umwandlung in Datazeilen möglich, die mit dem Zusatz "/BL" (Basiclader) auf Cassette/Diskette geschrieben werden. Mit dem dritten Aufzeichnungsformat wird der Quellcode "/QC") als ASCII-File gesichert, ohne daß vorher der Assembler gelöscht werden muß. Danach kann das Quellprogramm mit DELETE -9999 gelöscht werden und bei Bedarf ein neues Programm mit MERGE nachgeladen werden.

Hier ein kleines Programm zum Ausprobieren. Es invertiert den gesamten Bildschirm und wird nach der Assemblierung mit CALL &A000 aufgerufen.

CPCAI 8601

★ PUBLISHER: CPC AMSTRAD INTERNATIONAL
★ YEAR: 1985
★ CONFIG: 64K + AMSDOS
★ LANGUAGE:
★ LICENCE: LISTING
★ AUTOR: Matthias Uphoff

★ AMSTRAD CPC ★ DOWNLOAD ★

File:
» CPC  International  Z80-Assembler    GERMANDATE: 2013-09-03
DL: 50 fois
TYPE: ZIP
SIZE: 28Ko
NOTE: 40 Cyls
.HFE: OUI

Je participe au site:
» Newfile(s) upload/Envoye de fichier(s)
★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Applications » CPC International Z80 - Assembler (CPC Amstrad International)
» Applications » Biomorphs (Computing With the Amstrad)
» Applications » Sideways Lks (The Amstrad User)
» Applications » Quadsolver
» Applications » Micris-Tab
» Applications » Disquette Systeme Au Format Data ... ou comment réssusciter 9 Ko (Amstar&CPC)

QUE DIT LA LOI FRANÇAISE:

L'alinéa 8 de l'article L122-5 du Code de la propriété intellectuelle explique que « Lorsque l'œuvre a été divulguée, l'auteur ne peut interdire la reproduction d'une œuvre et sa représentation effectuées à des fins de conservation ou destinées à préserver les conditions de sa consultation à des fins de recherche ou détudes privées par des particuliers, dans les locaux de l'établissement et sur des terminaux dédiés par des bibliothèques accessibles au public, par des musées ou par des services d'archives, sous réserve que ceux-ci ne recherchent aucun avantage économique ou commercial ». Pas de problème donc pour nous!

CPCrulez[Content Management System] v8.7-desktop/cache
Page créée en 112 millisecondes et consultée 916 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.