Assembler ist manchmal einfach wunderbar. Warum wunderbar? Es gibt Dinge, die man nicht erwartet, gerade beim 68000-Prozessor von Motorola. Eigentlich der (Private)Workstation-Prozessor genutzt in den ersten richtig leistungsstarken PCs wie dem Macintosh und danach in den 16/32Bit Homecomputern. Davor in vielen Arcades (Foodfight Atari 1983+) und danach in Consolen (Megadrive etc.) Seine Nachfolger 68030 waren für wichtige andere Meilensteine der Geschichte der Computerindustrie verantwortlich etwa die NExT.
Und hier ein kleines Müsterchen:
In der ersten Zeile wird ein Word (2Bytes) von einer Speicherstelle a4 (Adresse) in eine zweite verschoben a3 (Adresse). Mit move.w (a4)+ kann man verschieben und die Adresse ein Byte hochzählen. Leider ist nun ein Word 2 Bytes lang und so muss man nochmals hochzählen. Und siehe da der Prozessor kann das mit ++. Diese einfach Sache macht weiteres hinzfügen mit add.l #1,a4 und add.l #1,a3 unnötig.
Natürlich bleibt dadurch die Programmierung in Assembler weitere eine Konzentrationssache. Dennoch ist in dieser einen Zelle soviel klar lesbar.
// ToDo: Woher kommt das i++ ? .-)