Ćwiczenie Nr 1 /Inf
Zaprojektować i uruchomić program w asemblerze 80x86 realizujący
wielokrotną operację:
a. dzielenia
b. logiczną ==
c. pierwiastek drugiego stopnia
d. mnożenia
e. logiczną =>
f. potęgowania trzeciego stopnia
g. logiczną =<
h. dodawania
i. logiczną >
j. odejmowania
k. logiczną <
l. potęgowania drugiego stopnia
m. logiczną !=
n. modulo
dla liczb o słowie 8-bitowym w kodzie U2.
Dane wprowadzane z klawiatury w kodzie binarnym. Kolejność
wprowadzania danych i wykonania operacji dowolna i wielokrotna.
Na ekranie istnieje stałą linia (linia poleceń) gdzie wprowadzamy
polecenia oraz wprowadzamy dane. Z klawiatury przyjmujemy tylko
następujące klawisze :
- <L> - wybór dane1
- <P> - wybór dane2
- <W> - wybór (wykonanie) operacji
- <1>, <0> - wprowadzenie wartości danej
- <B> - akceptacja danej/wyboru
- <BS> - korekta
- <Esc> - wyjście z programu
Przy wprowadzaniu liczb długość danych jest dowolna.
Dla każdej operacji wprowadzamy obie dane. Z chwilą wprowadzenia
ich (w linii w linii poleceń), wyświetlamy je w stałych miejscach
ekranu w kodzie ósemkowym a w nawiasach [] w kodzie binarnym. Na ekranie
zmieniamy tylko te pola które uległy zmianie. W środku między danymi
na ekranie umieszczamy znak operacji. W opcji „wykonanie operacji”
wyświetlamy kod błędu wg zasad stosowanych w matematyce. Dodatkowo dla
wersji :
c. gdy dana2 != -2 wyświetlamy kod błędu
f. gdy dana2 != 3 wyświetlamy kod błędu
l. gdy dana2 != 2 wyświetlamy kod błędu
Na początku programu dane1, dane2„ zerujemy” i wyświetlamy je
na ekranie a polu wyniku spacje. Zmiana dowolnej danej
„kasuje” na ekranie poprzedni wynik. Wynik operacji wyświetlamy
w stałym miejscu ekranu w kodzie ósemkowym a w nawiasach [ ]
w kodzie binarnym. Dla wyniku operacji z błędem lub przekroczymy
zakres liczby wyświetlamy w polu wyniku „***”.
W programie nie deklarujemy własnych procedur.
Narysować ręcznie schemat blokowy programu.
Ćwiczenie Nr 2 /Inf
Zaprojektować i uruchomić procedurę w asemblerze 80x86
realizującą wielokrotną operację:
a. odejmowania
b. mnożenia
c. dodawania
d. dzielenia
e. odejmowania
f. mnożenia
g. dodawania
h. dzielenia
i. odejmowania
j. mnożenia
k. dodawania
l. dzielenia
m. odejmowania
n. mnożenia
dla liczb 5 bajtowych w kodzie BCD. Wartość zero w starszych
bitach pierwszego bajtu odpowiada znakowi plus, a wartość
jeden odpowiada minusowi ( np. `0000000200'== 200,
'1000000353' == -353).
Dane wprowadzane z klawiatury (zawsze po 10 znaków). Wyjście
z programu po odpowiedzi na pytanie „zakończyć program T/N”.
Resztę znaków klawiatury ignorujemy.
Na ekranie wyświetlamy dane wejściowe, znak operacji oraz wynik
w kodzie szesnastkowym. Dla wyniku operacji z błędem wyświetlamy
w polu wyniku „***”.
Narysować ręcznie schemat blokowy procedury.
Ćwiczenie Nr 3 /Inf
Zaprojektować i uruchomić procedurę w asemblerze 80x86 realizującą
na 5 bajtowej zmiennej wielokrotną operację :
a. mnożenia dla liczb całkowitych U2
b. dzielenia dla liczb całkowitych U2
c. mnożenia dla liczb całkowitych bez znaku
d. dzielenia dla liczb całkowitych bez znaku
e. mnożenia dla liczb całkowitych ze znakiem i modułem liczby
f. dzielenia dla liczb całkowitych ze znakiem i modułem liczby
g. mnożenia dla liczb całkowitych U2
h. dzielenia dla liczb całkowitych U2
i. mnożenia dla liczb całkowitych bez znaku
j. dzielenia dla liczb całkowitych bez znaku
k. mnożenia dla liczb całkowitych ze znakiem i modułem liczby
l. dzielenia dla liczb całkowitych ze znakiem i modułem liczby
m. mnożenia dla liczb całkowitych U2
n. dzielenia dla liczb całkowitych U2
Na ekranie wyświetlamy dane wejściowe, znak operacji oraz wynik
w kodzie dziesiętnym. Dla wyniku operacji z błędem wyświetlamy
w polu wyniku „***”.
Narysować ręcznie schemat blokowy procedury.
Ćwiczenie Nr 4 /Inf
Zaprojektować program rezydentny w asemblerze 80x86,
Który w przerwaniu 1CH BIOS, po odblokowaniu przez inny program,
N razy [byte] zapisuje w odstępach ~4.5 sekundowych bajt B [char]
od adresu ADR [DWORD]. Ustawić kontrolę obecności programu
rezydentnego w systemie.
Zaprojektować i uruchomić program wprowadzający wielokrotnie
dane do programu rezydentnego.
Formaty wprowadzania danych:
N - kod dziesiętny [xxx]
B - znak ASCII `A..Z'[x]
ADR - kod szesnastkowy [xxxx:xxxx]
Kolejne dane uruchamiane są po wykonaniu nastaw, a wyjście
z programu dla N=0.
Program napisać w asemblerze 80x86 i uruchomić programem
TD (program uruchomieniowy). Zakres zmiennej ADR do 1MB.
Narysować ręcznie schemat blokowy obu programów.
Ćwiczenie 6 [2] / Inf
Zaprojektować i uruchomić w asemblerze 80x86 procedurę
wykonującej na danych typu float (wg normy IEEE) programowo
(bez użycia koprocesora), następujące operacje :
a. mnożenia
b. szukanie wartości Min z tablicy [20]
c. odwrotności 1.0/x
d. szukania wartości Max z tablicy [20]
e. potęgowanie drugiego stopnia
f. uporządkowanie od min dla tablicy [20] dla metoda (1)
g. dzielenia
h. odejmowania
i. uporządkowanie od max dla tablicy [20] metoda (2)
j. dzielenie z obcięciem do wyniku całkowitego
k. uporządkowanie od min dla tablicy [20] metoda (2)
l. dodawania
m. uporządkowanie od max dla tablicy [20] dla metoda (1)
n. potęgowanie trzeciego stopnia
Metoda sortowania :
(1) - przez proste wybieranie
(2) - bąbelkowa
Dane do procedury ustawiamy (w programie głównym) w zmiennych :
Dla wersji
c,e,n - „ARG2“
a,g,h,j,l, - „ARG1”, „ARG2”
b,d,f,i,k,m - „ADRES” - adres pierwszego elementu tablicy,
„ILOSC” - rozmiar tablicy max=20
Wszystkie operacje wykonywać tylko i wyłącznie (!) na rejestrach jedno bajtowych.
Dla operacji wykonanych bezbłędnie wynik operacji umieszczamy w zmiennej
„WYNIK” a zmienną „BUFBLAD” równa zeru. W przeciwnym razie ustawiamy
tylko „BUFBLAD” wartością różna od zera.
Zadeklarować tablicę z 20 liczbami z zakresu od 99999.0 ... 0.001
, z tego połowę stanowią liczby ujemne.
W programie głównym procedurę wywołujemy dwukrotnie dla różnych danych
wejściowych.
Narysować ręcznie schemat działania procedury .
Ćwiczenie 7 / Inf
Zaprojektować i uruchomić program w asemblerze który
Ustawić ekran monitora w tryb graficzny i wykonać na nim
wykres wg warunków podanych przez prowadzącego ćwiczenie.
Do obliczeń współrzędnych wykresu wykorzystać rozkazy
koprocesora arytmetycznego.
Plan ćwiczeń
Laboratorium Techniki Mikroprocesorowej
kierunek : Informatyka
( Studia dzienne )
Ćwiczenie Nr 1
Operacje na liczbach całkowitych w kodzie U2.
Kod ósemkowy i binarny.
Ćwiczenie Nr 2
Operacje na liczbach w kodzie BCD.
Kod szesnastkowy.
Ćwiczenie Nr 3
Operacje na liczbach całkowitych wielobajtowych.
Kod dziesiętny ASCII.
Ćwiczenie Nr 4
Programowanie przerwania czasowego. Programy rezydentne.
Ćwiczenie Nr 5 [2]
Programowanie transmisji szeregowej asynchronicznej
korzystając bezpośrednio układu UART i przerwań.
Protokóły transmisji danych.
Ćwiczenie Nr 6 [2]
Programowe operacje na liczbach zmiennoprzecinkowych.
Ćwiczenie Nr 7
Programowanie karty graficznej w trybie graficznym.
Operacje na liczbach z udziałem koprocesora.