ASM testul 029



1.

Instructiunea
MOV AX,BETA
a) copiaza continutul registrului AX in zona de memorie de doi baiti BETA
b) copiaza zonei de memorie de doi baiti BETA in registrul AX
c) muta continutul registrului AX in zona de memorie de doi baiti BETA
d) nu pozitioneaza indicatorii de conditie AF,CF,IF,OF,DF dar pozitioneaza indicatorii PF, SF,TF,ZF
e) copiaza continutul registrului AX in zona de memorie de doi baiti BETA definita anterior si
nu pozitioneaza indicatorii de conditie; continutul zonei de memorie BETA ramane nemodificat


2.

Macrodefinitia care verifica daca intr-un sir exista trei caractere consecutive identice, iar aceste aparitii sunt contorizate, este:
verif3 MACRO sir,lung,vb
LABEL ciclu,salt
PUSH AX
PUSH CX
PUSH SI
PUSH BX
XOR BX,BX
XOR SI,SI
MOV CX,lung
DEC CX
DEC CX
ciclu:
MOV AX,sir[SI]
CMP AX,sir+1[SI]
JNZ salt
CMP AX,sir+2[SI]
JNZ salt
INC BX
salt:
INC SI
LOOP ciclu
POP BX
POP SI
POP CX
POP AX
ENDM

a) initializarea si salvarea registrilor trebuie reordonata pentru a arata exact cum se lucreaza cu operanzii intrucat operatiile XOR si PUSH sunt comutative
b) corecta
c) devine corecta daca se mai adauga o instructiune de decrementare pentru ca se compara 3 caractere nu doua
d) corecta daca este inserata dupa LOOP a instructiunii MOV vb,BX
e) si necesita definirea variabilei contor care trebuie initializata cu zero prin MOV contor,0 si care este incrementata INC contor dupa ultimul salt conditionat

3.

Instructiunile:
POP CX
POP AA
POP AA[SI]
POP [SI]
a) exemplifica patru moduri diferite de adresare in utilizarea restaurarii de pe stiva
b) definesc o secventa in care registrul SP se incrementeaza de patru ori cu valoarea 2
c) memoreaza pe stiva: continutul registrului CX, memoreaza pe stiva continutul zonei de memorie
AA; memoreaza pe stiva continutul zonei de memorie a carei adresa rezulta din adunarea deplasarii variabilei AA cu continutul registrului SI;
memoreaza pe stiva continutul zonei de memorie a carei deplasare se afla in registrul SI
d) ia de pe stiva continutul unor zone de memorie definite pe cuvant;
dupa aceea registrul SP se incrementeaza cu 2 la fiecare restaurare;
instructiunea nu pozitioneaza indicati de conditie
e) preiaude pe stiva patru cuvinte pe care le memoreaza in: registrul CX, in zona de memorie cu nume AA definita cu DW, in zona de memorie cu adresa obtinuta din deplasarea variavilei AA si
continutul registrului SI prin adunare si ultima copiere pune pe stiva din zona de memorie a carei deplasare este memorata in registrul SI

4.

Instructiunea NOP:
a) este instructiunea vida definita cu codul 9Ah
b) nu realizeaza nicio prelucrare dar necesita un numar fix de cicluri masina; se eticheteaza obligatoriu
c) ocupa un bait si permite o implementare flexibila a structurii alternative multiple
d) nu pozitioneaza indicatorii de conditie si trebuie sa fie etichetata
e) se executa in 3 cicluri masina, ocupa un bait, nu executa nicio prelucrare si este utilizata numai pentru a delimita secvente fiind obligatorie etichetarea ei


5.

Macrodefinitia care verifica daca intr-un sir exista trei caractere consecutive identice, iar aceste aparitii sunt contorizate, este:
verif3 MACRO sir,lung,vb
LABEL ciclu,salt
PUSH AX
PUSH CX
PUSH SI
XOR SI,SI
MOV vb,0
MOV CX,lung
DEC CX
ciclu:
MOV AX,sir[SI]
CMP AX,sir+1[SI]
JNZ salt
CMP AX,sir+2[SI]
JNZ salt
INC vb
salt:
INC SI
LOOP ciclu
POP SI
POP CX
POP AX
ENDM

a) corecta
b) corecta daca se mai insereaza DEC CX pupa prima decrementare a lui CX
c) incorecta pentru ca opereaza cu variabila vb in loc sa lucreze cu un registru
d) ineficienta ca lucreaza cu instructiuni de tip mamorie-imediat sau cu operanzi in memorie
e) incorectapentru ca mai este necesara o instructiune DEC CX si devine eficienta daca in loc de variabila vb se lucreaza cu un registru care: trebuie initializat cu zero, trebuie incrementat si care dupa LOOP trebuie copiat in vb


