Programmieren - alles kontrollieren 4.940 Themen, 20.676 Beiträge

assembler

CyberBrain / 1 Antworten / Flachansicht Nickles

Was sind assembler, nennt bitte mal ein Beispiel?

bei Antwort benachrichtigen
Wumpchild CyberBrain „assembler“
Optionen

ich hab hier mal eine Erklärung aus einen Assembler-Tutorial...

Ein Assembler ist ein Übersetzer für Programmcode, der sich aus Maschinenbefehlen zusammensetzt. Diese Befehle können sich je nach verwendeten Prozessor stark unterscheiden. Im normalen PC werden Prozessoren verwendet, die zu dem 8086 von Intel kompatibel sind. Der Befehlssatz wurde über die Jahre erweitert, wobei die Kompatibilität zum "Urmodell" stets gewahrt wurde.01
In der Art der verwendeten Befehle besteht der wesentliche Unterschied zu allen anderen Programmiersprachen. Während sich Befehle bei den Hochsprachen02 in der Übersetzung aus mehreren Anweisungen im endgültigen Code zusammensetzen, wird der Assemblerbefehl durch den Assembler lediglich in die entsprechende Binärform03 übersetzt. Weiterhin ersetzt der Assembler Variablen durch die entsprechenden Speicheradressen.
Die Hochsprachen stellen eine Vielzahl von Funktion wie z. B. clrscr, writeln( ) usw. zur Verfügung. Deren Realisierung würde in Assembler mehrere Zeilen in Anspruch nehmen. Bei solchen Standardfunktionen sollte man immer auf die Funktionen der Hochsprache zurückgreifen.
Assembler-Programmierung wird auch oftmals als Systemprogrammierung bezeichnet. Dieses Wort weist auf den ganz speziellen Charakter hin. Assemblerprogramme sind meist nur auf einer Prozessorplattform lauffähig und können nur unter großem Aufwand auf ein anderes System portiert werden.04 So kann man bei einem Assembler nicht einstellen einmal 8086 Befehle und für das nächste System RISC-Befehle zu nutzen, da die verwendeten Befehle und deren Einsatz sich stark unterscheiden.


hier mal kleines Beispiel...
wenn der Code nicht kommentiert wäre hätte ich keinen Plan was da steht... :)


.MODEL TINY ;Speichermodell für COM
CODE SEGMENT ;Beginn Code-Seg
ASSUME CS:CODE, DS:CODE ;CS und DS auf Code-Seg
ORG 100h ;Startadresse COM

beginning: ;Startlabel
JMP install ;zur Installation springen

INTPROC PROC FAR ;neuer INT-5-Handler
STI ;Interrupts zulassen
IRET ;zurückkehren
last_byte: ;letztes Byte des Handlers
INTPROC ENDP ;Ende des Handlers

;Installation des Interrupt-Handlers
install: ;Label install
MOV DX,OFFSET INTPROC ;Offset nach DX (Segment steht in DS)
MOV AX,2505h ;Funktion 25h, Interrupt-Vektor 5
CLI ;Interrupts sperren
INT 21h ;auf die eigene Routine umleiten
STI ;Interrupts zulassen

;Programm speicherresident beenden
MOV DX,OFFSET last_byte;Anz. Bytes, die resident bleiben
SHR DX,4 ;in Paragraphen umwandeln
INC DX ;DX zur Sicherheit erhöhen
MOV AX,3100h ;Programm resident beenden
INT 21h ;
CODE ENDS ;Ende Code-Seg
END beginning ;Ende des Programms


Wumpchild

p r o s tWumpchild
bei Antwort benachrichtigen