Bazele de limbaj de asamblare

1.1. Memorie și procesor

Fig. 1.1. Interacțiunea RAM și CPU.

Bazele de limbaj de asamblare

Fig. 1.2. Byte, cuvânt și dublu cuvânt.

Când se discută despre conținutul multi-octet este necesar să se facă referire la bytes sale constitutive; acești octeți sunt numerotate în mod convențional de la zero și se află (în cazul în care imaginea de pe hârtie), în ordine crescătoare de la dreapta la stânga, astfel încât viraj la stânga bytes cu camere mari, iar dreapta - octeții cu numere mai mici. octet numit bătrânii din stânga și extrema dreaptă - cel mai mic. Acest ordin octeților asociat de obicei pentru noi, pentru a forma numere de înregistrare: în numărul cifre din stânga indică biții semnificativi, precum și dreptul - cea mai tânără. Numărul următor, în cazul în care este de a scrie pentru cel precedent, va începe din nou cu MSB și capătul mai mic. Cu toate acestea, în stocare a datelor informatice sunt situate într-o creștere continuă mod mai natural într-un număr de octeți, și astfel, fiecare cuvânt sau dublu cuvânt în memorie începe cu octet redus și se termină cu cea mai mare (fig. 1.3).

Bazele de limbaj de asamblare

Fig. 1.3. Numerotarea octeților în datele multibyte.

Bazele de limbaj de asamblare

Bazele de limbaj de asamblare

1.3. registrele CPU

Senior forward AX registru octet în octetul scăzut înregistrare BX, fără a afecta al doilea octeți ai acestor registre. Rețineți că primul operand receptor specificat, și după virgulă - .operand sursă, și anume, echipa ca ruleaza de la dreapta la stânga.

Bazele de limbaj de asamblare

Fig. 1.6. Registrele CPU.

Bazele de limbaj de asamblare

Fig. 1.7. steaguri înregistrare

steaguri de stat sunt setate pentru a re-prelucrare după fiecare din următoarea instrucțiune, și este posibil într-o anumită măsură, pentru a judeca rezultatul acestei comenzi (de exemplu, dacă acesta este rezultatul, zero). steaguri de control vă permit să modificați unele dintre condițiile de procesor, de exemplu, pentru a activa sau dezactiva întrerupe hardware. Luați în considerare în primul rând steagurile de stat.
transporta pavilion CF (Carry Flag) indică împrumut sau prin transfer atunci când efectuează operații aritmetice. Transportul se referă la situația, când, în general, este format rezultatul corect numărul de comenzi, care cuprinde mai mult de 16 biți și, prin urmare, nu sunt plasate într-o celulă de registru sau memorie. Să presupunem, de exemplu, în registrul AH conține numărul 60,000, și în BX registru - 40000. Când adăugați instrucțiuni

1.4. Structura de segmente de programe

mov ax, date; Configurare DS
mov DS, AX; 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).
Controale cheie / zi de cotitură în fișierul de informații obiect nu este necesară atunci când executarea programului, dar este utilizat de către debugger.
Cheie / n suprimă listarea lista notație simbolică în programul din care scade oarecum informativ
listare, dar a redus dimensiunea sa.
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 are aspect Apel formularul de mai jos:

/ X aranjament cheie listarea suprima formarea, care în mod normal nu este necesară.
/ Comutator V transmite fișierul cu informații de pornire utilizat de către debugger. Care se confruntă și alți parametri indicați numele modulelor: obiectului (R.OY) și burduful (R.EHE).
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):

tasm / z / zi / n p, p, p
TLINK / x / v p, p

Rularea programului este pregătit .r.ehe R.EHE sau doar echipa
Când descărcarea programului segmentele sunt introduse în memorie așa cum se arată în Fig. 1.9.

Bazele de limbaj de asamblare

Fig. 1.9. Imaginea programului în memorie.

Bazele de limbaj de asamblare

Fig. 1.10. Organizarea stiva:
și - starea inițială, b - după încărcarea elementului (în acest exemplu - registrul AX conținut) în - după încărcarea al doilea element (DS conținutului registrului) g - după descărcarea unui element, d - după descărcarea celor două elemente și resetare de stat.

transferă stiva la starea prezentată în Fig. 1.10. Stiva vor fi stocate acum două elemente, care vor fi disponibile numai la partea de sus, care indică stiva indicatorul SP. Dacă după un timp, avem nevoie pentru a restaura conținutul original al registrelor salvate pe stivă, trebuie să execute comanda de descărcare de pop stivă (împinge):

Stiva după prima comandă prezentată în Fig. 1,10 g, iar după al doilea - în Fig. . 1.10, etc. Pentru restaurarea corectă a conținutului descărcării registru stiva trebuie să fie efectuate într-o ordine opusă sever încărcat - primul element de neîncărcat este încărcat ultimul, apoi elementul anterior, etc.
Nu este necesar atunci când restaurarea datelor pentru a le pune înapoi în cazul în care au fost înainte de a salva. De exemplu, stiva poate fi plasat în DS conținut, și îndepărtați-l de acolo la celălalt registru segment - ES;

