Sunteți pe pagina 1din 2

Subiecte examen SOLTR Grupa 10301 A, 2009

S1. Se consider programul: DATA SEGMENT VECTOR dw 2 DUP(0201h, 2 DUP(0202h, 0203h), 0102h) ZONAMEM equ $ - vector REZ1 dw ? REZ2 db 0, 0 DATA ENDS STIVA STIVA COD ASSUME start: SEGMENT STACK dw 100 DUP (?) ENDS SEGMENT cs:COD, ds:DATA, ss:STIVA mov ax, DATA mov ds, ax mov ax, STIVA mov ss, ax call NEAR PTR SUBRUT mov ax, 4c00h int 21h PROC push push push push lea mov xor xor mov rcr jnc rcl add jmp rcl add add loop mov pop pop pop pop ret ENDP ENDS END NEAR ax cx si dx si, VECTOR cx, ZONAMEM /TYPE VECTOR ax, ax dx, dx ax, [si] ax, 1 SALT ax, 1 dx, ax CONT ax, 1 WORD PTR REZ2, ax si, 2 REPET REZ1, dx dx si cx ax

S2. Se consider programul: DOSSEG .MODEL SMALL .STACK 100h .DATA DW 10 DUP(8100h) EQU $ - TABEL DW 0 DW 0 .CODE mov ax, @DATA mov ds, ax xor cx, cx call Proc1 call Proc2 call Proc3 mov ax, 4c00h int 21h PROC xor mov mov clc xor mov mov xor adc add loop mov ret ENDP PROC mov push xor mov mov mov ror ror inc dec loop mov rol ror mov add dec jnz pop ret ENDP PROC mov xor clc mov mov xor mov shl shr NEAR ax, ax bx, OFFSET TABEL si, 0 dx, dx cx, lTABEL/TYPE TABEL ax, [bx+si] ax, 8901h dx, ax si, 2 B1 rez, dx

TABEL lTABEL rez rez1 START:

Proc1

SUBRUT

B1:

REPET:

Proc1 Proc2

SALT: CONT:

B2:

B02:

SUBRUT COD

start

1a. Dac n momentul execuiei instruciunii call NEAR PTR SUBRUT, registrul SP are valoarea 0A02h, s se precizeze care va fi valoarea acestuia n momentul execuiei instruciunii xor dx, dx din procedura SUBRUT. 1b. S se precizeze numrul care se va nscrie n variabila REZ1 dup execuia acestui program. 1c. S se precizeze numrul care se va nscrie n variabila REZ2 dup execuia acestui program.

NEAR bx, OFFSET TABEL si si, si dx, LENGTH TABEL ax, WORD PTR [bx+si] cl, 4 ax, cl al, cl al ah B02 cl, 4 al, cl ax, cl [bx+si], ax si, 2 dx B2 si

Proc2 Proc3

NEAR bx, OFFSET TABEL si, si cl, dx, ax, al, ax, al, 4 lTABEL/TYPE TABEL ax [bx+si] cl cl

B3:

Proc3

adc adc add dec jnz ret ENDP end

BYTE PTR rez1, al BYTE PTR rez1+1, ah si,2 dx B3

START mes1a mes2a mes3a mes1b mes2b mes1c mes2c mes3c F1 F2 db db db db db db db db

mov call declr mov call clef mov call exit CR, CR, CR, CR, CR, CR, CR, CR, equ equ End

si, OFFSET mes1c afis si, OFFSET mes2c afis F1 si, OFFSET mes3c afis T1: T1: T1: T2: T2: T3: T3: T3: mes1a mes2a mes3a mes1b mes2b mes1c mes2c mes3c ...', ...', ...', ...', ...', ...', ...', ...', $ $ $ $ $ $ $ $

2a. Ce se va nscrie n variabila rez dup execuia procedurii Proc1 ? 2b. Ce va conine tabelul TABEL dup execuia procedurii Proc2 ? 2c. Ce se va nscrie n variabila rez1 dup execuia procedurii Proc3 ? S3. 3a. Este posibil sincronizarea taskurilor pe o condiie de timp utiliznd semafoare binare ? 3b. Explicati notiunea de directiv care declar eveniment semnificativ. 3c. Scriei forma primitivei ASTEAPTA(.) pentru cazul unui task a crui execuie este condiionat, la un moment dat de realizarea a trei evenimente externe. 3d. Sa se scrie instruciunile necesare pentru reprogramarea taskului T1 la un interval de 3 sec i a taskului T2 la un interval de 5 sec n mod nesincronizat. 3e. Explicai noiunea de cheie de protecie - cheie de acces. S4. Care va fi ordinea mesajelor afiate pe display de urmtoarea secven de program: T0: extrn iins irun iins irun isetf exit iins irun setf mov call declr clef mov call wait mov call exit wait mov call declr wait mov call exit wait afis 3, T1, STIVA1 3 2, T2, STIVA2 2 F2 1, T3, STIVA3 1 F1 si, OFFSET mes1a afis F2 si, OFFSET mes2a afis F1 si, OFFSET mes3a afis F1 si, OFFSET mes1b afis F2 si, OFFSET mes2b afis F2

LF, 'Task LF, 'Task LF, 'Task LF, 'Task LF, 'Task LF, 'Task LF, 'Task LF, 'Task 30 32

Observaii: a) Taskul T0 are prioritate maxim, 0, i este instalat prin comenzi de la tastatur; b) Initial, toate flagurile sunt resetate.

Barem: 1a)-0.5p, 1b)-1.0p, 1c)-1.0p, 2a)-1p 2b)-2.5p, 2c)-1p, 3a)-0.3p, 3b)-0.3p, 3c)0.3p, 3d)-0.3p, 3e)-0.3p, 4)-2.5p

R: S1. 1a. SP = 09f8h 1b. REZ1 = 0C0Eh (suma nr. impare) 1c. REZ2 = 0A0Ch (suma nr. pare) S2. Se pleaca de la tabelul 8100h 8100h ... 8100h (de 10 ori) a) Dupa executia subrutinei Proc1 var rez va avea valoarea 500Ah a) Dupa executia subrutinei Proc2 se obtine tabelul 0045h 0045h ... 0045h (de 10 ori) b) Dupa executia subrutinei Proc3 var rez va avea valoarea 2832h S3. S4.

T1:

T2:

T3: