Segmentarea structurii programelor
Exemplul 1-1. Un program simplu cu trei segmente
Indicăm corespondența dintre registrele segmentate și segmente
; Vom descrie segmentul de comandă
cod segment; Deschideți segmentul de comandă
începe: mov AX, date; Configurați DS
mov DS, AX; pe segmentul de date;
Să afișăm o linie de text
mov AN, 09h; funcția de afișare DOS pe ecran
int 21h; sunați la DOS
mov AX, 4C00h; funcția DOS de terminare a programului
int 21h; sunați la DOS
codul se termină; închideți segmentul de comandă
; Vom descrie segmentul de date
segment de date; Deschideți segmentul de date
msg db "Programul funcționează!"; Șirul de ieșire
datele se termină, închideți segmentul de date
Să descriem segmentul de stivă
stk seg segment; Deschideți segmentul de stivă
db 256 dup (?); alocăm 256 octeți pentru stiva
stk termină, închideți segmentul de stivă
sfârșitul începe; sfârșitul textului cu punctul de intrare
mov AX, date; Configurați DS
mov DS, AX; pe segmentul de date
Cheie / Z permite ieșirea la o sursă de program de linii de afișare de text în care asamblorul găsit de eroare (fără această căutare cheie ar trebui să efectueze eroare pentru o listare de difuzare).
Comutatorul / zi controlează includerea informațiilor în fișierul obiect care nu este necesar atunci când se execută programul, ci este folosit de depanator.
Comutatorul / n suprimă listarea simbolurilor simbolice în program, ceea ce reduce într-o oarecare măsură conținutul informațiilor
dar dimensiunea sa este redusă.
Parametrii care urmează stabilesc numele fișierelor: sursă (P.ASM), obiect (P.OBJ) și listă (P.LST). Este posibil să doriți să apelați în compilatorul linie pentru a specifica numele complete de fișiere cu extensiile lor, dar acest lucru nu este necesar, deoarece compilatorul implicit utilizează un extensiile de nume enumerate mai sus.
Linia de apel a linkerului este după cum urmează:
Comutatorul / x suprimă formarea unei liste de layout-uri, care de obicei nu este necesară.
Comutatorul / v trimite informații la fișierul de boot utilizat de depanator. Parametrii de mai jos indică numele modulelor: obiect (R.Ob) și boot (R.EXE).
Ca și în studiul acestei cărți, va trebui să scrie și depana un număr mare de programe, este recomandabil să se creeze un fișier batch (numit, de exemplu, A.VAT) care automatizează executarea de același tip de operațiuni de difuzare și de aspect. Textul de fișier batch în forma sa cea mai simplă poate fi atât (presupunând că calea către directorul cu pachetul TASM a fost listat în parametrul de comandă PATH):
Executarea unui program pregătit de R.EXE este efectuat de comanda .p.exe sau pur și simplu
Când programul este încărcat, segmentele sunt plasate în memorie, așa cum se arată în Fig. 1.9.
Fig. 1.9. Imaginea programului în memorie.