Sunteți pe pagina 1din 22

Intrebari si teste

Manualul Initiere in limbajul de asamblare x86

Eugen Lupu, Simina Emerich, Anca Apatean, 2012

1.Pentru fiecare numar binar din tabel, dati valoarea echivalenta, presupunand ca este
reprezentat in codul indicat in capul de tabel. Daca nu se poate reprezenta, treceti EROARE.

Cod
Numar Numar binar 8-biti 8-biti ASCII paritate
hexazecimal fara semn cu semn impara
0B5h 1011 0101b 181 -75
3Bh 0011 1011b 59 +59 ;

2.Care sunt elementele calculatorului cu program memorat, von Neumann ?


-intrare pt un numar nelimitat de date si instructiuni
-memorie din care se pot citi instructiuni si operanzi si in care se
depun rezultate
-iesire care sa puna rezultatele la dispozitia utilizatorului
-unitate de calcul(UAL- unitate aritmetica si logica sau unitate de
executie) care sa execute operatii aritmetice si logice asupra
datelor din memorie
-uniate de comanda ( control) care sa interpreteze instructiunile
extrase din memorie si sa aleaga diferite actiuni pe baza rezultatelor
calculelor.

3. Care sunt cele 3 magistrale ale unui calculator cu program memorat?


Magistralele sunt seturi de linii folosite pentru transportul semnalelor. Se mai numesc BUS-uri.
1.BUS-ul de date se foloseste pentru transportul datelor intre CPU, RAM si porturile I/O.
2.BUS-ul de adrese se foloseste pentru a specifica ce adresa RAM sau port I/O va fi folosit.
(genereaza adrese pentru memorie si porturi)
3.BUS-ul de control are o linie pentru a determina daca se acceseaza RAM sau porturi I/O. Are de
asemenea o linie pentru a determina daca datele sunt scrise sau citite. CPU citeste date cand acestea
intra in CPU si scrie cand acestea ies din CPU catre RAM sau porturi.( permite sincronizarea
microprocesorului cu circuitele externe)

4. Un PC are 64 MB de DRAM incepand cu adresa 00000000H. Calculati care este adresa


ultimei locatii de memorie a acestui bloc de 64 MB.
R: 03FFFFFFH

5.Cate locatii poate adresa un bus pe adrese de 32 biti?


Pe un bus de adrese de 32 biti se pot adresa 232 = 4,294,967,296 locatii.

6.Ce arhitecturi de prelucrare cunoasteti?


Dupa modul in care se conecteaza procesorul la memorie, se extrag datele si instructiunile sau se
optimizeaza prelucrarile, in practica se intalnesc mai multe arhitecturi de procesare:
Arhitectura Von Neumann sau SISD ( single instruction single data)
Arhitectura Harvard
Arhitectura SIMD(single instruction multiple data ) numita si arie de procesoare sau tablou sistolic
Arhitectura MIMD ( multiple instruction multiple data) sau Data Flow
7.Ce este un microprocessor si care sunt functiile lui?
Microprocesorul este o componenta electronica ce poate procesa doua tipuri de informatie, date si
comenzi; el primeste si trimite aceste informatii, codate n limbaj binar, prin impulsuri electrice.

Functiile:
- funcia de intrare (INPUT), care permite legtura ntre lumea exterioar i sistem;
- funcia de ieire (OUTPUT), care permite legtura ntre sistem i lumea exterioar;
- funcia de memorare (MEMORY), care permite pstrarea informaiilor (date, rezultate), i (uneori) a
instruciunilor programului;
- funcia aritmetico-logica, (implementata prin ALU) care permite efectuarea operaiilor aritmetice i
logice in sistem;
- funcia de CONTROL, care nglobeaz totalitatea aciunilor de secvenializare i control ale
activitii sistemului.

8. Care este diferenta dintre un microprocesor si un microcontroler?


Elementul de baza al unui calculator este reprezentat de microprocesor (P) , un chip deosebit de
complex plasat de obicei pe placa de baza a sistemului de calcul. Microprocesorul asigura procesarea
datelor, adica interpretarea, prelucarea si controlul acestora, supervizeaza transferurile de informatii si
controleaza activitatea generala a celorlale componente care alcatuiesc sistemul de calcul.

Un microcontroler( C) este o structur electronic destinat controlului unui proces sau, mai
general, unei interaciuni caracteristice cu mediul exterior, fr s fie necesar intervenia operatorului
uman.
Principala diferenta dintre un C si un P o constituie faptul ca un C integreaza memoria de
program, memoria de date si alte interfete de intrare-iesire sau periferice. Din cauza integrarii unui
numar mare de periferice si a costului redus de productie,un C opereaza la viteze reduse, frecventa
sa de ceas fiind de obicei de zeci sau sute de MHz, cu un ordin de marime mai mica decat cea a unui
P actual.

9. Unde este utilizata arhitectura Harvard? Ce avantaje are fata de arhitectura SISD?
Arhitectura Hardvard este utilizata la procesoarele de semnal (DSP) si microcontrolere. Aceasta
arhitectura are memoria partajata in memorie de date si de program, permitand o prelucrare mai
eficienta si executarea paralela a diferitelor faze ale instructiunilor (pipeline), fata de arhitectura SISD,
unde extragerea datelor si instructiunilor se face pe aceeasi magistrala iar instructiunile se extrag si se
executa secvential.
n arhitectura SISD , CPU-ul poate fie citi o instruciune, fie citi/scrie date din/n memorie. Nu pot fi
efectuate ambele operaiuni simultan, deoarece se folosete aceeai magistral. Prin contrast, ntr-un
calculator bazat pe arhitectura Harvard CPU-ul poate citi o instruciune i n acelai timp poate accesa
i date, chiar i fr cache. De aceea o arhitectur Harvard poate fi mai rapid: fetch-urile
instruciunilor i accesul la date nu concureaz pentru aceeai cale de transfer de date.

