Folosind compilatorul tasm

De obicei, această opțiune este utilizată atunci când un anumit program este mare și este recomandabil să scrieți și să compilați separat folosind compilatorul TASM. În acest caz, puteți utiliza toate capabilitățile limbii și compilatorului TASM.







Programul principal folosind o subrutină scrisă într-un limbaj al-semblera conține matrice inițializată, care va fi determinată de numărul maxim, iar programul afișează valoarea zilei maximă a acestei matrice:

Massiv: matrice [1..N] cu număr întreg = (1, 2, 3, 2, 10, 7, 2);

funcția Max (var Mas; N: întreg); întreg; externă;

Wtiteln ('Numărul maxim al matricei este:', Max (Massiv, N));

Utilizând modelul de memorie standard, subrutina care definește numărul maxim din matrice poate fi scrisă după cum urmează:

Modelul mic, PASCAL

În acest exemplu, parametrul de returnare este de tip integer și se întoarce la registrul AX.

Într-o subrutină scrisă în limba de asamblare, puteți folosi rutinele scrise în Pascal. rutină ușor modificate pentru determinarea elementului maxim al matrice, care, în cazul unui element invalid array (0 sau un număr negativ) solicită o subrutină scrisă în Pascal pentru emiterea de mesaje.

Massiv: matrice [1..N] cu număr întreg = (1, 2, 3, 2, 10, 7, 2);

funcția Max (var Mas; N: întreg); întreg; externă;







ErrorReportul procedurii (N: integer);

Înainte de a accesa o subrutină scrisă în limba Pascal, trebuie să puneți parametrii trecuți în ordinea corespunzătoare. În acest caz, acest parametru este unul - numărul elementelor din matrice.

Din moment ce rutina, scrisă în Pascal, nu garantează păstrarea registrelor AX, BX, CX si DX, în cazul necesității de a păstra valorile lor ar trebui să fie înainte de apelul la subrutina, scrisă în Pascal, salvați valorile stiva registrelor respective, și după întoarcerea din subrutine - pentru a le restabili. În acest exemplu, conținutul registrului BX este stocat, în care este scris numărul minim.

Folosind asamblorul încorporat

Precum și asamblare Turbo, de asamblare în linie este de a utiliza un număr de identificatori standard, predefinite, care au semnificații speciale. În cazul în care programul este introdus ID-ul cu același nume, dar cu un scop diferit, în unele părți ale programului, scris în asamblare built-in, se va acorda prioritate la alocarea standard a identificatorului.

Odată cu posibilitatea de a utiliza identificatori de limbaj Pascal, asamblatorul încorporat utilizează trei identificatori suplimentari:

@Code - segmentul de cod curent (folosit numai cu instrucțiunea SEG);

@Data - segmentul de date curent (utilizat numai cu instrucțiunea SEG);

Rezultatul este rezultatul obținut de funcție (poate fi utilizat numai în interiorul funcției).

Când utilizați asamblatorul încorporat, nu puteți utiliza:

- proceduri și funcții standard;

- matrice speciale Mem, MemW, MemL, Port și PortW;

- constante de tip șir, tipuri reale și seturi de tip;

- procedurile și funcțiile declarate prin intermediul directivei inline;

- etichete declarate nu în acest bloc.

O parte a programului, scrisă în limba de asamblare, este plasată în brațele asm. end.

Massiv: matrice [1..N] cu număr întreg = (1, 2, 3, 2, 10, 7, 2);







Trimiteți-le prietenilor: