Teil 2
Gut. Um zu demonstrieren wie zäh die Abarbeitung von Maschinencode erscheint.
Hier ein Programm im Assembler von http://andremueller.gmxhome.de/intro.html#firstprog für den Befehlssatz des x86 Prozessors
TITLE Das erste Programm ;Diese Zeile ist optional IDEAL ;IDEAL-Modus einschalten MODEL SMALL ;Speichermodell STACK 100 ;100 Bytes für den Stack DATASEG ;Beginn des Datensegments derText db 'Das erste Programm$' ;1. CODESEG ;Beginn des Codesegmentes start: ;2. STARTUPCODE mov ah, 009h ;3. mov dx, OFFSET derText ;4. int 21h ;5. EXITCODE END start ;6.
Nun noch die Erklärung der einzelnen Zeilen:
- Hier wird die Zeichenkette definiert, die ausgegeben werden soll
- Dies ist die Anfangsmarke für Code (s. auch weiter unten)
- In das Prozessorregister AH den Wert 9 schreiben
- Das Prozessorregister DX mit der Adresse des Ausgabestrings beschreiben
- Aufruf eines Interrupts;
- Die Endmarkierung für die Assemblierung; alles, was jetzt noch kommt, wird vom Assemblierer ignoriert
Das Knobelvergnügen daran war ( oder ist ) die Ressourcen so Optimal wie Möglich zu nutzen und durch einen Programmkniff einen Zyklus zu sparen, oder 2 oder 10. Andererseits erkennt man auf diesem Wege auch Fehler und Probleme in der Archikektur der Prozessors und seiner Befehle.
Keine Kommentare:
Kommentar veröffentlichen