10.Cum sunt aranjate datele arhitecturii SIMD? La ce processor intel apare aceasta
arhitectura?
Arhitectura SIMD (single instruction
multiple data) numita si arie de procesoare
sau tablou sistolic, permite executia aceleiasi
instructiuni pe mai multe date simultan, ceea
ce implica existent mai multor unitati
aritmetice. Arhitectura este utila si la
prelucrari multimedia, fiind intalnita si la
Pentium MMX.

11.Ce se intelege prin paralelism la nivel de instructiune?


a. Pipeline ( linie de asamblare) : Tehnica prin care executia mai multor instructiuni este suprapusa.
Pipeline de 5 nivele ( exemplu: MIPS)
Fiecare instructiune este sparta in mai multe etape ( faze). Fazele instructiunilor se pot executa
concurent deoarece exista resurse (hard) separate pentru fiecare faza (etapa) => la fiecare pas se
folosesc unitati functionale diferite. Proiectare sincrona => etapa cea mai lenta este dominanta.
Se imbunatateste debitul de executie al instructiunilor ( timpul de executie pentru o singura
instructiune nu este imbunatatit!!! ). Toate masinile moderne folosesc tehnica pipeline, a fost tehnica
cheie a anilor 80 pentru imbunatatirea performantelor iar in anii 90 evolutia a fost spre pipeline-uri
multiple.

b. Arhitecturi superscalare: se folosesc linii de asamblare paralele.


Pipeline-uri duale cu 5 nivele de unitate comuna de FETCH: fiecare pipeline cu hardware propriu
pentru fiecare nivel, furnizand decodare si executie duplicate.

12.Ce se intelege prin paralelism la nivel de procesor?


- se refera la un calculator multiprocessor
Un sistem multiprocessor este un Multiprocesor cu un singur bus: CPU multiple, independente,
partajeaza o memorie comuna si alte resurse.

- Un multicomputer cu memorii locale: incearca sa reduca numarul de confilcte: Procesoarele


comunica prin intermediul schimbului de mesaje.
-arii de calcul

13. Ce beneficii aduce conceptul de Pipeline in arhitecftura de procesare a unui


microprocessor?
Tehnica ``benzii de asamblare'', numit i pipeline e folosita pentru a imbunatatii performantele
microprocesoarelor.
Pipeline= Tehnica prin care executia mai multor instructiuni este suprapusa.
Performante:
- Viteza sau banda ( milioane instructiuni/secunda)
- Latenta / Timp Executie
14. Care sunt avantajele impartirii
interne a arhitecturii P 8086 in BIU
si EU?
Cele 2 unitati sunt legate intre ele cu o conducta (pipeline) prin care sunt transferate instructiunile
extrase din memoria program de catre BIU spre EU; acesta din urma are numai rolul de a executa
instructiunile extrase de BIU si EU, neavand nici o legatura cu magistrala sistemului. In timp ce EU
isi indeplineste sarcina, BIU isi extrage noi instructiuni pe care le organizeaza intr-o coada de
asteptare(queue). La terminarea executiei unei instructiuni,EU are deja la dispozitie o noua
instructiune din coada de asteptate mentinuta de BIU. Cele 2 unitati EU si BIU lucreaza in paralel,
asincron, existand moment de sincronizare intre ele, atunci cand coada de instructiuni este goala ceea
ce se intampla foarte rar => viteza si eficienta.

15. Care sunt avantajele arhitecturii secvential paralele la 8086?


-BUS-ul mai intensiv folosit
-BIU nu trebuie sa opereze la viteze foare mari, deoarece EU asteapta doar rareori extragerea unei
instructiuni.
-se obtin prelucrari performante fara a necesita memorii rapide.
-Functionarea EU si BIU este transparenta pentru utilizator ( exceptie ramificatiile caz in care EU
furnizeaza pentru BIU o noua adresa de la care se face extragerea).

16.Care sunt elementele componente ale unitatii de executie (EU) la 8086?


-Unitatea Aritmetica si Logica ( UAL)
- registrii generali (Ax, Bx)
-registrii de adresare (DI,SI)
-registrii temporari
-unitatea de decodificare si comanda
-registrul de flaguri.

17.Care este rolul unitatii de interfata cu bus-urile (BIU)? Care sunt elementele ei componente?
Unitatea de interfata cu bus-urile (BIU) calculeaza adresele MP si IO, transfera datele intre Unitatea
de executie(UE) si Memoria principala (MP) sau intre UE si porturile de intrare iesire( I/O), si
transfera catre UE codurile numerice ale instructiunilor citite din MP. Pentru a identifica in mod unic
fiecare dintre locatiile MP si IO, este necesara asocierea unor referinte numerice numite adrese. De
aceea BIU este responsabila cu generarea adreselor catre MP.
Elementele componente ale BIU:
- registrii segment IP
- Unitatea de adresare
-Interfata bus-uri
- coada de instructiuni (6/16 biti).

