Cuprins
- Introducere.3
- Lucrarea de laborator nr.1. Utilizarea macroasamblorului TASM şi a depanatorului TD .7
- 1.1 Utilizarea TASM şi TD în forma clasică (linie de comandă, DOS) .7
- 1.2 Utilizarea TASM şi TD în forma integrata (fereastra Windows) .12
- Lucrarea de laborator nr. 2. Instrucţiuni de transfer între registre .15
- 2.1 Elemente ale limbajului de asamblare .15
- 2.2 Notaţia hexazecimală.16
- 2.3 Registrele procesoarelor Intel x86 .18
- 2.4. Instrucţiuni de transfer între registre .19
- 2.5. Instrucţiuni de interschimbare între registre .20
- 2.6. Instrucţiuni de adunare şi scădere .21
- Lucrarea de laborator nr. 3. Transferuri de date şi operaţii aritmetice cu memoria .23
- 3.1 Componentele unei adrese logice .23
- 3.2 Componentele unei adrese efective .25
- 3.3 Transferuri pe 1 octet şi pe 2 octeţi .27
- 3.4 Moduri de adresare .28
- Lucrarea de laborator nr. 4. Procedee de transfer cu memoria .35
- 4.1 Transferuri prin adresare la memorie .35
- 4.2 Transferuri prin stivă .35
- 4.3 Transferul prin iniţializarea/rezervarea de locaţii de catre asamblor.37
- 4.4 Instrucţiunea de translatare a unei adrese, XLAT .39
- 4.5 Instrucţiuni de transfer pentru registrul de flaguri .40
- 4.6 Încărcarea unei adrese logice din memorie .40
- 4.7 Încărcarea unei adrese efective.41
- Lucrarea de laborator nr. 5. Operaţii aritmetice .43
- 5.1 Reprezentarea în complement faţă de 2 .43
- 5.2 Prezentarea instrucţiunilor aritmetice .45
- Lucrarea de laborator nr. 6. Operaţii logice, deplasări şi rotaţii .52
- 6.1. Operaţii logice .52
- 6.2. Deplasări şi rotaţii .53
- 6.3. Operaţii aritmetice BCD (opţional, vezi Anexa 1) .56
- Lucrarea de laborator nr. 7. Instrucţiuni de salt .58
- 7.1 Instrucţiuni de salt necondiţionat .58
- 7.2 Instrucţiuni de salt condiţionat .58
- 7.3 Instrucţiuni de ciclare LOOP, LOOPcc .60
- Lucrarea de laborator nr. 8. Instrucţiuni de lucru cu şiruri .62
- 8.1. Instrucţiunile LODSB, LODSW, STOSB, STOSW .62
- 8.2 Instrucţiunile MOVSB şi MOVSW .64
- 8.3 Instrucţiunile pentru analiza conţinutului şirurilor, SCASB şi SCASW .66
- 8.4. Instrucţiunile de comparare şiruri CMPSB şi CMPSW .68
- 8.5 Prefixele REPE, REPZ, REPNE şi REPNZ .70
- Lucrarea de laborator nr. 9. Funcţii sistem (INT 21h) .71
- 9.1 Utilizarea întreruperilor software .71
- 9.2 Funcţii sistem de intrare şi ieşire .72
- Lucrarea de laborator nr. 10. Afişarea în mod grafic .77
- 10.1 Utilizarea întreruperii 10h .77
- 10.2 Scrierea directă în memoria de ecran .79
- Lucrarea de laborator nr. 11. Utilizarea de subrutine (proceduri) .84
- 11.1 Chemarea şi revenirea din subrutină .84
- 11.2 Salvarea şi refacerea registrelor afectate de subrutină .86
- Lucrarea de laborator nr. 12. Utilizarea macroinstrucţiunilor .90
- 12.1 Generalitati .90
- 12.2 Declararea şi utilizarea macroinstrucţiunilor .90
- 12.3 Utilizarea etichetelor locale cu directiva LOCAL .94
- 12.4 Alte facilităţi de macroasamblare .96
- ANEXA 1. SETUL DE INSTRUCŢIUNI ALE MICROPROCESOA¬RELOR INTEL 80x86 ÎN MODUL REAL SAU VIRTUAL 8086.97
- A 1.1 Notaţii, convenţii .97
- A1.2. Instrucţiuni de transfer .98
- A1.3. Instrucţiuni de calcul.108
- A1.4 Instrucţiuni de lucru pe bit .124
- A1.5. Instrucţiuni de ramificare în program .127
- A1.6. Instrucţiuni speciale .133
- ANEXA 2. Lista serviciilor de ecran INT 10h .135
- ANEXA 3. Lista funcţiilor sistemului de operare INT 21h .161
- ANEXA 4. Rezolvările programelor.181
- Bibliografie .253
Extras din laborator
Lucrarea de laborator nr.1
Utilizarea macroasamblorului TASM şi a depanatorului TD
Etapele dezvoltării unui program în limbajul de asamblare sunt următoarele:
1. Editarea
2. Asamblarea
3. Linkeditarea
4. Rularea şi eventuala depanare
Programul în limbaj de asamblare este scris mai întâi cu un editor de text oarecare, constituind aşa-numitul program sursă. El trebuie să respecte două categorii de reguli:
• Reguli specifice setului de instrucţiuni ale procesorului pentru care este scris. Aceste reguli cuprind scrierea corectă a mnemonicelor instrucţiunilor, a operanzilor, diverse prefixe şi notaţii suplimentare, toate fiind precizate în documentaţia referitoare la procesorul respectiv.
• Reguli specifice programului asamblor cu care se lucrează. Aceste reguli se referă la declaraţii, etichete, directive de asamblare, pseudoinstrucţiuni, eventual macroinstrucţiuni, etc. Ele sunt precizate în documentaţia aferentă mediului de asamblare.
După scrierea programului sursă, el este incărcat în asamblor care îl transforma în final în program obiect. În plus, din procesul de asamblare se pot obţine şi alte fişiere, care permit vizualizarea programului, a simbolurilor folosite, etc.
Programul obiect este la rândul său preluat de linkeditor, fiind transformat într-un fişier executabil - programul final.
Programul executabil obţinut este testat în diverse moduri, iar în caz de funcţionare necorespunzătoare din cauze care nu sunt evidente, se încarcă într-un program depanator (debugger). Acesta permite rularea pas cu pas a zonelor neclare din funcţionarea programului, cu afişarea continuă a conţinutului registrelor şi memoriei, permiţând astfel localizarea problemelor. După clarificarea lor, este modificat corespunzător programul sursă, şi procesul se reia.
1.1 Utilizarea TASM şi TD în forma clasică (linie de comandă, DOS)
Implementarea firmei Borland pentru limbajul de asamblare cuprinde în principal trei aplicaţii, care vor fi utilizate în ordinea menţionării lor:
• TASM.EXE- asamblorul (Turbo Assembler)
• TLINK.EXE - linkeditorul (Turbo Linker)
• TD - depanatorul de program (Turbo Debugger)
Evident, în prealabil trebuie scris (editat) programul sursă, cu ajutorul unui editor (acesta nefiind inclus în pachetul de la Borland).
Într-o fereastra DOS din sistemul de operare Windows (obţinută în Windows XP din meniul Start-> Programs->Accessories->Command Prompt), comanda de scriere a programului sursă poate fi de exemplu cea de apelare a aplicaţiei Wordpad a sistemului:
write
În cazul în care se începe un program nou, ce urmează apoi să fie salvat sub un nume propriu (obligatoriu cu extensia .asm), sau
write caleNume_Sursă
în cazul în care fişierul sursă există deja şi urmează a fi editat.
Se poate folosi de asemenea aplicaţia NOTEPAD.EXE, având avantajul că poate să afişeze în bara de stare (jos) numărul liniei pe care se află cursorul, lucru util pentru identificarea liniei la care asamblorul găseşte o eroare. Pentru aceasta va trebui bifată în meniul View opţiunea Status Bar.
După salvarea fişierului sursă el va fi chemat de asamblor cu comanda:
Tasm Nume_sursă, Nume_obiect, Nume_listing
unde:
• Nume_sursă este numele ales pentru fişierul sursă editat anterior;
• Nume_obiect este numele sub care va apare fişierul obiect ce va fi transformat în fişier executabil;
• Nume_listing este numele unui fişier opţional care conţine o varianta cu informaţii rezultate din asamblare a fişierului sursă (listing), util pentru o analiza vizuală.
Această linie de comandă admite şi anumite opţiuni, vizibile dacă se dă comanda Tasm fără parametri într-o fereastră DOS. De exemplu, comanda:
Tasm.exe/zi Nume_sursă, Nume_obiect, Nume_listing/l
va genera informaţie completă pentru depanare (/zi) şi fişier listing normal (/l).
În cazul în care nu există erori de sintaxa (sunt respectate cele două categorii de reguli menţionate) se obţine un mesaj favorabil (ca în figura 1), iar fişierul obiect poate fi prelucrat mai departe.
Figura 1.1 - Exemplu de asamblare fără erori
În cazul în care apar erori, se reia editarea fişierului sursă, corectându-se erorile şi se face din nou asamblarea.
Dacă în caseta de asamblare există linia Error messages: None, se poate trece la linkeditare, folosindu-se comanda:
Tlink Nume_obiect, Nume_exefile
unde Nume_obiect este numele folosit în comanda precedenta (de asamblarere) pentru fişierul obiect, iar Nume_exefile este numele ce se alege pentru fişierul executabil. Se pot folosi şi aici opţiuni de linkeditare, care pot fi văzute rulând comanda Tlink fără parametri într-o fereastra DOS. De exemplu, comanda
Tlink /v Nume_obiect, Nume_exefile
va genera informaţii simbolice complete pentru depanare.
În continuare, se poate rula programul executabil obţinut pentru a fi testat (într-o fereastra DOS) sau se poate încarca în depanator (de exemplu Turbo Debugger) pentru a fi rulat pas cu pas. În acest caz, comanda va fi:
Preview document
Conținut arhivă zip
- Programarea in Limbaj de Asamblare a Microprocesoarelor.doc