Dr. Baruch Zoltan Francisc
Professor



PUSZTAI, K., CEBUC, E., BARUCH, Z.


PROGRAMARE ÎN LIMBAJ DE
ASAMBLARE INTEL 80X86


Universitatea Tehnică din Cluj Napoca, 1999 (166 pagini)









CUPRINS


1. STRUCTURA ȘI EXECUȚIA INSTRUCȚIUNILOR LA MICROPROCESORUL I8086

1.1. CONSIDERAȚII TEORETICE

1.1.1. Registrele și modurile de adresare pentru operanzi: Structura registrului bistabilelor de stare. 1.1.2. Metode de adresare

2. LIMBAJUL DE ASAMBLARE ȘI MACROASAMBLORUL MASM

2.1. FUNCȚIONAREA ASAMBLORULUI

2.1.1. Elementele limbajului de asamblare MASM. 2.1.2. Formatul instrucțiunilor în limbajul de asamblare. 2.1.3. Specificarea constantelor. 2.1.4. Simboluri: Etichete; Variabile; Expresii; Pseudoinstrucțiuni

2.2. UTILIZAREA PROGRAMELOR MASM, CREF, LINK ȘI EXE2BIN

2.2.1. MASM. 2.2.2. Directive suplimentare în MASM

2.3. CREF
2.4. EDITORUL DE LEGĂTURI LINK
2.5. LEGĂTURA PROGRAM - SISTEM DE OPERARE

2.5.1. Formatul .COM al programelor executabile. 2.5.2. Formatul .EXE al programelor executabile

3. INSTRUCȚIUNILE ARITMETICE, LOGICE, DE DEPLASARE ȘI DE ROTIRE ALE MICROPROCESORULUI I8086

3.1. CONSIDERAȚII TEORETICE
3.2. INSTRUCȚIUNI ARITMETICE
3.3. OPERAȚII ARITMETICE ÎN REPREZENTAREA FĂRĂ SEMN ȘI ÎN C2
3.4. OPERAȚII ÎN BCD DESPACHETAT
3.5. OPERAȚII ÎN BCD ÎMPACHETAT
3.6. INSTRUCȚIUNI LOGICE
3.7. INSTRUCȚIUNI DE DEPLASARE ȘI ROTIRE

4. INSTRUCȚIUNI PENTRU TRANSFERUL DATELOR

4.1. INSTRUCȚIUNI DE TRANSFER DE TIP "CLASIC"
4.2. INSTRUCȚIUNI DE TRANSFER PENTRU ADRESE
4.3. INSTRUCȚIUNI DE TRANSFER PENTRU INDICATORII DE CONDIȚIE
4.4. INSTRUCȚIUNI DE INTRARE/IEȘIRE

5. CONTROLUL FLUXULUI DE INSTRUCȚIUNI

5.1. INSTRUCȚIUNI DE SALT

5.1.1. Saltul necondiționat. 5.1.2. Salturi condiționate

5.2. COMPARARE ȘI SALT
5.3. SALTURI BAZATE PE STAREA INDICATORILOR DE CONDIȚIE
5.4. INSTRUCȚIUNI DE CICLARE
5.5. UTILIZAREA PROCEDURILOR

6. LUCRUL CU MACROURI ȘI BIBLIOTECARUL LIB

6.1. LUCRUL CU MACROURI
6.2. BIBLIOTECARUL LIB

6.2.1. Facilități ale programului LIB. 6.2.2. Rezumatul operațiilor programului LIB. 6.2.3. Utilizarea programului LIB

7. PROGRAME CU MAI MULTE SEGMENTE
 
8. UTILIZAREA RUTINELOR SCRISE ÎN LIMBAJ DE ASAMBLARE DIN LIMBAJE DE NIVEL ÎNALT

8.1. DEFINIREA APLICAȚIEI
8.2. DOMENIUL DE REPREZENTARE A NUMERELOR
8.3. APELAREA DIN PASCAL
8.4. CONCLUZII

9. UTILIZAREA FUNCȚIILOR SISTEM ÎN LIMBAJ DE ASAMBLARE
 
10. UTILIZAREA MICROPROCESOARELOR I80X86 ÎN MODUL PROTEJAT

10.1. CONSIDERAȚII TEORETICE
10.2. SELECTORI DE SEGMENT
10.3. DESCRIPTORI DE SEGMENT

10.3.1. Descriptori de cod și de date. 10.3.2. Descriptori de sistem. 10.3.3. Descriptori de porți

10.4. REGISTRELE INTERNE
10.5. TRECEREA DIN MODUL REAL ÎN MODUL PROTEJAT
10.6. REVENIREA ÎN MODUL REAL

10.6.1. Secvența de inițializare. 10.6.2. Circuitul 8042. 10.6.3. Operațiile necesare revenirii în modul real

10.7. EXEMPLU DE PROGRAM ÎN MOD PROTEJAT

11. PROGRAME REZIDENTE

11.1. ACTIVAREA PROGRAMELOR TSR
11.2. INTERACȚIUNEA CU SISTEMUL DE OPERARE DOS
11.3. OPERAȚII CRITICE ÎN RAPORT CU TIMPUL
11.4. RECURSIVITATEA
11.5. COMUTAREA CONTEXTULUI
11.6. UN EXEMPLU DE PROGRAM REZIDENT

12. UTILIZAREA COPROCESORULUI MATEMATIC

12.1. PRINCIPIUL DE FUNCȚIONARE
12.2. TIPURILE DE DATE CUNOSCUTE DE INTEL 8087

12.2.1. Tipuri întregi: Întreg pe cuvânt; Întreg scurt; Întreg lung; Întreg BCD, zecimal împachetat. 12.2.2. Tipuri de date în virgulă flotantă: Real scurt; Real lung; Real cu precizie ridicată

12.3. ERORI DE OPERAȚIE (EXCEPȚII)

12.3.1. Operație invalidă. 12.3.2. Depășire superioară. 12.3.3. Împărțire la zero. 12.3.4. Depășire inferioară. 12.3.5. Operand denormalizat. 12.3.6. Rezultat inexact

12.4. ARHITECTURA INTERNĂ A COPROCESORULUI

12.4.1. Unitatea de execuție numerică: Registrele interne ale coprocesorului. 12.4.2. Unitatea de control: Registrul de control (Control Word); Registrul de stare (Status Word); Registrul indicator de descriere a stivei (Tag Word); Registrul de instrucțiuni (Instruction Pointer); Registrul de date (Data Pointer). 12.4.3. Mediul coprocesorului

12.5. SETUL DE INSTRUCȚIUNI AL COPROCESORULUI

12.5.1. Instrucțiuni de transfer de date: Instrucțiuni de încărcare (LOAD); Instrucțiuni de memorate (STORE); Instrucțiuni de transfer de date intern; Instrucțiuni de încărcare a constantelor. 12.5.2. Instrucțiuni aritmetice și de comparare: Instrucțiuni aritmetice; Instrucțiuni pentru compararea valorilor numerice. 12.5.3. Funcții în virgulă mobilă. 12.5.4. Instrucțiuni de comandă

12.6. EXEMPLU DE PROGRAM SIMPLU CU UTILIZAREA COPROCESORULUI MATEMATIC

ANEXE