18. Pentru calculatoarele cu program memorat care opereaza in 2 faze, acestea sunt FETCH si
EXECUTE. La 8086 acesti ciclii se pot suprapune sau nu? De ce?

R: Da, aceste faze se pot suprapune. Unitatile BIU si EU sunt separate, iar o coada de instructiuni in
arhitectura procesorului permite extragerea de instructiuni in timp ce o alta se executa.
19.Care ar fi definitia actuala a unei arhitecturi superscalare?
Din curs: Procesor care poate executa mai multe instructiuni pe ciclu de ceas.

Google says: Prezena canalelor multiple definete ceea ce se numete arhitectura superscalar, care
a aprut o dat cu procesorul Pentium.

20. Care sunt elementele principale ale arhitecturii procesorului Pentium?


Unitatea de interfa cu magistrala
Unitatea de ncrcare a instruciunilor
Unitatea de decodificare a instruciunilor
Unitatea de execuie
Unitatea de segmentare a memoriei
Unitatea de paginare a memoriei

21. Care sunt diferentele importante intre arhitecturile RISC si CISC?

Compilatoarele optimizate pentru RISC sunt capabile sa organizeze mai eficient fluxul de
instructiuni de asamblare. Pe de alta parte compilatoarele optimizate pentru RISC necesita mai mult
timp de compilare decat cele pentru CISC. Aceasta pentru ca treuie sa se ocupe de managementul
benzii de asamblare, anticiparea ramificatiilor sau reorganizarea codului. Arhitectura RISC are mai
multi registri generali, iar CISC are mai multi registrii speciali.
22. Ce reprezinta adresarea segmentata? Ce avantaje prezinta?

Adresarea segmentat, n care memoria este divizat logic n poriuni numite segmente, n
interiorul crora adresarea este liniar. Orice localizare n memorie se face relativ la baza segmentului
iar fixarea fizic a bazei unui segment este transparent utilizatorului.

23. Ce reprezinta adresa logica?

Adresa logica este o pereche de numere pe cate 16 biti fiecare, unul reprezentand adresa de
inceput al segmentului si celalalt reprezentand offsetul in cadrul segmentului.

Adr.Logica=RS:offset

24. Ce reprezinta adresa efectiva si unde se calculeaza?

Adresa efectiva reprezinta defapt offsetul unui operand.

25. Care este rolul registrilor segment in modul de calcul al adresei fizice?

Adresa fizica pe 20 de biti se obtine din configuratia de 16 biti care localizeaza inceputul
segmentului inmultita cu 16 la care se aduna valoarea offsetului. Acest calcul este efectuat de unutatea
de adresare in BIU.

AF20=16*RS16+offset16

In fiecare moment al executiei este declarat activ cate un singur segment din fiecare tip.
Registrii CS, DS, SS si ES din BIU retin adresele de inceput ale segmentelor active, corespunzatoare
fiecarui tip de segment.

26. Care este adresa fizica si care este raletia ei cu adresa logica?
Fiecare locatie de memorie are o adresa propriu-zisa, numita adresa fizica, pe care microprocesorul
intel 8086 o calculeaza din cele 2 componente: segment si offset, ale adresei logice. Adresa fizica este
o valoare de 20 biti care identifica unic o locatie din spatiul de adresare.

Adresa fizica poate fi in domeniul 0H.....0FFFFFH.

Calculul adresei fizice se face cu formula: segment * 10H + offset

Unde segment* 10H este adresa de baza a segmentului, offset este adresa relativa la baza
segmentului: stanga, respectiv cu deplasarea cu 4 cifre binare ( biti) la stanga, rezulta ca adresa fizica
se calculeaza prin deplasarea cu 4 biti in stanga a segmentului si adunarea cu offsetul.
27. Care dintre adresele logice este gresita:

CS:IP SS:SI - asta ( SS: SP e corect)-stiva DS:DI ES:SI

28. Dati exemplu de 3 adrese logice care corespund adresei fizice 10000h.

1) AF 10000h

AL D02h:2FE0h

2) AF 10000h

AL E77h:1890h

3) AF 10000h

AL 255h:DAB0h

29. Cate moduri de adresare de baza exista la 8086? Eumerati.

La 8086 exista 3 moduri de adresare:

a) directa: atunci cand apare numai constanta ex: mov ax, 5


b) bazata; atunci cand in calcul apare un registru de baza ex: mov ax, [bx+2]
c) indexata: atunci cand in calcul apare un registru index sau combinatii ale acestora ex: mox
ax, [si]+2

30. Care este forma generala pentru adresarea indirecta a unui operand din memorie? Exemplu.

[BX/BP]+[DI/SI]+[deplasament 8/16 biti]

31. Care este modul de adresare folosit in instructiunea: Mov ax, [5678h]

Modul de adresare folosit in instructiunea de mai sus: adresare imediata.

32. Clasificati instructiunile dupa numarul de operanzi si dupa functia instructiunii.


Dupa numarul de operanzi:
- intructiuni fara operanzi
- instructiuni cu un operand
- instructiuni cu doi operanzi
Dupa cuntia instructiunii:
- instructiuni de transfer: MOV, PUSH, POP, IN, OUT datele sunt copiate intre memorie sau
porturi I/O si registrii procesorului, fara a fi prelucrate.
- instructiuni aritmetice si logice: ADD, INC, AND, CMP datele sunt prelucrate in format
numeric
- instructiuni de manipulare a sirurilor: MOVS, CMPS, REP
- instructiuni specifice intreruperilor: INT
- instructiuni de ramificare: CALL, JMP
- instructiuni de control al microprocesorului: CLC, STC, NOP, HLT

