1. (5 points) Dysponując fragmentem dokumentacji z MSDN... wskaż poprawne użycie funkcji WriteConsoleOutputCharacter
BOOL WINAPI WriteConsoleOutputCharacter(...)
-
●
INVOKE WriteConsoleOutputCharacter, outHandle, ADDR buffer, BufSize, xyPos, ADDR cellsWritten
-
●
INVOKE WriteConsoleOutputCharacter, outHandle, OFFSET buffer, BufSize, xyPos, cellsWritten
-
●
INVOKE WriteConsoleOutputCharacter, outHandle, OFFSET buffer, OFFSET xyPos, OFFSET cellsWritten
-
●
żadne z powyższych.
1. (5 points) Zastosowanie programowania asemblerowego (zaznacz prawidłowe odpowiedzi)
-
x
gdy korzysta się z rozkazów procesora, jakie nie są dostępne w językach wyższego poziomu
-
x
gdy jest potrzeba tworzenia przenośnego kodu (np. na inne procesory i systemy operacyjne)
-
x
gdy nie znamy rozkazów procesora
-
x
gdy nie dysponujemy żadnym kompilatorem języka wysokiego poziomu (np. na nowym typie procesora)
2. (5 points) Jakie etapy są potrzebne w utworzeniu pliku .exe w sytuacji gdy program składa się tylko z jednego pliku .asm?
- ● żadne z powyższych (z pliku .asm nie da się utworzyć pliku .exe).
- ● tylko konsolidacja
-
●
asemblacja i konsolidacja
- ● tylko asemblacja
3. (5 points) Co oznacza „stdcall” w kontekście MASM32?
-
●
Konwencję wywoływania procedur, w której stos zarządza argumentami
- ● Standardowy plik wykonywalny dla systemu Windows
- ● Rodzaj przerwania sprzętowego
- ● Typ danych w architekturze 32-bitowe
4. (5 points) Co się stanie, jeśli linker nie znajdzie symbolu zewnętrznego (external)?
- ● Program uruchomi się, ale z błędami
- ● Symbol zostanie zignorowany
-
●
Proces linkowania zakończy się błędem
- ● Linker wygeneruje pusty plik wykonywalny
5. (5 points) Etap realizacji odwołań do symboli zewnętrznych poprzez związanie tych odwołań z symbolami udostępnianymi przez moduły...
- ● asemblacja
-
●
konsolidacja
- ● interpretacja
- ● żadne z powyższych
6. (5 points) Jaka jest rola instrukcji ret/ret N w procedurze (zaznacz wszystkie pasujące odpowiedzi):
-
x
odłożenie wartości z wierzchołka stosu do rejestru EIP
- x zachowanie w procedurze wartości rejestrów ogólnego przeznaczenia (na stos)
- x pobranie z wierzchołka stosu wartości do rejestrów ogólnego przeznaczenia
-
x
skorygowanie wierzchołka stosu (rejestru ESP) o podaną liczbę N
(10) 1. Określ czy następujące linie kodu są poprawne w MASM32:
.data
zmA DWORD 1
zmB DWORD 2 ...
| mov eip,zmA |
Nie
|
| mov esi,zmC |
Nie
|
| push al |
Nie
|
| cdq |
Tak
|
| add eax,zmB |
Tak
|
| mov zmA,zmD |
Nie
|
| xor edx,edx |
Tak
|
| div eax,ebx |
Nie
|
| cld |
Tak
|
| pop zmA |
Tak
|
| mov al,tablica[1] |
Tak
|
(5) 2. Które instrukcje są częścią zestawu x86?
(5) 3. Który z poniższych rejestrów odpowiada za przechowywanie wskaźnika stosu w procesorach x86?
4. Czym jest segmentacja w architekturze x86?
- ● Technika przyspieszania operacji na liczbach zmiennoprzecinkowych
- ● Podział procesora na jednostki wykonawcze
- ● Wykorzystanie pamięci podręcznej
-
●
Mechanizm dzielenia pamięci na segmenty kodu, danych i stosu
5. Co oznacza dyrektywa EXTERN w MASM32?
-
●
Deklaruje funkcje lub zmienne zdefiniowane w innym module
- ● Tworzy zmienną globalną
- ● Usuwa zmienne z pamięci
- ● Definiuje segment danych
6. Jaką funkcję pełni WinMain w programach MASM32?
-
●
Jest punktem wejścia w aplikacjach Windows GUI
- ● Tworzy okno konsolowe
- ● Obsługuje przerwania systemowe
- ● Deklaruje stos
7. Jakie rejestry są wykorzystywane przez koprocesor w x86 i dostępne dla programisty w koprocesorze?
- x ST(0) - ST(7)
- x EAX, EBX
- x RL9
- x RAX, RBX
8. Czym charakteryzuje się architektura x86?
- x Architekturą CISC (Complex Instruction Set Computer)
- x Architekturą RISC (Reduced Instruction Set Computer)
- x Wsparciem dla szerokiego zestawu instrukcji
- x Natywną obsługą 64-bitowego trybu pracy
(5) 9. Jaka będzie zawartość rejestru DL po wykonaniu następującego fragmentu kodu
mov dl,5
shl dl,2
- ● 2
- ● 5
- ● 10
- ● 20
- ● 101
- ● 10100
(5) 10. Jaka będzie zawartość rejestru EAX po wykonaniu następującego fragmentu kodu
xor edx,edx ... jnz e1 ...
(5) 11. Rozkaz, który zapisuje wartość z odpowiednio EAX do miejsca w pamięci wskazywanego przez EDI to:
- ● mov edi,eax
- ● mov [edi],eax
- ● mov eax,edi
- ● mov [eax],edi
(5) 12. Jaka będzie zawartość rejestru AL po wykonaniu następującego fragmentu kodu
mov al,6
or al,00110000b
- ● 00110000b
- ● 00110110b
- ● 00000110b
- ● 00000000b
(5) 13. Jaka będzie zawartość rejestru EAX po wykonaniu następującego fragmentu kodu:
mov eax,0
mov ecx,4
xor ecx,ecx
petla: ...
- ● 0
- ● 1
- ● 4
- ● 255
- ● 256
- ● 2¹⁶ - 1
- ● 2¹⁶
- ● 2³² - 1
- ● 2³²
(5) 14. Jaka będzie wartość rejestru dl po wykonaniu następującego fragmentu kodu?
mov dl,3Fh
ror dl,4
- ● DL = 3Fh
- ● DL = F5h
- ● DL = F3h
- ● DL = 89h.
(5) 15. Jaka będzie wartość rejestru ax po wykonaniu następującego fragmentu kodu?
.data
myDouble DWORD 12345678h
.code
mov ax,WORD PTR [myDouble+2]
- ● AX = 7856h
- ● AX = 3412h
- ● AX = 5678h
- ● AX = 1234h.
[5] Jaka będzie wartość rejestru ecx po wykonaniu następującego fragmentu kodu?
.data
array1 WORD 30 DUP(?),0,0
.code
mov ecx,SIZEOF array1
- ● ECX = 2
- ● ECX = 30
- ● ECX = 64
- ● ECX = 3
- ● ECX = 33
- ● niepoprawna instrukcja.