6.

Instructiunea DEC realizeaza:
a) decrementarea registrului specificat ca operand
b) scade o unitate din operandul definit si pozitioneaza indicatorii de conditie AF,OF,PF si ZF
c) ecaluarea expresiei AX:=AX-1 daca este definita prin DEC AX;
necsita 2 cicluri masina;
pozitioneaza indicatorii de conditie AF,OF,PF,SF si ZF
d) decrementarea registrului CX in instructiunea LOOP
e) o prelucrare mai eficienta decat SUB AX,1 care necesita 4, intrucat DEC AX necesita numai 2 cicluri masina; depinde de numarul de baiti ocupati de instructiune


7.

Instructiunea de comparare COMPARE TWO OPERANDS
CPM operand_stanga,operand_dreapta:
a) efectueaza evaluarea expresiei (operand_stanga) - (operand_dreapta) si pozitioneaza indicatorii de conditie AF,CF,OF,PF,SF si ZF
b) nu modifica cei doi operanzi dupa efectuarea compararii
c) compara prin scaderea celor doi operanzi si nu se modifica continutul zonelor lor de memorie
d) efectueaza compareare prin scadere a celor doi operanzi si pozitioneaza indicatorii
de conditie AF,CF,OF,PF,SF,ZF asemeni instructiunii SUB
e) doar pozitioneaza indicatorii de conditie dupa evaluarea expresiei (operand_stang):=(operand_stang)-(operand_drept)


8.

Instructiunea
LOOP eticheta se executa de o "infinitate" de ori daca:
a) efectueaza evaluarea expresiei (operand_stanga) - (operand_dreapta) si necesita 3 cicluri masina daca are forma CMP AX,BX;
pozitioneaza toti indicatorii de conditie
b) dacaregistrul CX contine valoarea "infinit"
c) CXnu este initializat
d) CX este initializat cu zero
e) se lucreaza in CX cu virgula mobila sau cu variabile DD pentru a obtine valoarea cu semnificatia "infinit"


9.

Instructiunea de comparare COMPARE TWO OPERANDS
CPM :
a) efectueaza evaluarea expresiei (operand_stanga) - (operand_dreapta) si pozitioneaza indicatorii de conditie AF,CF,OF,PF,SF si ZF
daca operandul sursa este definit pe 2 baiti si operandul destinatie este definit pe 1 bait
b) nu modifica continutul operanzilor 212 si 333 din instructiunea CMP 212,333 doar pozitioneaza indicatorii de conditie
c) compara cei doi operanzi, iar atunci cand operandul stang este definit pe 2 baiti iar operandul drept este definit pe 1 bait are loc extensia de semn a operandului drept pentru a se efectua o scadere intre operanzi de 2 baiti fiecare;
CMP AX,22 se executa in 4 cicluri masina
d) efectueaza compareare prin scadere a doi operanzi stocati in memorie si pozitioneaza indicatorii de conditie AF,CF,OF,PF,SF,ZF
e) doar pozitioneaza indicatorii de conditie dupa evaluarea expresiei (operand_stang):=(operand_stang)-(operand_drept) in care cei doi operanzi se refera si prin expresiile [SI], respectiv, [DI], ca in instructiunea CMP [SI],DI


10.

Instructiunea
CALL expresie de referirede
in urna din formele:
CALL aduna
CALL [SI]
CALL AX
CALL procedura[DI]
a) efectueaza evaluarea expresiilor:
(SP):=(SP)-2
((S)+1:(SP)):=(CS)
(CS):=adr-SEG
daca peocedura aduna se afla in alt segment decat unde se efectueaza apelul
b) modifica in acelasi fel SP si CS indiferent unde se afla procedura
c) initializeaza registrul IP cu adresa destinatiei, care in acest caz este adresa primei instructiuni executabile din procedura referita prin adresare indirecta cu expresia [SI]
d) efectueaza apelul procedurii a carei adresa de inceput este referita prin adresare indexata dintr-un vector de pointeri spre functii
e) nu pozitioneaza indicatorii de conditie


11.

