EN STOMME F�R K�LLKOD TILL EN .COM-FIL
            --------------------------------------


K�llkoden till en blivande .COM-fil kan skrivas p� olika s�tt.
Det g�ller att s� snart som m�jligt finna den form som passar
just Dig. Det betyder att den form som presenteras nedan inte
m�ste f�ljas till punkt och pricka, utan h�r finns utrymme f�r
variationer. Ett program b�r emellertid vara strukturerat i
vilket fall som helst.

1. Man inleder alltid med 'TITLE' f�ljt av programnamn.

2. Som bekant anv�ndes EQUATES dvs symboliska namn f�r att g�ra
  programmet l�ttl�st. Dessa placeras l�mpligen efter 'TITLE'.

3. H�r kommer en sv�r passage, n�mligen att p� ett f�r DOS
  begripligt s�tt tala om hur vi t�nkt oss detta med segmenten.
  Detta f�r att DOS sedan skall placera in v�rt program p� l�mpligt
  st�lle i minnet.

4. Datadeklarationer kan d�refter l�mpligen placeras in. Alternativt
  reserveras h�r plats i minnet genom direktivet:
       Buffer DB/DW/DD X dup (0)/?
  En dataarea om X Bytes/Words eller DoubleWords reserveras och
  fylls med 0:or/godtyckligt inneh�ll.

5. F�rst nu �r vi framme vid sj�lva huvudprogrammet, dvs
  programkoden.

6. P� ett korrekt s�tt skall vi omtala att programmet �r avslutat.


Konkret kan det sagda skrivas enligt nedan.

Syntaxen f�r att beskriva f�r DOS att vi avser att placera s�v�l
programkod som dataarea i segmentet med det fiktiva namnet CSEG
�r f�ljande:

CSEG SEGMENT

vilket betyder att vi ben�mner segmentet som vi avser att anv�nda
f�r v�r kod och v�r data CSEG (beteckningen v�ljes godtyckligt)
Beteckningen SEGMENT �r d�remot ett reserverat, obligatoriskt
ord. Sedan vi nu valt ett namn p� v�rt segment skall vi tala om
f�r DOS att vi avser att arbeta i detta segment. Det g�r vi via
assemblerdirektivet ASSUME varvid syntaxen �r nedan angivna:

ASSUME CS:CSEG,DS:CSEG

N�r det g�ller .COM-filer arbetar vi ju endast i ett segment och
normalt uppst�r inte n�gra komplikationer kring anv�ndandet av
dessa tv� samh�rande direktiv.

Eftersom vi kommer att skapa en .COM-fil s� beh�ver vi inte
definiera Stack-segmentet. Det s�ttes av DOS automatiskt till
SSSS:FFFE, dvs h�gst upp inom 64k-arean.

Eftersom MASM kan skapa underlag f�r mer �n en filtyp, m�ste vi
tala om att vi �syftar att v�rt program skall b�rja i minnescell
100h. Den deklarationen g�rs omedelbart efter
'ASSUME'-direktivet. Direktivet om startadressen sker via det
reserverade ordet 'ORG'. Det betyder att i alla k�llkoder som
efter bearbetning skall bli .COM-filer m�ste vi efter
ASSUME-direktivet ange:

ORG 100h



TITLE Test2.ASM
;---------------------------------------------------------------------------
;===== EQUATES ======
       LF EQU 0Ah
;---------------------------------------------------------------------------
CSEG SEGMENT
       ASSUME CS:CSEG,DS:CSEG
       ORG 100h
Start:  jmp Begin

;---------------------------------------------------------------------------
Buffer dw 1 dup (0)
;===========================================================================
;===== Huvudprogram
Main    PROC NEAR
       mov ax,1234h

       mov buffer,ax
       mov bx,buffer
       ret
Main    ENDP
;============================================================================
Begin:  call Main
       ret                     ; -> DOS
;----------------------------------------------------------------------------
CSEG ENDS
END Start
;----------------------------------------------------------------------------