Documente Academic
Documente Profesional
Documente Cultură
1 ELEM Struct
next [A] NULL
2 prev [A] NULL
3 text [A] NULL
4 ELEM EndS
5 LIST Struct
6
7 first dd NULL
8 last dd NULL
9 current dd NULL
10 LIST EndS
11 .data
12
13 List LIST {}
14 Add_LastNode Proc
15 mov ebx, halloc( [B] )
16 mov eax, List. [F]
[C] eax == NULL
17 mov [ebx].ELEM.prev, NULL
18 mov [ebx].ELEM.next, NULL
19 mov List.first, ebx
20 mov List.last, ebx
21 mov List.current, ebx
22 [D]
23 mov [ebx].ELEM.prev, eax
24 mov [ebx].ELEM.next, NULL
25 mov [eax].ELEM. [G] , ebx
mov List.last, ebx
26 [E]
27 mov esi, input("Last element: ")
28 mov ecx, len(esi)
29 inc ecx
30 push ecx
31 mov edi, halloc(ecx)
32 pop ecx
33 mov [ebx].ELEM.text, edi
34 rep movsb
35 ret
36 Add_LastNode EndP
37
38
39
40
1. Completați în codul de mai sus locul/locurile marcat/marcate cu [A] astfel încât
o variabilă de tip ELEM să ocupe 96 de octeți.
DD/DWORD
3. Completați în codul de mai sus locul/locurile marcat/marcate cu [C], [D], [E] astfel
încât blocul de instrucțiuni următor să se execute o singură dată atunci când condiția
evaluată este adevărată.
C : .if | D : .else | E : .endif
4. Completați în codul de mai sus locul/locurile marcat/marcate cu [C], [D], [E] astfel
încât blocul de instrucțiuni următor să se execute atât timp cât condiția evaluată este
adevărată.
C : .while | E : .endw | D : .break. if EAX ! = NULL
11. Explicati efectul (rostul) instructiunii de pe linia 27. Exlicati de ce face ceea ce face,
nu doar ce face!
Pentru a se pune in evidenta ultimul element din lista, pentru care nu va exista informatie de
inlantuire inainte,ci doar inapoi.
12. Cat spatiu de memorie ocupa o lista cu trei elemente, daca structurile de date care
definesc lista si elemenele listei au toti membrii de tip double word?
1 Element : 12 octeti => 3 Elemente : 36 octeti