AKO 2015 2016 niestacjonarne przyklady cz1

background image

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

(studia niestacjonarne 2015/2016)



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 ę . . .”.
Wskazówka

: w sekcji danych programu (.data) należy zarezerwować obszar pamięci 80-

bajtowy, do którego trzeba przepisać znaki z obszaru źródłowego przeplatając je znakami
spacji. Rezerwacja obszaru może mieć postać:

obszar_wynikowy

db

80 dup (?)

Lepszym rozwiązaniem jest zarezerwowanie obszaru 80-bajtowego na stosie, np. za pomocą
rozkazu

sub esp, 80

W tym przypadku, po wykonaniu rozkazu powyższego rozkazu, rejestr ESP będzie
wskazywał adres początkowy tego obszaru.


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 sekcji danych zdefiniować pomocniczy, 81-bajtowy obszar danych:

background image

.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

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.

background image



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.


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 2011 2012 niestacjonarne przyklady cz1
dane do projektu niestacjonarne Kraków sem 2015 2016
NIESTACJONARNE SESJA EGZAMINACYJNA WŁASCIWA jesienna 2015 2016
NIESTACJONARNE SESJA POPRAWKOWA jesienna 2015 2016
NIESTACJONARNE SESJA POPRAWKOWA jesienna 2015 2016 (1)
kalendarz r szk 2015 2016
Harmonogram zjazdow NS zima 2015 2016 (1)
Geografia polityczna i ekonomiczna wczesna zerówka 2015 2016 wyniki
DRUK PLANU PRACY KOMISJI interdyscyplinarnej na 2015-2016 (1)
marketing pytania i odpowiedzi ZBIÓR, WZR UG ZARZĄDZANIE - ZMP II STOPIEŃ, I SEMESTR (zimowy) 2015-
POJAZDY 3.1IPEH pn 2015 2016, 4
POJAZDY 3.4MiBM pn 2015 2016, 4
POJAZDY 3.3MiBM wt 2015 2016, 4
wykaz podrecznikow 2015 2016, Kulturoznastwo, zapraszam
POJAZDY 3.2MiBM wt 2015 2016, 4
POJAZDY 3.2MiBM wt 2015 2016, 4
AKO wyklad 2011 niestacjonarne Nieznany

więcej podobnych podstron