33. Ce tipuri de date se pot intalni in limbajul de asamblare?


- constante
- variabile
- etichete

34. Ce sunt etichetele? Dar constantele ?

Atat etichetele cat si constantele sunt tipuri de date ce se gasesc in programe :

Etichetele marcheaza in program pozitii care vor fi folosite de comenzile de salt. Numele
etichetei trebuie sa inceapa cu o litera sau caracterul _, in nici un caz cu o cifra.

Constantele pot fi absolute (numerice) sau simbolice nume generice asociate unor valori
numerice. Constantele numerice pot fi: binare(B), zecimale(D), Hexazecimale(H), Octale(O), caracter

35. Explicati in ce consta setul de instructiuni MMX si unde sunt utile .

Setul de instructiuni MMX a fost introdus de Intel. MMX are la baza arhitectura SIMD
(single instruction multiple data) numita si arie de procesoare ce permite executia aceleiasi
instructiuni pe mai multe date simultan, ceea ce implica existenta mai multor unitati aritmetice.

36. Ce reprezinta fisierele de tip BAT, COM si EXE ?

Fisierele de tip BAT, COM, EXE sunt tipuri de fisiere care se pot lansa in executie in
sistemul de operare DOS. Fisierele de tip BAT sunt fisiere text care contin comenzi DOS si eventual
directive care controleaza ordinea de executie a comenzilor. La lansarea in executie a unui fisier BAT
comenzile continute in fisier sunt executate una dupa alta, respectandu-se semnificatia directivelor.
Fisierele COM si EXE sunt fisiere binace ce contin instructiuni in limbaj masina.

37. Ce este prefixul unui program executabil ?


PSP-ul contine un pointer catre inceputul un segment numit mediu. Acest segment de
memorie are stocat contextul in care lucreaza programul : informatii referitoare la numele discului,
numele directorului, calea spre interpretorul de comenzi etc.

38. Care sunt flag-urile aritmetice, dar cele de control ? Rolul lor.

Flag-uri de control :

- T (Trap flag) flag pentru depanare ; dca are val 1, atunci procesorul se opreste dupa fiecare
instructiune.

- I (Interrupt) flag de intrerupere ; permite sau invalideaza acceptarea intreruperilor externe


mascabile care apar pe intrarea INT a procesorului ;

- D (Direction) flag folosit la lucru cu siruri pentru a indica directia de parcurgere de-a
lungul sirului, D=0 - adrese crescatoare, D-1 - adrese descrescatoare.

Flag-uri aritmetice sau de stare :

- C Carry indica un transport inafara domeniului de reprezentare a rezultatului

- P Parity - este stabilit astfel incat inpreuna cu numarul de biti de 1 din rezultat sa rezulte
un numar impar de cifre de 1

- A Auxiliary indica valoarea transportului de la bitul 3 la bitul 4 (intre cifrele


hexazecimale)

- Z Zero are valoarea 1 daca rezultatul ultimei instructiuni este 0

- S Sign are val. 1 cand rezultatul ultimei operatii este un numar strict negativ , adica
copiaza bitul MSB al rezultatului

- O Overflow indica depasirea de gama ;

39. Explicati rolul flag-urilor C, Z, O.

Flag-urile C, Z, O sunt indicatori de stare.

C (Carry): indica un transport inafara domeniului de reprezentare al rezultatului.

O (Overflow): indica depasirea de gama; daca rezultatul ultimei instructiuni a depasit spatiul
rezervat rezultatului, in cazul operanzilor considerati numere cu semn.

Z (Zero): are valoare 1 daca rezultatul ultimei instructiuni este egal cu 0.

40. Cum puteti controla bitul T (8 din PSW) ?


Instructiuni de transfer specifice flag-urilor:

LAHF ;(AH)=PSWlow

SAHF ; (PSWlow)=AH, modifica flags

PUSHF ;PSW>>(SS:SP)

POPF ; (SS:SP)>>PSW ,modifica flags

41. C este transportul in afara domeniului de reprezentare a numerelor si O este C+ transportul intre
msb si msb-1, depasirea de gama. Daca rezultatul ultimei instructiuni a deposit spatial rezervat
rezultatului

42. Instr de deplasare nu afecteaza flagul Z

43. SAR- flagul O e resetat pentru ca MSB si MSB-1 se schimba la fiecare operatie.

44. XOR AX,AX;

mov ax,0bbbbh
add ax,04445h

mov al,38h
mov bl,al
sub al,bl

45. Carry

46. Overflow
47. AH=FF; S=1; C=1;
48. nu am gasit raspuns
49. IF,OF,SF,ZF,CF,PF
50. AF,DF- nu sunt sigur

51.
and al,0 Z=P=1
or al,1
or al,80h S=P=1
and al,07fh
stc C=1
clc
mov al, 07fh
inc al S=O=1
or ax,0

52,53,54,55 rezolvat in carte

