E-carti

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

Comutatorul / z permite afișarea liniilor de cod sursă ale programului în care ansamblul a detectat erori (fără această cheie, căutarea de erori ar trebui să fie făcută prin lista de traduceri).
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 se confruntă în continuare defini numele de fișier ale originalului (P.ASM), obiect (P.OBJ) și listarea (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 fișierului batch în cea mai simplă versiune poate fi acesta (presupunând că calea către directorul cu pachetul TASM a fost specificată î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.

E-carti

Fig. 1.9. Imaginea programului în memorie.

Articole similare