Det �r n�stan en fr�ga om en smaksak om vi skall s�tta MACRON
f�re Externa Procedurer eller tv�rtom n�r det g�ller att g�ra
assemblerprogram l�tthanterliga.
F�ljande kr�vs f�r att en Extern Procedur skall accepteras av
LINK:
* Det reserverade ordet SEGMENT m�ste f�ljas av det reserverade
ordet PUBLIC. Det medf�r att vi "f�rvarnar" om att vi t�nker
koppla samman det *ofullst�ndiga basprogrammet* med en Extern
Procedur. Dessa tv� programdelar skall sedan l�nkas samman till
en fungerande enhet. L�t oss kalla den programdel som �r
anropande f�r "basprogrammet".
* F�r att ovanst�ende sammanl�nkning skall vara m�jlig kr�ves
dessutom att det reserverade ordet EXTRN f�ljt av namnet p� den
rutin vi avser, finns med. Raden om Externa Procedurer kan
exempelvis placeras inom samma omr�de som MACRO-angivelserna.
* Sj�lva anropet av den Externa Proceduren g�res p� samma s�tt
som anropet av en Intern Procedur (CALL Proc_Namn).
* Hur skrives d� den Externa Proceduren? Jo, som exemplet nedan
visar. Man m�ste s�ledes ha samma referens p� CS-segmentet, i
detta fall C_Seg. �ven h�r anges PUBLIC vid angivandet av
segmentdefinitionen. Det nya �r att vi m�ste tala om att rutinen
skall anv�ndas av annat program genom raden:
PUBLIC Proc_Namn
* Man talar om att C_Seg slutar samt att rutinen slutar, dock
inte p� det vanliga s�ttet med END START utan endast END. Det
beror ju p� att det inte �r ett programslut utan endast ett
rutinslut.
* Till skillnad fr�n situationen vid anv�ndande av MACRO:n, som
inneb�r att vi inte kan separatassemblera, *skall* vi skapa
Objektfiler av b�da dessa .ASM-filer. En f�r vardera .ASM-filen.
* Sedan vi skapat dessa .OBJ-filer �r det dags att l�nka samman
de tv� best�ndsdelarna till ett sammanfogat fungerande program.
* Vi skriver d�rf�r:
LINK Bas + Extl + ... (H�r kan flera filer l�nkas samman)
Programmet LINK skapar d� en fil Bas.EXE som sedan p� sedvanligt
s�tt konverteras till Bas.COM via EXE2BIN.
(Vi kan naturligtvis v�lja annat namn �n det som basprogrammet
har, vidare kan som antytts flera externa procedurer l�nkas in).
Nedan �r de tv� filerna 'Ex1_X.ASM' (Basprogrammet) och filen
CR_LF.ASM (den Externa Proceduren) listade. L�gg m�rke till
syntaxen f�r att l�nkningen skall vara m�jlig. Dessa tv� filer
skall nu f�rst separatassembleras via MASM, varvid filerna
Ex1_X.OBJ och CR_LF.OBJ skapas. Sammanl�nkningen sker via
programmet LINK som anropas med:
LINK Ex1_X + CR_LF
varvid filen Ex1_X.EXE skapas. Den k�rbara filen skapas sedan p�
vanligt s�tt via EXE2BIN.
F�rst tittar vi p� "Basprogrammet":
TITLE Ex1_X.ASM
;-------------------------------------------------------------------
INCLUDE CLS.MAC
;-------------------------------------------------------------------
EXTRN CR_LF:NEAR ;Detta m�ste anges
;-------------------------------------------------------------------
CSEG SEGMENT PUBLIC
ASSUME CS:CSEG,DS:CSEG
ORG 100h
Start: jmp Begin
;-------------------------------------------------------------------
TITLE CR_LF.ASM
;--------------------------------------------------------------------
CSEG SEGMENT PUBLIC
ASSUME CS:CSEG
PUBLIC CR_LF ;M�ste anges f�r att kunna
;l�nka samman filerna
CR_LF PROC NEAR
push ax
push dx
mov dl,0dh
mov ah,02h
int 21h
mov dl,0ah
mov ah,02h
int 21h
pop dx
pop ax
ret
CR_LF ENDP
;------------------------------------------------------------------------
CSEG ENDS
END ;Inget END Start
;-------------------------------------------------------------------------