56,57, am incercat in emu diferite operatii cu ADC si nu e diferit fata de operatia ADD. Daca ati gasit
altceva, fiti bineveniti sa corectati
58.
1.suspendarea programului in curs de desfasurae , salvarea pe stiva a adresei de revenire
2. lansarea in executie a unei rutine specializate numita rutina de tratare a intreruperii care deserveste
intreruperea.
3. reluarea executiei programului suspendat prin refacerea de pe stiva a adresei de revenite
59.
- o cerere pe linia NMI genereaza o intrerupere nemascabila si este predefinita de tipul INT2, adica
procesorul executa accesul la vectorul 2. Exista cateva situatii in care cererea de intrerupere este
servita numai dupa executia instructiunii urmatoare. Instructiunile precedate de prefixe;nu e luata in
considerare cererea de intrerupere intre executia prefixului si a instructiunii. Instr MOV si POP
incarca registrele de segment; nu se recunoaste nici o cerere de intrerupere decat dupa executia
instructiunii urmatoare din moteive de protectie.
- Pt servirea cererilor INTR(mascabile) e necesar ca sistemul de intreruperi sa fie activat prin setarea
indicatorului IF(IF=1); setarea se face cu instruct STI (set interrupt), iar resetarea (IF=0)se face cu
CLI(clear interrupt)
60.
Pull eax;
Movsx;

61. Indicatii instructiunile gresite si motivate

Mov ah,cx; int 183h, al; call phone; pop in;

Mov al, dl; dt

Mov ah,cx- nu au aceeasi dimensiune

Int 183h, al-nu e bine destinata sursa.

62Diferenta dintre dec ax si sub ax,1

La sub se inverseaza rolul lui C, iar la dec nu afecteaza bitul C. Dec face decrementarea direct in
memorie, iar sub extrage din memorie=> sub e mai rapida

63

.3 exemple da a btine bx=0

MOV BX,0

SUB BX,BX

AND BX,0

XOR BX,BX

64

.cu ce instrunctiune este echivalenta secventa.

Add al,1
Add ah, 0 echivalenta cu add ax,1

65.Ce efect are secventa urmatoare ?

Abs: add ax,0 aduna ax cu 0

Jns et1 jns jump if not sign s=0 ultimul rezultat este strict pozitiv

Xor ax,0ffffH xor 0 cu 111111.... care ii FFFF (tabel in carte )

Inc,ax incrementeaza ax care a fost FFFF deci 0

Et1: sare prima data la et 1 cand ii rezultatul 0 deci nu ii strict pozitiv

( nu stiu ce plm vrea sa ii raspund la intrebarea asta , ce efect are ?)

66

.Indicati 3 instructiuni din setul extins x86

1) movsx d,s destinatie <-sign-extend(sursa)

2)XADD (d)destinatie, sursa(s); dest=dest+sursa

3)BT dest, index; CF<- destinatie[index]

67. Ce este un ciclu main?


Ciclul main conine 3-5 stri i corespunde unei etape din executia unei instructiuni
Ex.-citirea unei locatii de memorie
-transferul de date intern un registru intern si o locatie de memorie
O instructiune contine 1-5 cicluri masina, din care primul ciclu masina este de citire memorie.

Definirea unui ciclu masina


Starea: corespunde unei perioade de tact(T) si este durata unei operatii elementare.
Ex: incrementarea unui registru

68. Care sunt diferentele intre un program COM si unul EXE

Un program de tip COM are o structura simpla el contine imaginea binara a continutului ce va fi
incarcat in memorie dupa PSP. Un program de tip EXE poate avea oricate segmente de tip cod, date
sau stiva toate fiind plasate dupa PSP, ordinea lor nu este importanta

69 .Clasificati Intreruperile la 8086

