Universitatea Babeş-Bolyai Cluj-Napoca
Facultatea de Matematică şi Informatică
Ciclul de studii: Licenţă
Domeniul: Matematică
Programul de studii: Matematică informatică - linia de studiu română
Limba de predare: Română

SYLLABUS

I. Date generale
Codul	Disciplina	
MIC0010	Arhitectura sistemelor de calcul	

Semestrul	Ore: C+S+L+P	Categoria	Statutul	
3	2+1+1+0	specialitate	obligatorie	

II. Cadre didactice cu norma de bază în Universitate
Numele şi	Titlul	Gradul	Catedra	Tipul activităţii	
prenumele	ştiinţific	didactic		C	S	L	
GOG Anca-Mirela	Dr. 	Lect.	Informatică	*			

Cadre didactice asociate
Numele şi	Titlul	Instituţia	Tipul	Tipul activităţii	
prenumele	ştiinţific		postului	C	S	L	

III. Obiectivele disciplinei
- Insusirea de catre studenti a modelelor arhitecturale ale calculatoarelor, functionarea procesorului, a utilizarii sistemelor de reprezentare a informatiei in calculator.
- Initiere in programarea in limbaj de asamblare, ceea ce asigura intelegerea arhitecturii si functionarii unui microprocesor.
- Initiere in arhitecturile sistemelor de intreruperi, cu particularizarea la masinile 80x86.
- Constientizarea influentei pe care principiile functionale de baza ale arhitecturii von Neumann le au asupra modului de implementare a limbajelor de programare de nivel înalt; Constientizarea impactului arhitectural asupra tehnicilor de proiectare si implementare a limbajelor de programare de nivel înalt.	

IV. Conţinutul disciplinei
Reprezentarea informatiei în calculator. Arhitectura sistemelor de calcul: unitate centrala, memorie, dispozitive periferice, structura microprocesorului 80x86 si calculul de adresa. Reprezentarea interna a unei instructiuni masina. Instructiuni ale limbajului de asamblare: de transfer, aritmetice, de conversie, asupra bitilor, de salt conditionat si neconditionat, de comparare, de lucru cu siruri de octeti si cuvinte. Utilizarea si redirectarea întreruperilor 80x86. Structura sistemului de întreruperi. Etape si cerinte ale programarii multimodul cu legarea de module scrise în limbaj de asamblare interfatate cu limbaje de nivel de înalt. Prezentarea si analiza facilitatilor de programare de nivel scazut în cadrul implementarilor unor limbaje de nivel înalt. Extensii si evolutia familiei de procesoare x86. Elemente de programare în limbaj de asamblare sub Windows.	

