print "
";

ASM testul 019



1.

Instructiunea NOP
- este instructiunea vida
- se utilizeaza cu o eticheta
- este precedata de o eticheta
- incheie instructiunea de salt conditionat
- ajuta la implementarea structurii repetitive nestandard

2.

Instructiunea JMP
- arata ca nu exista structura liniara
- executa salt neconditionat
- ajuta la implementarea structurii alternative multiple
- executa salt neconditionat inter-segment
- nu schimba indicatorii de conditie

3.

Instructiunea

4.

Instructiunile:
ADD AX,1
INC AX
- realizeaza aceeasi prelucrare
- aduna 1 la registrul AX in moduri diferite de adresare
- modifica indicatorii de conditie
- au numar de cicluri masina diferite
- una o inlocuieste pe cealalta in optimizarea programelor

5.

Instructiunile:
ADD AX,2
si
INC AX
INC AX
- realizeaza aceeasi prelucrare
- aduna 2 la registrul AX in moduri diferite de adresare
- modifica indicatorii de conditie
- au numar de cicluri masina diferite
- una o inlocuieste pe cealalta in optimizarea programelor



6.

Instructiunile:
SUB AX,1
DEC AX
- realizeaza aceeasi prelucrare
- scad 1 din registrul AX in moduri diferite de adresare
- modifica indicatorii de conditie
- au numar de cicluri masina diferite
- una o inlocuieste pe cealalta in optimizarea programelor



7.

Instructiunile:
SUB AX,1
si
DEC AX
DEC AX
- realizeaza aceeasi prelucrare
- scad 2 din registrul AX in moduri diferite de adresare
- modifica indicatorii de conditie
- au numar de cicluri masina diferite
- una o inlocuieste pe cealalta in optimizarea programelor



8.

Instructiunea
LEA AX,x
are acelasi efect ca instructiunea
MOV AX,offset x
sau ca instructiunea
- da
- nu
- amandoua nu pozitioneaza indicatori de conditie
- amandoua incarca in registri adrese
amandouya incarca in registri deplasari

9.

Instructiunea
INC AX
este:
- complementara instructiunii DEC AX
- este opusa instructiunii SUB AX,1
- este de tip R-R
- este de tip reg-imediat
- incrementeaza destinatia, care aici este registrul AX cu 1

10.

Instructiunea
INT
realizeaza:
- modificarea registrului SP prin decrementare
stocarea pe stiva a indicatorilor de conditie
setaresa indicatorilor IF si TF
modificarea lui SP pentru a pune pe stiva continutul lui CS si continutul lui IP
deplaseaza spre stanga doua pozitii continutul lui IP
- modificarea registrului SP prin decrementare
stocarea pe stiva a indicatorilor de conditie
setaresa indicatorilor IF si TF
modificarea lui SP pentru a pune pe stiva continutul lui CS
modifica SP pentru a pune pe stiva continutul lui IP
deplaseaza spre stanga doua pozitii continutul lui IP
- scade 2 din registrul SP
stoccheaza pe stiva indicatorii de conditie
setaresa pe zero indicatorii IF si TF
scade 2 din SP
pune pe stiva continutul lui CS
modifica SP pentru a pune pe stiva continutul lui IP
deplaseaza spre stanga doua pozitii continutul lui IP
- scade 2 din registrul SP
stoccheaza pe stiva indicatorii de conditie
setaresa pe zero indicatorii IF si TF
scade 2 din SP
pune pe stiva continutul lui CS
scade 2 din SP
pune pe stiva continutul lui IP
deplaseaza spre stanga doua pozitii continutul lui IP
- scade 2 din registrul SP
stoccheaza pe stiva indicatorii de conditie
setaresa pe zero indicatorii IF si TF
scade 2 din SP
pune pe stiva continutul lui CS
scade 2 din SP
pune pe stiva continutul lui IP
incarca in IP adresa absoluta cuvatul cel mai putin semnificativ al vectorului de intrerupere de la adresa TYPE*4

11.

Instructiunea
IRET
- incarca in IP continutul cuvantului din varful stivei
goleste stiva
incarca in CS urmatorul cuvant de pe stiva
restabileste indicatorii de conditie
- incarca in IP continutul cuvantului din varful stivei
goleste stiva, adica diminueaza cu 2 SP
incarca in CS un cuvant de pe stiva
goleste stiva, adica diminueaza cu 2 SP
restabileste indicatorii de conditie
goleste stiva, adica diminueaza cu 2 SP
- IP:=SP
SP:-SP+2
CS:=SP
SP:=SP+2
FLAGS:=SP
SP:=SP+2
- IP:=SP
SP:-SP-2
CS:=SP
SP:=SP-2
FLAGS:=SP
SP:=SP-2
- (IP):= (SP)+1:(SP)
(SP):=(SP)+2
(CS):=(SP)+1:(SP)
(SP):=(SP)+2
FLAGS:=(SP)+1:(SP)
(SP):=(SP)+2




12.

