Przykładowa Maszyna Cyfrowa

advertisement
Programowanie w PMC
W prezentacji





Wstęp
Polecenia programu PMC
Dodawanie ciągu n liczb
Silnia liczby n
Szukanie liczb ujemnych w ciągu n liczb
Wprowadzenie
Nauka programowania komputerów jest zadaniem bardzo trudnym.
Współczesny sprzęt informatyczny ma za sobą długą drogę rozwoju i
osiągnął wysoki stopień komplikacji będący barierą dla początkujących,
którzy chcieliby poznać zasady programowania w języku bezpośrednio
rozumianym przez procesor, czyli w asemblerze.
Moim celem jest zmniejszenie chaosu oraz złożoności systemów
rzeczywistych i przybliżenie wam Przykładowej Maszyny Cyfrowej czyli
PMC, która ma prostą i zrozumiałą konstrukcję oraz niewielki zestaw
rozkazów.
Dzięki tym cechom będziemy mogli szybko nauczyć się jej budowy i
skoncentrować na samym programowaniu.
Program PMC
Licznik rozkazów
Będzie nas informował
który krok programu
aktualnie wykonujemy
Kod
programu
Rejestr rozkazów
Odpowiedzialny za
przekodowanie kodu
binarnego na konkretny
rozkaz
Dane
Przykład: dodaj liczbę
• Wejściowe
Akumulator
• Wyjściowe
Menu
Pamięć podręczna w
której dokonujemy
obliczeń
Wykonuje
program
Uruchomia program
krok po kroku
Uruchomia program jako
kolejne kroki procesora
Polecenia PMC
ZD 27 – polecenie zeruj akumulator i dodaj liczbę z komórki 27
Przykład:
Początek:
Polecenie:
Wynik:
ZD 27
DO 27 – polecenie dodaje do akumulatora liczbę z komórki 27
OD 27 – polecenie odejmuje od akumulatora liczbę z komórki 27
MN 27 – polecenie mnoży akumulator przez liczbę z komórki 27
Przykład:
Początek:
Polecenie:
OD 27
Wynik:
Polecenia PMC
PA 27 – polecenie zeruj wartość komórki 27 i zapamiętuje w niej wartość akumulatora
Przykład:
Początek:
Polecenie:
Wynik:
PA 27
Uwagi:
• Do akumulatora możemy wprowadzać nie tylko liczby ale i polecenia (np. DO 26)
Przeadresowywanie komórek
Polecenia PMC
Instrukcje skoku:
SK 10 – wykonanie tego rozkazu powoduje bezwarunkowy przeskok
wykonywanego programu do komórki o adresie 10
SS 0 – wykonanie tego rozkazu powoduje bezwarunkowy przeskok
wykonywanego programu do komórki o adresie 0 i zatrzymanie programu
SM 10 – wykonanie tego rozkazu powoduje skok do komórki o adresie
10 w momencie kiedy wartość akumulatora będzie ujemna w
przeciwnym razie program przejdzie do następnej komórki
Menu
Dodawanie liczb
Spróbujmy teraz napisać prosty program dodający sześć liczb
Trzy etapy tworzenia programu:
Stwórz dobry algorytm rozwiązujący problem
Na podstawie algorytmu zaprogramuj maszynę cyfrową
Przetestuj program aby mieć pewność, że działa prawidłowo
NO TO DO DZIEŁA
Dodawanie n liczb
Rozpoczynamy pracę programu
A
L
G
Wczytujemy ilość liczb oraz ich wartości
Ustawiamy indeks i = 1 oraz zerujemy
sumę liczb
Dodajemy pierwszą liczbę do sumy
O
R
Y
T
M
Pytamy program czy dodał już
wszystkie liczby
Jeśli nie to zwiększamy indeks i o 1 aby
w następnej pętli programu dodać
kolejną liczbę
Jeśli warunek był spełniony
wypisujemy wynik sumy liczb „s”
Kończymy pracę programu
Dodawanie n liczb
Dodajemy kolejne liczby
P
R
O
G
R
A
M
Obliczamy liczbę n - i - 1
Sprawdzamy czy jest ona ujemna, jeśli
tak to skaczemy do komórki 13, jeśli
nie to wykonujemy rozkaz z komórki 7
Zmieniamy i na i + 1
Przeadresowujemy komórkę o 1 aby w
kolejnej pętli program dodał następną
liczbę
Zapętlamy program
D
A
N
E
Wprowadzone liczby: -14, 3, 6, -5, -7, 11, 24
Liczba i
Ilość liczb
Menu
Pomocnicza jedynka do obliczeń
Wynik
Silnia liczby n
Rozpoczynamy pracę programu
A
L
G
O
R
Y
T
M
Wczytujemy liczbę n
Sprawdzamy czy n nie jest liczbą ujemną
Jeśli nie jest to za zmienną i przyjmujemy 1
Za s (wynik silni) podstawiamy i
Pytamy program czy obliczył już silnię z n
Jeśli nie to zwiększamy indeks i o 1
Mnożymy s przez i ponieważ n!=1*2*…*n,
a następnie przechodzimy do następnej
pętli z pytaniem czy już policzyliśmy silnię
Jeśli warunek był spełniony
wypisujemy wynik silni liczb n
Kończymy pracę programu
Silnia liczby n
Wczytujemy liczbę n
P
R
O
G
R
A
M
Sprawdzamy czy jest ona ujemna jeśli
tak to kończymy program jeśli nie to
idziemy do kolejnego rozkazu
Podstawiamy za wynik liczbę i
Obliczamy liczbę n – i – 1
Sprawdzamy czy jest ona ujemna jeśli
nie to podstawiamy zamiast i, i +1, a
następnie wynik s mnożymy przez i
Zapętlamy program
Pomocnicza jedynka do obliczeń
D
A
N
E
Liczba i
Liczba z której policzymy silnię
Wynik
Menu
Obliczanie ile jest liczb
ujemnych w ciągu n liczb
Rozpoczynamy pracę programu
A
Wczytujemy liczbę n i liczby od a[1] do a[n]
L
Pytamy program czy sprawdziliśmy już
wszystkie liczby
G
O
Jeśli nie to sprawdzamy czy i-ta liczba
jest ujemna
R
Y
Jeśli nie to zwiększamy indeks i o 1
T
M
Jeśli tak to zwiększamy indeks i o 1 i
doliczamy kolejną liczbę ujemną
Kończymy pracę programu
Jeśli warunek był spełniony
wypisujemy wynik silni liczb n
Obliczanie ile jest liczb
ujemnych w ciągu n liczb
Zmniejszamy ilość liczb o jeden
P
R
O
G
R
A
M
Program pyta czy sprawdziliśmy
już wszystkie liczby
Zapamiętujemy nową ilość liczb
W czytujemy i-tą liczbę i sprawdzamy
czy jest ona ujemna
Jeśli nie jest ona ujemna to
przeadresowywujemy komórki tak aby w
nowej pętli program badał następną liczbę
Jeśli tak to zliczmy ilość liczb
ujemnych, przeadresowywujemy
komórki i przechodzimy do badania
następnej liczby
D
A
N
E
Wprowadzone liczby: -14, 3, 6, -5, -7, 11, 24
Pomocnicza jedynka do obliczeń
Ilość liczb
Wynik
Menu
Podsumowanie
Dziękuję za uwagę
Download