Standardmäßig wird NEAR verwendet:
name PROC
name ENDP
Man kann NEAR aber auch explizit angeben:
name PROC NEAR
name ENDP
Die Deklaration von FAR ist ähnlich:
name PROC FAR
name ENDP
NEAR-Prozeduren befinden sich im gleichen Segment (Intrasegment) und haben nur einen anderen Offset. FAR-Prozeduren liegen außerhalb des Segments (Intersegment) und haben ebenfalls einen anderen Offset.
Eselsbrücke: Intranet = innerhalb, Internet = außerhalb
Gefunden in “Technische Informatik 1: Grundlagen der Informatik und Assemblerprogrammierung” von Thomas Müller (ISBN: 372813001X).
Beispiel:
.MODEL
.STACK
.DATA
.CODE
Progammzeile 1
Progammzeile 2
…
Progammzeile n
END
Das lässt sich ändern, in dem man vor die erste “sinnvolle” Anweisung eine selbstdefinierte Marke setzt und diese Marke dann nach dem END angibt.
Beispiel mit Marke “anfang“:
.MODEL
.STACK
.DATA
.CODE
anfang: Progammzeile 1
Progammzeile 2
…
Progammzeile n
END anfang
Deswegen empfehle ich als Alternative den LZASM (Lazy Assembler) und ALINK. Beide Programme können unter Windows XP über die Kommandozeile (cmd) ausgeführt werden. LZASM und ALINK sowie eine WIN32.LIB sollten sich im selben Ordner befinden. Danach kann über die Konsole wie folgt gelinkt werden:
lzasm hello.asm
alink -oPE hello.obj win32.lib
Das Ergebnis ist eine ausführbare hello.exe. Mit dem Turbo Debugger for DOS kann man dann eine Pentium Pro CPU mit 16 Bit Registern emulieren und seinen Programmcode testen. Der Turbo Debugger for Win32 hat sogar einen 32 Bit Registersatz.
Zum Schreiben des Quelltexts (*.asm) empfehle ich Notepad++.

0