Instructiunea:
PUSH operand_sursa
- incarca pe stiva continutul a doi baiti
- executa doua operatii simple
- decrementeaza registrul SP
- incrementeaza cu 2 registrul SP
- executa:
1) (SP):=(SP)-2
2) ((SP+1):(SP)):=operand_sursa

13.

Instructiunea :
PUSH operand_sursa
- incarca pe stiva continutul a doi baiti
- executa doua operatii simple
- incrementeaza registrul SP
- decrementeaza cu 2 registrul SP
- executa:
1) (SP):=(SP)+2
2) ((SP):(SP+1)):=operand_sursa


14.

Instructiunea:
POP operand_sursa
- incarca pe stiva continutul a doi baiti
- executa doua operatii simple
- decrementeaza registrul SP
- incrementeaza cu 2 registrul SP
- executa:
1) operand_sursa:=((SP+1):(SP))
2) (SP):=(SP)-2


15.

Instructiunea :
POP operand_sursa
- incarca de pe stiva continutul a doi baiti in operandul sursa
- executa doua operatii simple
- decrementeaza registrul SP
- incrementeaza cu 2 registrul SP
- executa:
1) operand_sursa:=((SP):(SP+1))
2) (SP):=(SP)+2

16.

Instructiunea:
POP operand_sursa
- incarca de pe stiva continutul a doi baiti si goleste stiva
- executa doua operatii simple: copiere de pe stiva si golire stiva
- decrementeaza registrul SP de doua ori
- incrementeaza cu 2 registrul SP
- executa:
1) operand_sursa:=((SP+1):(SP))
2) (SP):=(SP)+2

17.

Instructiunea
RET inter-segment realizeaza:
- revenirea in segmentul programului apelator in 12 cicluri masina
- setarea registrilor CS si SP
- setarea registrului IP
incrementare SP
setare registru CS
incrementare SP
- (IP) :=((SP)+1:(SP))
(SP):=(SP)+2
(CS):=((SP)+1:(SP))
(SP):=(SP)+2
-(SP):=(SP)+2
(IP) :=((SP)+1:(SP))
(SP):=(SP)+2
(CS):=((SP)+1:(SP))

18.

Instructiunea :
SOSB
-executa copierea unui bait intr-un sir
- executa copierea bait cu bait a unui bait intr-un sir
copiaza continutul registrului AL in baitul referit prin continutul registrului DI adresat indirect
- executa:
dest:=AL
DI:=DI+1>br> - executa:
(DI):=(AL)
INC DI
-(DI):=(AL)
(DI):=(DI)+1

19.

Instructiunea :
SOSW
-executa copierea unui bait intr-un sir
- executa copierea cuvat cu cuvant intr-un sir
copiaza continutul registrului AX in cuvantul referit prin continutul registrului DI adresat indirect
- executa:
dest:=AX
DI:=DI+2>br> - executa:
(DI):=(AX)
INC DI
INC DI
-(DI):=(AL)
(DI):=(DI)+2


20.

Instructiunea :
SCASB
- inseamna Scan Bait String
- executa:
scaderea baitului de la adresa referita prin DI din registrul AL si doar pozitioneaza indicatorii de conditie
- executa:
evaluarea expresiei:(AL)-(DI)
pozitioneaza indicatorii de conditie AF CF OF SF ZF
incrementarea registrului DI
- executa:
evaluarea expresiei:(AL)-(DI)
pozitioneaza indicatorii de conditie AF CF OF SF ZF
decrementarea registrului DI
nu returneaza alt rezultat ci conditioneaza numarul de repetari prin pozitionarea indicatorilor de conditie AF CF SF ZF OF
- executa:
evaluarea expresiei:(AL)-(DI)
pozitioneaza indicatorii de conditie AF CF OF SF ZF
decrementarea registrului DI
nu returneaza niciun alt rezultat dar este conditinat numarul de repetari functie de cum au fost pozitionati indicatorii

21.

Instructiunea :
SCASW
- inseamna Scan Word String
- executa:
scaderea cuvantului de la adresa referita prin DI din registrul AX si doar pozitioneaza indicatorii de conditie
- executa:
evaluarea expresiei:(AX)-(DI)
pozitioneaza indicatorii de conditie AF CF OF SF ZF
incrementarea registrului DI
- executa:
evaluarea expresiei:(AX)-(DI)
pozitioneaza indicatorii de conditie AF CF OF SF ZF
decrementarea registrului DI
nu returneaza alt rezultat ci conditioneaza numarul de repetari prin pozitionarea indicatorilor de conditie AF CF SF ZF OF
- executa:
evaluarea expresiei:(AX)-(DI)
pozitioneaza indicatorii de conditie AF CF OF SF ZF
decrementarea registrului DI
nu returneaza niciun alt rezultat dar este conditinat numarul de repetari functie de cum au fost pozitionati indicatorii

22.