1. Intreruperi opreste temporar executia unui program si transfera controlul unei rutine
specific e de tratare ce corespunde cauzei ce a generat intreruperea. Atunci cand evenimentul
s-a produs, au loc in ordinea, urmatoarele actiuni:
- Suspendarea programului in curs de desfasurare; salvarea pe stiva a adresei de
revenire(IP,CS);
- Lansarea in executie a unei rutine specializate numita rutina de tratare a intreruperi care
deserveste intreruperea;
- Reluarea executiei programului suspendat prin refacerea de pe stiva a adresei de revenire.
Intreruperile se clasifica in intreruperi hard si soft. Microprocesorul 8086 dispunde de 256
de intreruperi numerotate de la 00-FF.
1. Intreruperile hard externe: initializate la intrarile INTR si NMI ale procesorului. O
cerere pe linia NMI genereaza o intrerupere nemascabila si este predefinita de tipul INT2,
adica procesorul executa accesul la vectorul 2. O cerere pe linia INTR este generate de un
circuit extern specializat, care evolueaza prioritatea in cazul aparitiei cererilor simultane din
mai multe surse si permite trecerea cereri cu prioritate maxima la momentul respectiv.
Exista cateva situatii in care cererea de intrerupere este servita numai dupa executia
instructiunii urmatoare.
Este cazul instrutiunilor precedate de prefixe; nu este luata in considerare cererea de
intrerupere intre executia prefixul si a instructiunii. Instructiunile MOV si POP incarca
registrele de segment; nu se recunoaste nici o cerere de intrerupere decat dupa executia
instructiunii urmatoare din motive de protective.
Pentru sevirea cererilor INTR(mascabile) este necesar ca sistemul din intreruperi sa fie
activat prin setarea indicatorului IF(IF=1), setarea se face cu instructiuni STI(set interrupt) iar
resetarea (IF=0) se face cu CLI(clear interrupt).
Daca IF=1, microprocesorul va lua in considerare cererea de intrerupere de pe linia INTR.
Dupa citirea codului intreruperii pe , registrul F este depus in stiva si se anuleaza IF
si TP pt a invalida eventuale cereri INTR.
Subrutina de tratare a intreruperii trebuie sa se incheie cu instructiunea IRET care
determina revenirea in program principal si refacerea din stiva a reg CS, IP si F cu vechile
valori
2. Intreruperile hard interne:
Intreruperea apare ca urmare a executiei unei instructiuni INT sau urmare a unui
eveniment intern (intreruperi predefinite).
Intreruperile predefinite sunt generate automat de processor la detectarea unor evenimente
interne:
- Impartire la 0-INT0;
- Functionare pas cu pas INT1
- Breakpoint-INT-3
- Depasire-INT4
Intreruperea INT0 este generate ca urmare a executiei unei impartiri cu catul
mai mare decat valoarea maxima admisa
Intreruperea INT 1 este luat in considerare daca indicatorul TF=1. Efectul
este modul de lucru pas cu pas, adica dupa fiecare instructiune se poate afisa continutul
registrelor, al locatiilor de memorie, informatii necesare verificarii si depanarii programelor.
Intreruperea INT3, de tip breakpoint-punct de oprire, are codul pe un singur
octet si opreste executia in punct din program in care apare INT3. Serveste testarii si
depanarii programelor prin examinarea starii procesorului in punctual de oprire.
Intreruperile INT4 este generate la aparitia depasiri capacitatii registrelor la
ecuatia unei operatii aritmetice, depasire ce determina starea indicatorului 0F=1; instructiunea
se genereaza cand procesorul executa intructiunea INT0.Subrutina de tratare, contine un
mesaj catre utilizator.
3. intreruperi soft: ofera accesul la servicii BIOS si servicii DOS
sunt foarte mult utilizate datorita facilitatii oferite, o baza de programe care poate fi
folosita ca o librarie de programe(rutine) gata scrise, care usureaza mult munca
programatorului
O intrerupere soft poate fi apelata prin instructiunea INT, cu sintaxa INTn, provocand
activarea handler-ului corepunzator intreruperii cu numarul n .Ea reazlizeaza 4 actiuni
successive.:
- pune in stiva flagurile(PSW)
- pune in stiva adresa FAR de revenire(CS,IP)
- pune 0 in flagurile TF si IF
- apeleaza prin adresare indirecta handlerul asociat intreruperii.

70. Ce este TVI, tabela vectorilor de intreruperi , dimensiunea si localizarea ei


Vector de tratare a intreruperilor si contine adresele rutinelor de tratare a intreruperilor
71. Clasificati instructiunile de salt

72.Care sunt limitarile instructiunilor de salt conditionat ?

-modul de adresare e intootdeauna de tip SHORT

-sunt determinate de starea anumitor flaguri din PSW care sunt afectate de operatiile aritmetice, logice
sau de control

-bistabilii de conditie nu se modifica

73. Care instructiune de salt

nu tine cont de starea flagurilor de conditii?

Instructiuni de salt neconditionat JMP determina intotdeauna un salt in spatial de 1Moctet

CALL si RET; JCXZ;LOOP

74. Subrutina

Secventa de instructiuni scrisa separat, care paote fi apelata din diferite puncte ale unui program.
Mecanismul de implementare a subrutinelor este realizat cu ajutorul instructiunilor CALL si RET.
Subrutinele pot fi NEAR( in acelasi segment cu programul appellant) sau FAR( intr-un segment
diferit). La apelarea unei subrutine(Call), adresa unde urmeaza a se face revenirea este salvata pe
stiva, iar la revenirea din rutina(RET) adresa este refacuta din stiva, iar registrul IP se incarca.

75. CE sunt macroinstructiunile?


Macroinstructiunile reprezinta secvente de program asociate unui nume

Folosirea numelui macroinstructiunii in program are ca efect inlocuirea acestuia cu secventa de


program asociata .Procesul are loc inainte asamblarii propriu zise.
Un asamblor care implementeaza macrouri este macroasamblor. Folosirea acestora nu duce la la
micsorarea programului , ci textul sursa devine mai clar si mai scurt.

2 etape definirea macroinstruct.

-apelul macroinstruct. Acestea pot fi fara parametri , cu parametri,repetitive

76. deosebirea intre subrutina si macroinstructiuni

Subrutinele pot fi NEAR(intrasegment) sau FAR(extrasegment); micsorarea textului

Cu macroinstructiuni: programul e expandat.

77. exemplu de macroinstructiune care initializeaza registri generali(AX=BX=CX=DX=0)

Initializare MACRO

XOR AX, AX ;AX=0

XOR BX,BX ;BX=0

XOR CX,CX ;CX=0

XOR DX,DX ;DX=0

ENDM

Utilizare: se scrie in textul sursa numele instructiuni:


.
.
.
Initializare

78. Care sunt etapele in dezvoltarea unei aplicatii in limbajul de asamblare?


-scriem in editorul de texte
-facem fisierul sursa .ASM
-asamblam (TASM/MASM)
-cream fisierul object.obj
-editam (TLINK/LINK)
-fisier executabil .COM sau .EXE
-depanam
-salvam in memorie

79. Dati un exemplu care indica faptul ca rezultatul sumei a 2 numere binare de n biti necesita
n+1 biti

Ati facut la BSAD

80. CE pune pe stiva in plus de intructiunea INT xx fata de instructiunea Call FAR?