Macrodefinitia care identifica pozitia primei aparitii a unui subsir de caractere intr-un sir este:
search MACRO sir,subsir,lung_sir,lung_subsir,pozitia
LABEL ciclu1,ciclu2,salt1,salt2
PUSH AX
PUSH SI
PUSH DI
PUSH CX
PUSH BX
XOR SI,SI
MOV pozitia,-1
ciclu1:
PUSH CX
MOV CX,lung_subsir
MOV AX,sir[SI]
MOV DX,SI
ciclu2:
CMP AX,subsir[DI]
JNE salt1
INC SI
INC DI
LOOP ciclu2
MOV pozitia,DX
JMP salt2
salt1:
POP CX
INC SI
LOOP ciclu1
salt2: POP BX
POP CX
POP DI
POP SI
POP AX
ENDM

a) devine corecta daca in ciclu1 se testeaza CX sa nu se iasa in afara sirului, iar rezultatul arata ultima aparitie a subsirului in sir
b) construita sa puna -1 in variabila poztitie daca subsirul nu este identificat
c) returneaza in variabila pozitie ultima aparitie a subsirului
d) pentru a returna pozitia primei aparitii trebuie sa se compare BX cu -1 si daca este diferit sa se execute salt la eticheta salt2
e) iar prin o serie de modificari va executa ceea ce se doreste, adica aflarea pozitiei primei aparitii a sirului in subsir


12.

Instructiunea ADD WITH CARRY, ADC dest,sursa
a) afecteaza indicatorul de conditie CF
b) executa evaluarea expresiilor:
(dest):=(dest)+(sursa)+1 daca CF=1
(dest):=(dest)+(sursa)+0 daca CF=0
c) aduna CF la operandul sursa
d) efectueaza adunarea lui CF la registrul acumulator
e) se foloseste numai la adunarea operanzilor definiti pe 4 baiti fiecare ca in secventa:
MOV AX,OPERAND_1
ADD AX,OPERAND_2
MOV DX,OPERAND_1+2
ADC DX,OPERAND_2+2


13.

Instructiunea :
UNITATE DW 7 DUP(7 DUP (?))
defineste:
a) fara initializare o matrice unitate
b) cu initializare nedefinita o matrice unitate
c) determina alocarea unei zone de memorie de 49 de cuvinte
d) aloca 98 de baiti fara initializare dar care pot fi reinitializati
e) nu modifica indicatorii de conditie in acelasi fel in care actioneaza instructiunea MOV


14.

Secventa de instructiuni
MOV AX,BETA[SI]
MOV GAMA[SI],AX
realizeaza:
a) copierea elementelor BETA[i]ale unui masiv unidimensional in masivul unidimensional
GAMA[i], i=0,1,2,...,n
b) transferul intre doua zone de memorie
c) muta element cu element doua masive de memorie
d) nu pozitioneaza indicatorii de conditie AF,CF,IF,OF,DF dar pozitioneaza indicatorii PF, SF,TF,ZF
e) copiaza in registrul AX continutul zonei de memorie referite cu adresare indexata
BETA[SI];copiaza in zona de memorie referita prin GAMA[SI] a continutului registrului AX


15.

Secventa de instructiuni:
xor SI,SI
mov cx,100
et10:
MOV X[SI],CX
INC SI
INC SI
LOOP et10
realizeaza:
a) generarea unui sir crescator 1,2,...,n memorat in zona de memorie de 2*n cuvinte
b) initializarea cu valorile 100, 99, 98,.....,4,3,2,1 a elementelor unui masiv unidimensional definit prin X DW 100 DUP (?)
c) muta un sir de screscator intr-un vector de 100 de componente definite cu DW
d) nu pozitioneaza indicatorii de conditie in toate cele 101 repetari
e) copiaza continutul registrului AX in zona de memorie referita prin adresare directa indexata


16.

Macrodefinitia care numara aparitiile a unui subsir de caractere intr-un sir este:
search MACRO sir,subsir,lung_sir,lung_subsir,contor
LABEL ciclu1,ciclu2,salt1,salt2
PUSH AX
PUSH SI
PUSH DI
PUSH CX
PUSH BX
XOR SI,SI
ciclu1:
MOV AX,lung_subsir
ADD AX,SI
CMP AX,CX
JGE salt2
PUSH CX
MOV CX,lung_subsir
MOV AX,sir[SI]
MOV DX,SI
ciclu2:
CMP AX,subsir[DI]
JNE salt1
INC SI
INC DI
LOOP ciclu2
INC DX
JMP salt2
salt1:
POP CX
INC SI
LOOP ciclu1
MOV contor,DX
salt2: POP BX
POP CX
POP DI
POP SI
POP AX
ENDM

