Beiträge von mc71 im Thema „Styleguide für Assembler“

    Das ist schon hart zu deuten.

    Code niemals für den Fairchild F8. Da steht nämlich nirgends dran, daß Dir schon ein einfaches JMP den Akku zerschießt (also den im Prozessor, nicht den im Laptop). Meide ebenso den TDL-Z80-Assembler. Da darfst Du erstmal die selbstgestrickten Intel-style Mnemonics für den erweiterten Befehlssatz lernen.

    Übrigens: das clc von neulich gehört gefälligst _nicht_ an den Anfang, auch wenn es eine hübsche Einrückung erzeugt. Die bekommt man aber auch mit einer leeren Kommentarzeile hin. Und das clear carry gehört nunmal inhaltlich zu der Addition. Erster Befehl muß vielmehr ein LDA Bitte melde dich an, um diesen Link zu sehen. sein; nicht nur weil dann beide Zeropage-Zugriffe in Rechenbefehlen erfolgen (das ist eher akademischer Natur), sondern vor allem weil dann sowas geht:

    Damit ist die Routine flexibel verwendbar. Wer mag, ersetzt das .by $2c noch durch ein SKIP2-Makro. Ist da sverständlich? Nun, für damalige Programmierer ganz sicher, denn die kannten den Prozessor-Befehlssatz nnoch auf Bit- und Byte- Ebene; heute sind die meisten ja schon aufgeschmissen wenn der Hersteller keinen C-Compiler mitliefert...

    Und um das nächste Faß aufzumachen: Man muß seinen Assembler schon recht genau kennen um zu wissen, ob der Sternchen-Operand auf den Beginn der Zeile zeigt, oder (wie der PC bei Ausführung des Sprunges) auf den folgenden Opcode- oder aber, was leider nur selten vorkommt, ob man dem Assembler direkt den Operanden des relativen Sprungbefehls anbieten kann.

    Und wenn euch zwischen den Jahren langweilig wird: Wie müssen die Flags (vor allem das Carry) bei eienm Vergleichsbefehl gesetzt sein, wenn der Operand kleiner war als der Vergleichswert? Stichwort Z80...

    Irgendeine Richtschnur zum Einrücken und leichter Lesbarkeit.

    Ganz klar: nein. Es gibt die hart codierte Syntax des jeweiligen Assemblers, und wenn die Dir sagt: Keine Einrückungen, oder genau ein Leerzeichen am Zeilenanfang, wenn es kein Label ist, dann führt da kein Weg dran vorbei. Manchmal gibt es ein sauber kolumniertes Assembler-Listing zum Objektcode dazu. Und Labelnamen sind gern mal auf 6 oder 8 Zeichen Länge begrenzt, auch da ist der Spielraum sehr eng. Obacht übrigens bei Labels, die mit einem Doppelpunkt enden: Manchmal gehört der zur Syntax der Label-Definition, wird also bei der Verwendung des Labels als Operand weggelassen; manchmal ist der aber auch Teil des Label-Namens... und im 8502-BIOS des 128er CP/M gibt es Label der Art kernal$go$anywhere; hier dienen die Dollarzeichen nur der optischen Gleiderung und gehören nicht zum Symbolnamen...

    Natürlich gibt es auch die original-Commodore-Label. Die werden mal emhr, mal weniger verwendet- beid en Kernal-Einsprüngen udn den wichtigsten Pointern sind sie eigentlich übblich, aber lange nicht verpflichtend. Und viele sidn auch eher unbekannt bis nichtssagend. Und als wäre das alles noch nicht undurchsichtig genug, so gibt es neuerdings Überlegungen, die Kernal-Label in 'ausgeschriebene' Lange Labels umzuschreiben. Herzlichen Glückwunsch, wenn Du 30 Jahre lang mit den Kurzformen gearbeitet hast und Dein Lieblingsassembler zur 8-Zeichen-Fraktion gehört.