View and vote on the article here: Assembler Teil 1
Assembler Teil 1| Category | | | Summary | | | Body | Dieses Tutorial ist für Leute, die wie ich Assembler lernen wollen. Ich bin nicht besonders gut, da ich selbst noch am Lernen bin, aber ich werde mein Bestes geben.Als Erstes sollte man ein paar Assembler Grundlagen für unser erstes Programm wissen.
Register:
Es gibt 4 Hauptregister Typen (zum allgemeinen Gebrauch): ax, bx, cx und dx
ax wird normalerweise für die Speicherbenutzung gebraucht (Addieren,Subtrahieren etc)
bx wird normalerweise für Zeiger benutzt
cx wird normalerweise für Schleifen benutzt
dx wird normalerweise zum Speichern von Daten benutzt
jedes Register kann in zwei Teile unterteilt werden,da jedes Register eine 4 stellige hexadezimal Zahl ist,wie zum Beispiel 2a5gh (das h am Ende bedeutet hexadezimal)
wir haben also Dinge wie ah und al
ah (h für high) und al(l für low) entsprechen dem oberen(high) und unteren(low) Teil des ax Registers
wenn also ax 3c56h wäre,
wäre ah 3ch und al 56h
Durch derartiges Benutzen von Registern kann man Platz im Speicher sparen.
(Hinweis: Das funktioniert auch für bx, cx und dx Register)
Es gibt noch weitere Register,aber zu diesen kommen wir später.
Wir werden auch Programmaufrufe(calls),Flags,Identifikatoren und mehr Register in späteren Lektionen behandeln. Unser erstes Programm demonstriert das simple "Hello World" Programm.
;Hello World Programm
;man kann das Semikolon benutzen um ein Kommentar zu machen
.model small ;dies sagt dem Assembler,dass nicht viel Speicher benötigt wird
.stack ;werden wir auch erst später behandeln
.data ;hier werden wir unsere Daten speichern
message db "Hello World!!","$"
.code
main proc ;Beginn des Prozesses main
mov ax,seg message ;verschiebt den String in ein Register
mov ds,ax ;verschiebt den String in ein Datensegment
mov ax,09h ;ruft die print-to-screen(dt.:Auf den Bildschirm schreiben) Funktion auf
lea dx,ax ;LEA load effective address (dt.:Lade reale Adresse)
;verschiebt die Daten in ds(mit ds Register)
;mit der Funktion an der Adresse in ax (welche 09h ist),
;und gibt im Wesentlichen den String auf den Bildschirm aus
int 21h ;unterbricht das Programm,welches ermöglicht
;den String auf den Bildschirm auszugeben
mov ah;4ch ;beachte das ah und das 4c, ax ist also 4c00h
;das ist die DOS Routine um DOS zu beenden
int 21h ;erlaubt wiederum das Programm sich zu beenden
main endp ;ende des Prozesses main
end main ;ende des Programms und eine Mitteilung an den
;Assembler,wo es das Programm starten soll
Verfasst von Apocolipse (13. März)
This article was originally published by CyberArmy.net in the CyberArmy Library.
|
|
There are no replies to this post yet.
|