Seiten

Dienstag, 26. April 2011

Assembler und Maschinensprache

Assembler und Maschinensprache

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:
  1. Hier wird die Zeichenkette definiert, die ausgegeben werden soll
  2. Dies ist die Anfangsmarke für Code (s. auch weiter unten)
  3. In das Prozessorregister AH den Wert 9 schreiben
  4. Das Prozessorregister DX mit der Adresse des Ausgabestrings beschreiben
  5. Aufruf eines Interrupts;
  6. Die Endmarkierung für die Assemblierung; alles, was jetzt noch kommt, wird vom Assemblierer ignoriert
Wie man erkennen kann wird in jeder Anweisung haarklein erläutert, was derProzessor wann zu tun hat. Da immer nur ein Befehl auf einmal ausgeführt werden kann bemerkt man allerdings wieviel Planung und Kreativität erfordert wird. Werden Operationen häufig ausgeführt um einen Zweck zu erfüllen versucht man sie zu optimieren. Dies geschieht sowohl auf Programmebene als auch auf der Ebene der Prozessorarchitektur.

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