împinge DS
pop ES; Acum, ES = DS, iar stiva este goală

1.6. sistem de întrerupere

Sistemul întrerupe orice computer este partea sa cea mai importantă, care permite să răspundă rapid la evenimente, prelucrarea care urmează să fie executat imediat :. Semnalele de la cronometre mașinii, apăsând pe butoanele tastaturii sau a mouse-ului, eșecurile de memorie, etc. Să considerăm, în general, componentele acestui sistem.
Semnalele de întrerupere hardware provenite din dispozitive incluse în computer sau conectat la acesta sunt furnizate procesorului nu direct, ci prin intermediul a două controlere de întreruperi, dintre care unul este numit un avans, iar al doilea - slave (Figura 1.11).

Bazele de limbaj de asamblare

Fig. 1.11. Întrerupere Organizația hardware.

Două controlere sunt utilizate pentru a crește numărul admisibil de dispozitive externe. Faptul că fiecare controler de întrerupere poate deservi doar semnale de 8 dispozitive. Pentru a servi mai multe dispozitive de controler pot fi combinate pentru a forma o structură în formă de evantai. La mașinile moderne, două seturi de controler, sporind astfel numărul de dispozitive de intrare 15 (7 în master și controlorii slave 8).
La IRQ1 terminale de intrare. IRQ7 și IRQ8. IRQ15 (IRQ - o abreviere de cerere de întrerupere, cerere de întrerupere) sunt conectate dispozitiv de ieșire, în care apar semnalele de întrerupere. controler Randament maestru conectat la INT de intrare a microprocesorului, și ieșirea slave - intrare IRQ2 la master. Funcția principală a controlerului - semnalizare cereri de întrerupere de la dispozitive externe la o singură intrare de întrerupere a microprocesorului. Astfel, cu excepția semnalului INT este transmis către controlerul cu microprocesor prin numărul de linii de date vector care este generat în regulator prin adăugarea unui număr de bază stocate într-unul din registrele sale, numărul liniei de intrare, la care cererea de întrerupere a sosit. Camerele sunt vectori de bază sunt introduse în regulatorul automat în timpul timpul inițial de pornire. Pentru maestru vector de bază a controlerului este întotdeauna egală cu 8, pentru sclav - 70h. Astfel, numărul de vectori care sunt atribuite întreruperile hardware, sunt în 8h intervale. Fh și 70h. 77H. Evident, numărul vector de întrerupere hardware este asociat în mod unic cu numere de linie sau nivelurile IRQ, și prin intermediul lor - cu dispozitive informatice specifice. Fig. 1.11 prezintă unele dintre dispozitivele de calculator standard, care funcționează în modul de întrerupere.
Procesorul primește semnalul de întrerupere, efectuează o serie de operații standard, denumită în general o procedură de întrerupere. Subliniem că întrebarea este aici doar despre reacția CPU la semnalul de întrerupere, nu un algoritm de procesare de întrerupere furnizate pentru utilizator să-și întrerupă rutine.
Obiectele de sistem care participă la procedura de întrerupere și interacțiunea lor de calcul sunt prezentate în Fig. 1.12.

Bazele de limbaj de asamblare

Fig. 1.12. rutina de întrerupere de servicii.

1.7. Sistemul de intrare-ieșire

de intrare-ieșire a sistemului, adică. e. fonduri complexe de schimb de informații cu dispozitive externe, este o parte esențială a arhitecturii procesorului și a mașinilor în general. Pentru sistemul de intrare-ieșire, și poate include modalități de a conecta la magistrala de sistem a diferitelor echipamente și procedura de interacțiune procesor cu acest echipament, precum și instrucțiunile de procesor pentru schimbul de date cu dispozitive externe.
Îmbunătățirea continuă a microprocesoarelor și dorința de a maximiza performanța întregului sistem informatic a condus la o complicație semnificativă a organizării interne a calculatoarelor: crește liniile de biți, aspectul autostrăzi interne de comunicații de date de mare viteză, utilizați tampoane cache pentru a accelera schimbul de memorie și discuri, și așa mai departe. În cazul în care, cu toate acestea, distrage atenția de la ceea ce este important din punct de vedere al productivității, dar nu esențial pentru detalii de programare, logica computerului modern poate fi prezentată într-un mod convențional, ca un sistem de autobuz (linia), care conectează microprocesorul în sine și toate dispozitivele de calculator (Fig. 1.13) .

Bazele de limbaj de asamblare

în cazul în care mem - denumirea simbolică a celulelor de memorie care fac parte din segmentul de date al programului.
În cazul în care procesorul efectuează o comandă ca