Instructiunea JZ ALFA realizeaza:
a) devine corecta daca se initializeaza cu zero variabila contor
b) devine corecta daca se initializeaza cu zero registrul BX
c) este corecta
d) si trebuie imodificata
e) traverseaza in cadrul celor doua cicluri imbricate comparatii, registrul SI traverseaza sirul iar DI traverseaza subsirul de mult mai multe ori


17.

Instructiunea MOV AX,AX realizeaza:
a) copierea continutul registrului AX in el insusi
b) copierea unui operand numit sursa in alt operand numit destinatie
c) initializarea cu zero a registrului AX
d) fara sa pozitioneze indicatorii de conditie AF,CF,IF,OF,DF o operatie nenecesara
e) copiaza continutul registrului AX in zona de memorie de doi baiti AX definita anterior
fara a fi initializata; nu pozitioneaza indicatorii de conditie; continutul zonei
de memorie AX ramane nemodificat


18.

Macrodefinitia de verificare daca un sir se gaseste intr-un sir :
a) contine instructiuni de salvare si de restaurare
b) include traversarea diferita a doi vectori folosind registri SI si DI
c) are cel putin 20 linii sursa
d) testeaza inainte de a verifica daca subsirul se afla in sir, daca intreg subsirul incape in sir de la pozitia unde se afla testarea
e) are in lista de parametri: sirul unde se face verificarea, lungimea sirului, subsirul care este cautat, lungimea subsirului si o variabila care da pozitia unde se afla subsirul, fie prima, fie ultima aparitie, dupa cum se solicita




19.

Instructiunile:
MOV AX,-1
JLZ ETA
realizeaza:
a) salt conditionat in avans spre instructiunea cu eticheta ETA intrucat registrul AX are valoarea -1
b) salt conditionat inapoi catre instructiunea cu eticheta ETA pentru ca registrul AX are valoarea -1
c) salt conditionat catre instructiunea cu eticheta ETA numai daca o instructiune precedenta pozitioneaza indicatorii de consditie ceruti de acest tip de salt;
instructiunea MOV nu pozitioneaza indicatorii de conditie
d) salt conditionat la instructiunea cu eticheta ETA si nu pozitioneaza
indicatorii de conditie AF,CF,IF,OF,DF dar pozitioneaza indicatorul SF
e) salt conditionat la instructiunea cu eticheta ETA si nu pozitioneaza
indicatorii de conditie insa implementeaza structura repetitiva conditionata anterior




20.

Macrodefinitia pentru numararea aparitiilor unui cuvant intr-un text:
a) are ca parametri textul, cuvantul si un contor
b) efectueaza traversarea sirului asociat extului si simultan, traversarea subsirului asociat cuvantului cautat
c) are cel putin trei instructiuni PUSH CX datorita imbricarilor impuse de traversari
d) apeleaza macroinstructiunea de cautare a unui subsit intr-un sir construita sa numere aparitiile subsirului, dupa ce a foost testata riguros
e) presupune salvare de registri, initializari, traversari si numarari ale aparitiilor subsirului in sir; se folosesc registri DI si SI pentru traversare sir, respectiv, subsir, registrul BX pentru numarare aparitii subsir in sir si doua salvari ale registrului CX datorita imbricarilor




21.

Instructiunea SUB ETA,TETA realizeaza:
a) scaderea operandului sursa TETA din operandul destinatie ETA, definiti prin:
ETA DW 100
TETA DW 75
obtinand valoarea 25
b) efectuarea scaderii dupa relatia (ETA):=(ETA)-(TETA)
c) generarea unei erori de executie intrucat ambii operanzi sunt variabile definite in memorie
d) scaderea daca unul dintre operanzi este pus in corespondenta cu unul dintre registri AX sau BX sau CX sau DX sau DI sau SI folosind EQU
e) scaderea a doi operanzi definiti implicit pe un bait fiecare




22.

Instructiunea DEC CX realizeaza:
a) scaderea unei unitati din registrul CX
b) scaderea a doua unitati din registrul CX daca precede instructiunea LOOP
c) scaderea a trei unitati din registrul CX daca este inlocuita de instructiunea SUB CX,3
d) pozitionarea unor indicatori de conditie
e) o operatie de scadere cu o cantitate fixa, numita ratie




23.

Registrul AX se utilizeaza pentru:
a) stocarea de rezultate intermediare ca in instructiunea ADD AX,X[SI]
b) memorarea de constante simbolice in exclusivitate
c) initializare numai cu instructiunea XOR AX,AX
d) furnizare ca sursa de valori care se memoreaza ca in instructiunea MOV ALFA,AX
e) comparare de valori ca in instructiunea CMP AX,7 sau CMP 7,AX