V. Bibliografie
1. Al.Vancea, Fl.Boian, D.Bufnea, A.Gog, A.Darabant, A.Sabau – Arhitectura calculatoarelor. Limbajul de asamblare 80x86., Editura Risoprint, Cluj-Napoca, 2005.
2. A.Gog, A.Sabau, D.Bufnea, A.Sterca, A.Darabant, Al.Vancea – Programarea în limbaj de asamblare 80x86. Exemple si aplicatii., Editura Risoprint, Cluj-Napoca, 2005. 
3. Randal Hyde – The Art of Assembly Programming, No Starch Press, 2003.
    (http://homepage.mac.com/randyhyde/webster.cs.ucr.edu/www.artofasm.com/DOS/index.html)
4. BOIAN F. M. Sisteme de operare interactive. Ed. Libris, Cluj, 1994
5. BOIAN F. M. De la aritmetica la calculatoare. Ed. Presa Universitara Clujeana, Cluj, 1996
6. BOIAN F. M., VANCEA A., IURIAN S., IURIAN M. Programare avansata de sistem si aplicatii IBM-PC, lito. Universitatea "Babes-Bolyai", 1996
7. BOIAN F.M. VANCEA A. Arhitectura calculatoarelor, suport de curs. Facultatea de Matematica si Informatica, Centrul de Formare Continua si Invatamânt la Distanta,. Ed. Centrului de Formare Continua si Invatamânt la Distanta, Cluj, 2002,
8. KNUTH D.E. Tratat de programarea calculatoarelor; vol 3: Algoritmi seminumerici. Ed. Tehnica, Bucuresti, 1985	

VI. Tematica activităţilor didactice pe săptămâni
Planificarea dată în continuare este exprimată relativ la cele 14 săptămâni (S1-S14) componente ale semestrului. 

1.	Reprezentarea datelor: date elementare, reprezentari binare si ordini de plasare, organizarea şi memorarea datelor (S1), codificarea caracterelor, reprezentarea cu semn şi fără semn, cod complementar, conversii, conceptul de depăşire (S2); (seminar şi laborator S1/S2);

2.	Arhitectura sistemelor de calcul: organizarea unui SC, unitatea centrală, ceasul sistem, calculator pe n biţi, memoria, dispozitivele periferice (S3), performanţele unui SC, arhitectura microprocesorului 80x86 – structură, regiştri, calculul de adresă, moduri de adresare, adrese far şi near (S4); (seminar şi laborator S3/S4);

3.	Elementele limbajului de asamblare: formatul unei linii sursă, expresii, tipuri de accesare a operanzilor, operatori (S5), directive pentru definirea segmentelor, pt.definirea datelor, LABEL, EQU, PROC, INCLUDE, blocuri repetitive şi macrouri (S6);  (seminar şi laborator S5/S6);

4.	Instrucţiuni ale limbajului de asamblare: instrucţiuni de transfer, conversii, operaţii aritmetice cu semn şi fără semn, operaţii de deplasare şi rotire de biţi, operaţii logice pe biţi (S7), instrucţiuni de salt condiţionat şi necondiţionat, instrucţiuni de ciclare, instrucţiuni pe şiruri (S8); (seminar şi laborator S7/S8);

5.	Întreruperi: clasificare, instrucţiuni specifice lucrului cu întreruperi, formatele COM şi EXE (S9) ; Redirectarea întreruperilor: programe TSR, instalarea şi dezinstalarea programelor TSR, depanarea programelor TSR, redirectarea întreruperilor în cadrul SO Windows (S10); (seminar şi laborator S9/S10);

6.	Implementarea apelului de subprograme şi programare multimodul: cod de apel, cod de intrare, cod de ieşire, directivele PUBLIC, EXTRN, GLOBAL, legarea de module TASM cu module scrise în limbaje de nivel înalt (S11);

7.	Programare low-level în limbaje de nivel înalt: inserare de cod maşină, asambloare inline, proceduri şi funcţii assembler, accesarea regiştrilor şi apelarea de întreruperi, proceduri şi funcţii interrupt (S12); Tematicile 6 şi 7 vor fi abordate în (seminar şi laborator S11/S12);

8.	Extensii x86: modul de lucru protejat, extensii arhitecturale şi noi instrucţiuni introduse la nivelul evoluţiei familiei de procesoare 80x86 (S13);

9.	Programarea în limbaj de asamblare sub Windows: apeluri sistem în modul de lucru protejat, limitări ale sistemului de întreruperi, asambloarele MASM şi NASM, asamblorul inline Visual C++ (S14); Tematicile 8 şi 9 vor fi abordate în (seminar şi laborator S13/S14);

VII. Metode didactice folosite
Expunerea: descrierea, explicaţia, prelegerea magistrală, prelegerea dialog, prelegerea cu demonstraţii, prelegeri introductive, prelegeri curente, prelegeri de sinteză. 
Conversaţia: dezbaterea, dialogul, conversaţii introductive, conversaţii de fixare şi consolidare a cunoştinţelor, conversaţii de sistematizare şi sinteză, conversaţii de aplicare.
Problematizarea: utilizarea întrebărilor-problemă, problemelor şi situaţiilor-problemă. 
Descoperirea: redescoperirea dirijată şi independentă, descoperirea creativă, descoperirea inductivă, descoperirea deductivă, descoprirea analogică, descoperirea prin documentare, descoperirea experimentală.
  Alte metode: studiul de caz; cooperarea, simularea, brainstorming-ul, studiul individual, exerciţiul.	

VIII. Evaluare
Examen scris si practic, combinat cu activitatea de la laborator din timpul semestrului. Nota finala se obtine ca medie dintre:
- nota de la lucrarea scrisă – 70%;
- nota de la subiectul aplicativ de la examenul practic – 15%;
- nota pe activitatea de la laborator (corectitudinea si consistenta programelor, completitudinea documentarilor) – 15%;.
Cerintele pentru promovarea cursului se gasesc la http://www.cs.ubbcluj.ro/~anca/asc/cerinte.htm	

IX. Bibliografie suplimentară
1.	Randall Hyde – The Art of Assembly Programming, No Starch Press Inc., 2003.
2.	Kip Irvine – Assembly Language for Intel-Based Computers, Prentice-Hall Inc., 2003.
3.	http://www.doorknobsoft.com/asm_tutorial.html
4.	http://www.deinmeister.de/wasmtute.htm
5.	http://www.drpaulcarter.com/pcasm/
      6.   http://www.xs4all.nl/~smit/asm01001.htm	

	Decan,							Sef de catedra,

	Data,							Titular curs,
								Lect. Dr.  GOG Anca-Mirela