81 Ce instructiuni aveti nevoie pentru a citi portul de 8 biti 378h? dati exemplu.
MOV AL, 378h ; scrie octetul 378h pe portul 110
OUT 110, Al ; portul cu adresa 112
IN AL, 110 ; citeste in AL octetul de la portul 110

82 Scrieti o secventa de program (loop) care apeleaza rutina CALL_ME de 25 de ori.

MOV CX, 25 ; Muta in CX valoarea 25


Et:
CALL CALL_ME ; apeleaza rutina CALL_ME
LOOP Et ; cat timp cx != 0 apeleaza CALL_ME daca nu atunci continua

83 Care este diferenta intre instructiunile IRET si RET(FAR)?


IRET determina revenirea in programul principal si refacerea din stiva a reg CS, IP si F cu vechile
valori pe cand RET(FAR) face revenirea in program fara a reface registrii din stiva.

84 La ce este utilizata instructiunea JCXZ de obicei?


Este instructiunea de salt care se executa doar daca registru CX are valoarea 0.

85 Indicati 4 moduri diferite pentru a aduna 2 la valoarea din BX. Nici unul din moduri nu
trebuie sa aiba mai mult de 2 instructiuni (exista cel putin 6 moduri).
a) b)
MOV AX,2 MOV BX,2
ADD BX,AX ADD BX,2

b) d)
INC BX ADD BX, 3
INC BX DEC BX

e)
sir db 2

MOV SI, offset sir


MOV BX, [SI]

86 Explicati notiunile big endian si little endian de reprezentare a datelor in moemorie.


Conventia Little Endian plaseaza intotdeauna pe prima pozitie, la adresa mai mica, octetul(byte)
cel mai putin semnificativ al unei adrese multi-octet.
Stocarea in memorie se face in ordine, de la octetul cel mai putin semnificativ (adresa mica), catre
octetul cel mai semnificativ stocat la adresa cea mai mare.
Adresarea informatiei multioctet se face prin lansarea adresei celui mai putin semnificativ octet.
Conventia Big Endian" plaseaza intotdeauna pe prima pozitie, la adresa cea mai mica, octetul cel
mai
semnificativ al unei adrese multi octet.
Stocarea in memorie se face in ordine, de la octetul cel mai semnificativ (adresa mica), catre octetul
cel mai putin semnificativ stocat la adresa cea mai mare.
Adresarea informatiei multi-octet se face prin lansarea adresei celui mai semnificativ octet
(MSByte)
87 Daca imediat la intrarea intr-o subrutina se executa pop AX, ce va contine ax?
AX va contine adresa relativa fata de baza a varfului stivei (SP).

88 Consideram programul in LA 8086, care ruleaza sub DOS pe un PC

ORG 100h
mov si, 0
mov dl, 30h
mov ah, 2
Et: int 21h
inc dl
inc si
cmp si,8
jne Et
int 20h
ret
se cere:
a)Care sunt valorile registrelor SI si DL la iesirea din program;
SI = 0008 iar DL = 38
b) ce este afisat pe ecran la terminarea aplicatiei?
0234567

89. Sa prsupunm ca trebui permutate valorile din registrele CX si BX.


Scrieti codul care sa faca aceasta folosind doar instructiuni MOV si registrele AX, BX si CX.

org 100h

mov ax, 0
mov bx, 39h
mov cx, 25h
mov ax, bx
mov bx, cx
mov cx, ax
ret

90 Sa presupunem ca trebuie interschimbate valorile de 16 biti din locatile de memorie X si Y.


scrieti trei instructiuni care realizeaza aceasta operatie(Obs. una din ele este XCHG).
Cu XCHG:
MOV AL, 5
MOV AH, 2
XCHG AL, AH ; AL = 2, AH = 5
XCHG AL, AH ; AL = 5, AH = 2
RET

91 Ce face instructiunea LEA AX, etich[BX]?


Muta in AX adresa de inceput a lui BX.

92 Care este diferenta intre MOV dx, [bx] si LEA dx,[bx]?


In cazul de fata nu exista nici o diferenta intre cele doua dar in general Lea permite copierea din
memorie intr-un registru pe cand mov are mai multe posibilitati.

LEA:
reg, mem

MOV:
reg, imed
mem, imed
reg, reg
reg, mem
mem, reg

93 de ce nu este instructiunea LEA AX, BX corecta? Explicatie.


Lea permite copierea adresei efective a sursei in registru general specificat. Din memorie in registru
si nu din registru in registru cum este specificat mai sus.

94 Ce instructiuni de forma L?S sunt disponibile pentru procesoarele x86?


AND, XOR, OR, TEST

95 Ce realizeaza instructiunea LES DI, [bx+ 3]?


Se seteaza DI la (bx+3 : bx+4) si ES la (bx+5 : bx+6)

96 ce inseamna notiunea LIFO (last in first out)?


Este o zona de memorie in care pot fi depuse valori, extragerea lor facandu-se in ordine inversa
depunerii.

97 daca ar trebui sa salvati in stiva AX si BX (in aceasta ordine) care valoare ar trebui
restaurata prima?
Se restaureaza prima data BX-ul de pe stiva datorita zonei de memorie (LIFO).
98 daca (E) SP are valoarea 8810h si salvati in stiva registrul AX, care va fi valoarea lui (E)SP
dupa executia instructiunii PUSH?
SP are valoarea 880Ch
99 daca (E)SP are vakiarea 8FFCh si salvati in stiva registrul EAX, care va fi valoarea lui (E)SP
dupa executia instructiunii PUSHD?
SP are valoarea 8FFEh <-Nu stiu sigur!!!!