24.

Registrul AX se utilizeaza pentru:
a) ajustare aritmetica, fiind operand explicit
b) conversie de la bait la cuvant, ca operand explicit
c) conversie de la cuvant la cuvant dublu, ca operand explicit, impreuna cu registrul DX
d) calcule ca registru acumulator
e) comparare de valori ca in instructiunea CMP AX,7 sau CMP 7,AX


25.

Registrul CX se utilizeaza pentru:
a) stocarea de rezultate intermediare ca in instructiunea ADD CX,X[SI]
b) memorarea de constante care indica numarul mai mare ca 10 a pozitiilor cu care se efectueaza deplasarea spre stanga sau spre dreapta a continutului unei zone de memorie sau a continutului unui registru
c) gestionarea sub forma DEC CX a numarului de repetari in structura repetitiva implementata cu instructiunea LOOP
d) stabilirea lungimilor diferite ale sirurilor de baiti utilizate in instructiunile de lucru cu siruri de caractere
e) comparare de valori ca in instructiunea CMP CX,7 sau CMP 7,CX




26.

Instructiunea MUL ETA realizeaza:
a) inmultirea unui operand stocat intr-un registru cu operandul stocat in memorie si referit cu identificatorul ETA
b) inmultirea atunci cand deinmultitul se afla in registrul AX si inmultitorul se afla in zona de memorie definita pe cuvant ETA
c) inmultirea numai daca deinmultitul este memorat in registrul AX si inmultitorul se memoreaza
in registrul BX prin instructiunea MOV BX, ETA, dupa care instructiunea de inmultire devine MUL BX
d) inmultirea binara a doi operanzi, din care unul este stocat intr-un registru si altul este in memorie;
rezultatul se afla in registrul dublu DX:AX
e) calculul unei expresii de forma (DX:AX):=(AX)*(ETA)
nu se pozitioneaza indicatori de conditie




27.

Instructiunile:
JG ETA_1
JZ ETA_2
JL ETA_3
JMP ETA_4
realizeaza:
a) salt conditionat spre trei directii diferite
b) salt neconditionat spre eticheta ETA_4 si trei salturi conditionate
c) filtrarea executiei a patru secvente de program functie de trezultatul testarii
d) salturi conditionate functie de cum au fost pozitionati indicatorii de conditie anterior;
instructiunea JMP ETA_4 trebuie etichetata, altfel nu va fi executata niciodata
e) salturi neconditionate si conditionate spre 4 secvente de program




28.

Instructiunea PUSH ETA realizeaza:
a) salvarea pe stiva a continutului unui cuvant referit cu identificatorul ETA
b) salvarea pe o stiva referita cu registrul SS
c) copierea continutului zonei de memorie referita cu identificatorul ETA in zona de memorie avand deplasarea referita cu registrul SP, dupa ce registrul acesta a fost majorat cu 2
d) copierea continutului zonei de memorie referita cu identificatorul ETA in zona de memorie avand deplasarea referita cu registrul SP, dupa ce registrul acesta a fost diminuat cu 2
e) este echivalenta cu instructiunea MOV [SP],ETA


29.

Instructiunea MOV AX,offset BETA realizeaza:
a) incarca in registrul AX deplasarea zonei de memorie BETA
b) nu pozitioneaza indicatori de conditie dar este singurul mod de a incarca adresa unui operand
c) muta continutul zonei de memorie BETA in registrul AX
d) nu pozitioneaza indicatorii de conditie dar incarca in registrul AX o deplasare, registrul AX fiind utilizat in adresarea indexata
e) incarcarea in registrul AX a unei deplasari, fiind obligatorie instructiunea MOV SI,AX pentru a lucra in continuare in modul de adresare indirect cu operandul BETA




30.

Instructiunea MOV DI,offset BETA realizeaza:
a) incarca in registrul DI deplasarea zonei de memorie BETA
b) nu pozitioneaza indicatori de conditie dar este singurul mod de a incarca adresa unui operand
c) muta continutul zonei de memorie BETA in registrul DI
d) nu pozitioneaza indicatorii de conditie dar incarca in registrul AX o deplasare, registrul DI fiind utilizat in adresarea indexata
e) incarcarea in registrul DI a unei deplasari, fiind obligatorie instructiunea MOV AX,[DI] pentru a lucra in continuare in modul de adresare indirect cu operandul BETA, iar registrul DI trebuie incrementat prin:
INC DI
INC DI