AKO 2011 2012 niestacjonarne przyklady cz1

background image

Zadania przykładowe do laboratorium z "Architektury komputerów" cz. I

(studia niestacjonarne 2011/2012)



1. Zmodyfikować program opracowany na zajęciach laboratoryjnych w taki sposób, by tekst
wyświetlany na ekranie był dwukrotnie szerszy od oryginalnego (druk rozstrzelony), np.
zamiast „Nazywam się ...” powinno być ”N a z y w a m s i ę . . .”. Nie
należy zmieniać sekcji danych programu (część programu zaczynająca się od dyrektywy
.data

).



2. Zmodyfikować podprogram wyświetlania liczb (opracowany na zajęciach laboratoryjnych)
w taki sposób, by w liczbie dziesiętnej wyświetlanej na ekranie za pomocą funkcji
MessageBox

zera nieznaczące zostały zastąpione znakami gwiazdki *, np. ****654321.

Plik z rozwiązaniem powinien zawierać podprogram, program główny (etykieta _main i
dalsze rozkazy) oraz wszystkie niezbędne dyrektywy.


3. Zmodyfikować podprogram wyświetlania liczb (opracowany na zajęciach laboratoryjnych)
w taki sposób, by liczba dziesiętna wyświetlana na ekranie za pomocą funkcji MessageBox
poprzedzona była słowem "Kwota =", np. Kwota = 654321. Plik z rozwiązaniem
powinien zawierać podprogram, program główny (etykieta _main i dalsze rozkazy) oraz
wszystkie niezbędne dyrektywy.


4. Opracować nową wersję podprogramu dokonującego konwersji liczby binarnej zawartej w
rejestrze EAX na postać dziesiętną, która zostaje wyświetlona na ekranie. Nowy podprogram
powinien wyświetlać liczbę w formacie, w którym po każdej cyfrze wystąpi spacja, np.:
4 0 3 7 4 5 6 5 0 2.
Wykorzystując ten podprogram, napisać program w asemblerze, który wyświetli na ekranie
wartość dziesiętną liczby binarnej 11111111111111111111111111111110 Plik z
rozwiązaniem powinien zawierać podprogram, program główny (etykieta _main i dalsze
rozkazy) oraz wszystkie niezbędne dyrektywy.


5. Napisać program w asemblerze, który wczyta jeden wiersz z klawiatury i wyświetli na
ekranie liczbę znaków tego wiersza.

Wskazówki:

1. W części asemblerowej zdefiniować pomocniczy, 81-bajtowy obszar danych:

.data

obszar

db

81 dup (?)


2. Tekst z klawiatury można wczytać za pomocą funkcji __read (uwaga: dwa znaki

podkreślenia _) .Funkcję tę na poziomie kodu w asemblerze można wywołać za pomocą
sekwencji rozkazów


push 81

background image

push OFFSET

obszar

push 0

call __read

add esp, 12


3. Należy pamiętać, że funkcja __read zmienia zawartości rejestrów procesora (z

wyjątkiem EBX, EBP, ESI, EDI). W rejestrze EAX zostaje umieszczona liczba znaków
wpisanego tekstu.

4. Do wypisania na ekranie liczby znaków wykorzystać podprogram opracowany na

zajęciach laboratoryjnych.



6. Napisać program w asemblerze, który wczyta jeden wiersz z klawiatury i wyświetli go na
ekranie za pomocą funkcji MessageBox, przy czym znaki spacji zostaną zastąpione znakami
gwiazdki*, np. po wprowadzeniu wiersza "Ala ma kota" na ekranie powinien pojawić się
tekst "Ala*ma*kota ". Zakładamy, że wprowadzany tekst ma dokładnie 11 znaków (nie
licząc kodu klawisza Enter na końcu tekstu).

Wskazówki:

1. W części asemblerowej zdefiniować pomocniczy, 12-bajtowy obszar danych:

.data

obszar

db

12 dup (?)


2. Tekst z klawiatury można wczytać za pomocą funkcji __read (uwaga: dwa znaki

podkreślenia _) .Funkcję tę na poziomie kodu w asemblerze można wywołać za pomocą
sekwencji rozkazów


push 12

push OFFSET

obszar

push 0

call __read

add esp, 12


3. Znaki wpisane z klawiatury zostaną wprowadzone do tablicy obszar.

4. Należy pamiętać, że funkcja __read zmienia zawartości rejestrów procesora (z

wyjątkiem EBX, EBP, ESI, EDI). W rejestrze EAX zostaje umieszczona liczba znaków
wpisanego tekstu.




7. Opracować nową wersję podprogramu dokonującego konwersji liczby binarnej zawartej w
rejestrze EAX na postać dziesiętną, która zostaje wyświetlona na ekranie. Nowy podprogram
powinien przeprowadzać konwersję liczby binarnej ze znakiem (w kodzie U2) na postać
dziesiętną. Plik z rozwiązaniem powinien zawierać podprogram, program główny (etykieta
_main

i dalsze rozkazy) oraz wszystkie niezbędne dyrektywy.

background image

Wskazówki

:


1. Znak liczby w rejestrze EAX można sprawdzić w poniższy sposób

or

eax, eax

js

ujemna ; skok, gdy liczba ujemna

2. Jeśli liczba w rejestrze EAX jest nieujemna, to konwersję przeprowadza się w tak samo

jak dla liczb bez znaku.

3. Jeśli liczba jest ujemna, to należy zmienić jej znak za pomocą rozkazu NEG i postępować

dalej tak samo jak dla liczb nieujemnych.

4. Przed cyframi liczby należy także wyświetlić znak + lub −.


8. Opracować nową wersję podprogramu dokonującego konwersji liczby binarnej zawartej w
rejestrze EAX na postać dziesiętną, która zostaje wyświetlona na ekranie. Nowy podprogram
powinien wyświetlać liczbę w formacie, w którym po każdych trzech cyfrach, począwszy od
cyfr najmniej znaczących, wystąpi spacja, np. 12 345 678. Plik z rozwiązaniem powinien
zawierać podprogram, program główny (etykieta _main i dalsze rozkazy) oraz wszystkie
niezbędne dyrektywy.

Wskazówki

:

1. Utworzyć licznik cyfr, który będzie inkrementowany po wygenerowaniu kolejnej cyfry.

2. W trakcie generowania cyfr sprawdzać, czy zawartość licznika cyfr jest podzielna przez

3.

3. Licznik cyfr nie może być utożsamiony z indeksem używanym przy zapisie cyfr.




Wyszukiwarka

Podobne podstrony:
AKO 2011 2012 niestacjonarne przyklady cz1
AKO 2015 2016 niestacjonarne przyklady cz1
Program PUE 2011 i 2012 Dyplomacja Europejska niestacjonarne, Dyplomaca Europejska
Ekonometria I niestacjonarne stopien I Ekonomia 2011 2012
Ekonometria II stopien niestacjonalne I rok plan 2011 2012
Ekonometria I zadania niestacjonarne I stopien III rok 2011 2012
mn k1 przykl 2011 2012
Sem VI Org i ek rol test egz przykł 2011 2012
pmp wykład podmioty 2011 2012
NIEDOKRWISTOŚCI SEM 2011 2012

więcej podobnych podstron