100 daca restaurati valoarea din varful stivei in registrul BX atunci cand (E)SP avea valoarea
901Ch, ce va constine (E)SP dupa executia instructiunii POP?
SP are valoarea 901Ch.

101. Un procesor 8086 nu permite ncrcarea unei constante imediate ntr-un registru de segment.
Cum putei utiliza instruciunile PUSH si POP (la un procesor cel putin 286) pentru a ncrca o
constant n registrul DS.

PUSH AX

POP DS

102. Atunci cnd salvai CX urmat de DX n stiv, i apoi restaurai CX i DX (n aceast ordine) din
stiv, se vor interschimba valorile din AX i BX? Explicai.

Valorile din AX i BX rman aceleai, nu lucrm cu valorile din AX i BX n aceast


secven.

Valorile din CX i DX se vor interschimba deoarece stiva este o lista de tipul Last in first
out.

103. Presupunem c registrul ECX are valoarea 11223344h. Dac salvai registrul ECX n stiv si
apoi resturai registrul BX urmat de AX, care vor fi valorile din registrele BX i AX dup aceast
secven?

AX = 1122h, BX = 3344h

104. Instruciunea BSWAP permut octeii individuali dintr-un registru de 32 de bii. Ce instruciune
se poate utiliza pentru a permuta cele dou jumatai ale registrului AX?

xchg AH,AL

105. Care este o modalitate simpl de a realiza o extindere cu 0 (zero extension) a lui AL i AX
folosind doar o instruciune MOV?

mov AH 00h

106. Presupunnd c ai rspuns la ntrebarea anterioar, dai un exemplu din care s rezulte utilitatea
instruciunii MOVZX.

107.S presupunem c vrei s mprii valoarea (cu semn) din AX cu valoarea din BX folosind
instruciunea IDIV. Folosind instruciunea IDIV cere o valoare pe 32 de bii n DX:AX nainte de
mprirea propriu-zis. Ce instruciune folosii pentru acesta?
108. S presupunem c avei o tabel de 128 de octei care conine valorile 0, 1, 2, 3, ... 80H. Dac
BX conine valoarea adresei primului octet din tabel, ce valoare va conine AL dup execuia
instruciunii XLAT? Explicaie.

AL = AL + 0 . Se ncarc n AL coninutul locaiei din segmentul de date de la offset-ul lui


BX adunat cu coninutul lui AL.

109. Presupunem c dorii s creai o funcie care s returneze n registrul AL = 1, dac caracterul din
AL este un semn de punctuaie i AL = 0 in caz contrar. De ce tabel avei nevoie pentru a implementa
aceast funcie, dac folosim instruciunea XLAT?

110. S presupunem c registrul SI conine valoarea de intrare pentru funcia descris n problema
anterioar. Ce instruciune putei folosi pentru a realiza aceai operaie ca instruciunea XLAT cnd
este utilizat aceast tabel.

111. Presupunem c avem o tabel de 256 de octei, care conine caracterele a z la indicii 41h
pn la 5Ah (valorile respective sunt codurile ASCII ale caracterelor A Z). Explicai ce efect
are instruciunea XLAT cnd este utilizat cu aceast tabel.

Instruciunea XLAT ncarc n AL coninutul locaiei din segmentul de date de la offset-ul lui
BX adunat cu coninutul lui AL. ncarc o valoare de la 41h pn la 5Ah n functie de valoarea care o
are BX.

112. Instruciunea CMP este nedestructiv, n sensul c nu modific valoarea nici unui operand. Dai
un exemplu de instruciune care face acelai lucru ca i CMP, dar este o operaie destructiv.

113. Pe lng faptul c instruciunile INC i DEC nu afecteaz flagul Carry, care ar fi alte motive
pentru a utiliza aceste instruciuni i nu ADD sau SUB?

Sunt mai rapide, INC i DEC fac incrementarea/decrementarea direct n memorie.

114. n ce circumstane instruciunea NEG va seta flagul Zero?

NEG destinaie

NEG va seta flagul Zero cnd destinaia va avea valoarea 0.

115. Ce calculeaz instruciunea IMUL AX,BX,20 ?

20 * BX > AX

116. Presupunei c avei un vector (o matrice tridimensional) de octei (caractere) cu forma: XYZ:
array [0..3, 0..4, 0..5] of char; Ce instruciuni vei folosi pentru a ncrca elementul XYZ[i,j,k] n
AL?
117. Presupunnd c avei valoarea 20000h n DX:AX i mprii aceast valoare cu valoarea din CX.
Care vor fi cele trei valori din CX care vor genera o eroare de imprire?

CX = 0, CX foarte mic

118. Ce alt eroare poate s apar la o operaie de mprire, pe lng situaia n care ctul are o
dimensiune mai mare dect registrul destinaie?

mprirea la 0.

119. Ce instruciune logic poate fora toi biii operandului din AL n zero, cu excepia celui mai
puin semnificativ bit (LSB)?

120. Presupunnd c L, M, N, P i Q sunt variabile booleene, memorate pe cate un octet (0FFh True,
00h -False), care este codul care implementeaz funcia logic: L = (M and P) or not (P and Q).