11. Wymień i scharakteryzuj atrybuty nazw w ASM
$ w nazwie nie może być więcej niż 247 znaków (w MASM)
$ nie ma różnicy między dużymi i małymi literami
$ pierwszy znak może być jedynie literą lub symbolem @ _ $, chociaż należy unikać @ bo korzystają z niego wstępnie zdefiniowane nazwy symboli. Kolejne znaki mogą być cyframi.
$ nazwa nie może być identyczna z zarezerwowanymi słowami w asemblerze
...a może chodzi tu o to:
DB - Define Byte - alokuje miejsce dla jednej lub więcej wartości 8-bitowych (bajtowych). Składnia:
Nazwa DB wartosc1, wartosc2,….
Zakres wartości: -128 do 127 albo 0 do 255
DW - Define Word - alokuje miejsce dla jednej lub więcej wartości 16-bitowych (pojedyncze słowo). Składnia:
Nazwa DW wartosc1, wartosc2,….
Zakres wartości: -32768 do 32767 albo 0 do 65535
DD - Define Doubleword - alokuje miejsce dla jednej lub więcej wartości 32-bitowych (podwójne słowo). Składnia:
Nazwa DD wartosc1, wartosc2,….
Zakres wartości: 0 do 0FFFFFFFFh
12 W jaki sposób atrybuty zewnętrzności i lokalności (globalności) zwiększają możliwości konsolidacji programu napisanego w asemblerze?
Konsolidacja z modułami bibliotecznymi wymaga dopasowania do modelu zastosowanego w bibliotekach (dostępne są biblioteki w wersjach z różnymi modelami pamięci - trzeba dobrać wywołania do wybranej biblioteki. ??????
13. W jaki sposób można w ASM zrealizować typ wyliczeniowy?
Typ wyliczeniowy definiuje zbiór identyfikatorów oznaczających poszczególne wartości przez ich wyliczenie. Pierwszy identyfikator ma wartość 0, kolejny 1 itd.
Więc prawdopodobnie chodzi tu o dyrektywy RECORD / STRUC (patrz pyt 150, 154)
14. Wymień trzy cele wykorzystania stosu w praktyce pisania programów w asemblerze
* zapisanie danych na stosie - stosowane gdy mamy zbyt małą ilość potrzebnych rejestrów, należy pamiętać o strukturze stosu (LIFO - last in first out)
* Przekazywanie parametrów między procedurami lub z programu do podprogramu (i na odwrót) - przekazywanie pomiędzy programami jest wygodne gdyż stos umożliwia przesłanie o wiele więcej danych niż rejestry
* zapis wartości najważniejszych rejestrów w przypadku np. wywołania podprogramu (polecenie PUSHA - potem aby zdjąć POPA)
15. Napisz przykładowy program realizujący przekazywanie parametrów pomiędzy procedurami przez wspólne obszary pamięci.
Patrz slajdy od 27
16. W jaki sposób w języku asm definiujemy ciągi i tablice jednowymiarowe? Podaj przykłady - popatrz sobie na slajd 50
@ bufor o stałej długości - niewykorzystane miejsce zapełnia sobie spacjami
db ` to jest bufor `
@ bufor z deskryptorem długości - na początku ciągu może być umieszczony deskryptor określający długość ciągu, pozycje nieużywane mają nieokreśloną wartość (wykorzystywany w TurboPascalu)
db 0Dh ; db ` to jest bufor `
@ bufor zakończony terminatorem - zmienna długość ograniczona wielkością zarezerwowanej pamięci (stosowany w C)
db ` to jest bufor$'
@ bufor zakończony pustym bajtem - na końcu ciągu znajduje się bajt o zerowej wartości, rzeczywista długość ciągu zmienia się od 0 do wartości zadeklarowanej w długości ciągu (wykorzystywany w C i w formacie dll)
@ ciąg o zmiennej długości - definiowany przez 32 bitowy deskryptor, który zawiera wskaźnik do rzeczywistych znaków w ciągu - można zmieniać jego długość co wymaga dodatkowej ilości pamięci
17. Czy to prawda, że rekurencja w znacznym stopniu jest możliwa dzięki wykorzystaniu stosu? Odp zilustruj przykładem i uzasadnij.
Rozwiązania te są podobne - slajd 35
18. Czym różni się za[pis koloru piksela bezpośrednio przez RGB i z wykorzystaniem palety barw?
Zapis piksela przez RGB polega na bezpośrednim zapisaniu jednego z 256 odcieni (każdy odcień zajmuje jeden bajt=3 bajty dla piksela) kolorów:Czerwonego (R) zielonego(G) i niebieskiego(B) do pliku graficznego, w przypadku takiego formatu zapisu nie musimy definiować ile jest kolorów dla piksela w danym pliku, liczba ta jest z góry zdefiniowana (256x256x256=16M). Ogranicza to paletę barw a (rzadko kiedy )powoduje zbyt wielką ilość informacji zawartych w pliku(zapis czarno-biały). Przykładem takiego typu pliku jest format BMP.
Zapis piksela przez paletę barw różni się od RGB tym, że dla każdego piksela jest określony kolor zapisany w dołączonej do pliku palecie barw, która opisuje ilość bitów przypisanych każdej składowej kolorystycznej. Tak więc komputer musi dla każdego pliku zapisanego w ten sposób wyznaczyć kolor każdego piksela na podstawie niestandardowego opisu, jakim jest paleta barw.
19.Przedstaw przykład rozwinięcia assemblerowego konstrukcji SWITCH zgodnej ze standardem C.
enum liczba {1,2,3};
{
switch(liczba)
{
case 1:
case 2:
printf("Nie lubie poczatku tygodnia\n");
break;
case 3:
printf("Lubie weekend!\n");
break;
}
}
cmp ax, 1
je skok1
cmp ax, 2
je skok2
..
skok1:
..
skok2:
..
20 Jak można korzystać z biblioteki procedur BIOS i systemu operacyjnego?
BIOS i DOS zawierają procedury upraszczające obsługę WE-WY oraz podstawowe zadania systemowe (obsługa grafiki, dysku)
Sposób 1: aplikacja zawiera rozkaz INT - przerwanie programowe
INT 10h - grafika, INT 16h - klawiatura...
Sposób 2: przerwanie sprzętowe - urządzenie wysyła sygnał do PIC