Instructiunea:
SBB
- inseamna Subtract with borrow
- efectueaza scadere cu transport
- executa
(dest):=(dest)-(sursa)-1
- executa
(dest):=(dest)-(sursa)-1
daca CF==1
- executa
(dest):=(dest)-(sursa)-CF
daca CF==1
- executa
(dest):=(dest)-(sursa)-CF

23.

Instructiunea :
XLATB
- inseamna translatare
- inlocuieste elementele intr-un sir de maximum 256 elemente
- pentru a fi executata corect trebuie:
sa se defineasca o tabela al carui continut este sursa
sa se incarce in registrul BX adresa acestei tabele
- continutul acumulatorului este inlocuit cu continutul unui bait din tabela
- executa: (AL):=((BX)+(AL))
in 11 cicluri masina fara a pozitiona indicatori de conditie

24.

Instructiunea:
RCL operand,CONTOR
- are semnificatia care provine de la Rotate Left through Carry
- executa rotirea continutului unei zone de memorie cu un numar de pozitii pana cad CF este pozitionat pe 1
- executa rotirea spre stanga a continutului unui operand pana cand CF este pozitionat pe 1 de un numar de ori egal cu un contor specificat
- daca se considera un numar de pozitii de rotire a unui operand egal cu CONTOR,daca var1:=CONTOR
atat timp cat var1!=0 executa:
var1:=CF
CF:= bitul cel mai semnificativ al operandului rotit spre stanga
operand:=operand*2+var2
var1:=var1-1
- daca se considera un numar de pozitii de rotire a unui operand egal cu CONTOR,daca var1:=CONTOR
atat timp cat var1!=0 executa:
var1:=CF
CF:= bitul cel mai semnificativ al operandului rotit spre stanga
operand:=operand*2+var2
var1:=var1-1
in cazul in care CONTOR==1 atunci (daca bitul cel mai semnificativ din operand!+CF atunci OF:=1 altfewl OF:=0) altfel OF este nedefinit

25.

Instructiunea:
PUSHF
- pune pe stiva indicatorii de conditie
- executa
(SP):=(SP)-2
((SP)+1:(SP)):=FLAGS
- executa
(SP):=(SP)+2
((SP)+1:(SP)):=FLAGS
- executa
((SP)+1:(SP)):=FLAGS
(SP):=(SP)-2
- executa
((SP)+1:(SP)):=FLAGS
(SP):=(SP)+2

26.

Instructiunea:
POPF
- extrage de pe stiva indicatorii de conditie
- executa
(SP):=(SP)-2
((SP)+1:(SP)):=FLAGS
- executa
(SP):=(SP)+2
((SP)+1:(SP)):=FLAGS
- executa
((SP)+1:(SP)):=FLAGS
(SP):=(SP)-2
- executa
((SP)+1:(SP)):=FLAGS
(SP):=(SP)+2


27.

Instructiunea:
NEG AL
- scade din 0FFh continutul lui AL si rezultatul se memoreaza in registrul AL
- pozitioneaza indicatorii de contitie AF CF OF PF SF ZF
- se executa in 3 ciluri masina
- conduce la obtinerea in registrul AL a numarului0EDh daca acest registru a avut inainte de executie valoarea 13h intrucat instructiunea determina scaderea din 0FFh a continutului registrului AL si stocarea rezultatului in registrul AL
- are legatura cu instructiunea NOT cu deosebirea ca aceasta din urma mai aduna ceva la registrul AL

28.

Instructiunea:
LOOPZ eticheta
- executa:
(CX):=(CX)-1 (IP):=(IP)+deplasare eticheta daca ZF++1 si CX!=0
- executa:
CX:=CX-1 IP:=IP+deplasare eticheta daca ZF++1 si CX!=0
- executa repetarea unei secvente atat timp cat registrul CX este diferit de zero, iar indicatorul de conditie ZF==1
- este echivalenta cu LOOPE eticheta
- apare in secventa:
LOOPZ eticheta
secventa
de
instructiuni
eticheta:NOP

29.

Instructiunea:
RET 4
- returneaza numarul 4 ca valoare a functiei de calculat
- reinitializeaza registrul IP si goleste 2 cuvinte de pe stiva
- asigura revenirea in apelator
- executa operatiile elementare:
(IP):=((SP)+1:(SP))
(SP):=(SP)+2
(SP):=(SP)+4
- executa operatiile elementare:
(IP):=((SP)+1:(SP))
(SP):=(SP)-2
(SP):=(SP)-4

30.

Instructiunea :
NEG AX
- scade din 0FFFFh continutul lui AX si rezultatul se memoreaza in registrul AX
- pozitioneaza indicatorii de contitie AF CF OF PF SF ZF
- se executa in 3 ciluri masina
- conduce la obtinerea in registrul AX a numarului0FFEDh daca acest registru a avut inainte de executie valoarea 013h intrucat instructiunea determina scaderea din 0FFFFh a continutului registrului AL si stocarea rezultatului in registrul AX
- are legatura cu instructiunea NOT cu deosebirea ca aceasta din urma mai aduna ceva la registrul AX