Programowanie w językach niskie-
go poziomu
Wykład nr 10 z Podstaw Informatyki
Języki programowania
●
Języki maszynowe (kod maszynowy)
●
Języki asemblera (symboliczne)
●
Języki programowania ogólnych zastosowań
●
Języki zorientowane dziedzinowo
Języki programowania
●
Języki maszynowe (kod maszynowy)
●
kody rozkazów w postaci binarnej i binarne adre-
sy absolutne jako argumenty
●
Języki asemblera (symboliczne)
●
Języki programowania ogólnych zastosowań
●
Języki zorientowane dziedzinowo
Języki programowania
●
Języki maszynowe (kod maszynowy)
●
kody rozkazów w postaci binarnej i binarne adre-
sy absolutne jako argumenty
●
Języki asemblera (symboliczne)
●
kody maszynowe i adresy w postaci symbolicznej
●
Języki programowania ogólnych zastosowań
●
Języki zorientowane dziedzinowo
Języki programowania
●
Języki maszynowe (kod maszynowy)
●
kody rozkazów w postaci binarnej i binarne adre-
sy absolutne jako argumenty
●
Języki asemblera (symboliczne)
●
kody maszynowe i adresy w postaci symbolicznej
●
Języki programowania ogólnych zastosowań
●
instrukcje symboliczne na które składa się często
wiele rozkazów komputera
●
Języki zorientowane dziedzinowo
Języki programowania
●
Języki maszynowe (kod maszynowy)
●
kody rozkazów w postaci binarnej i binarne adre-
sy absolutne jako argumenty
●
Języki asemblera (symboliczne)
●
kody maszynowe i adresy w postaci symbolicznej
●
Języki programowania ogólnych zastosowań
●
instrukcje symboliczne na które składa się często
wiele rozkazów komputera
●
Języki zorientowane dziedzinowo
●
programista określa co che zrobić a nie jak
Języki programowania
●
Języki maszynowe (kod maszynowy)
●
kody rozkazów w postaci binarnej i binarne adre-
sy absolutne jako argumenty
●
Języki asemblera (symboliczne)
●
kody maszynowe i adresy w postaci symbolicznej
●
Języki programowania ogólnych zastosowań
●
instrukcje symboliczne na które składa się często
wiele rozkazów komputera
●
Języki zorientowane dziedzinowo
●
programista określa co che zrobić a nie jak
Kodowanie binarne
●
Program składa się z ciągu rozkazów oraz
danych
Kodowanie binarne
●
Program składa się z ciągu rozkazów oraz
danych
●
Realizacja programu rozpoczyna się od roz-
kazu zapisanego w komórce pamięci o ad-
resie 0
Kodowanie binarne
●
Program składa się z ciągu rozkazów oraz
danych
●
Realizacja programu rozpoczyna się od roz-
kazu zapisanego w komórce pamięci o ad-
resie 0
●
Stały format rozkazów
KOD
Argument
Lista rozkazów
Symbol
Kod
Treść
DOD
001
ODE
010
ŁAD
011
POB
100
SOB
101
SOM
110
STP
111
zatrzymanie pracy zegara
(AK) + ((AD)) → AK
(AK) - ((AD)) → AK
(AK) → (AD)
((AD)) → AK
(AD) → L
(AD) → L, gdy (AK) < 0
Przykład programu binarnego
●
Zadanie
●
Dodaj do siebie zawartość dwóch komórek pa-
mięci (4 i 5) i sumę zapisz do komórki 6
Przykład programu binarnego
●
Zadanie
●
Dodaj do siebie zawartość dwóch komórek pa-
mięci (4 i 5) i sumę zapisz do komórki 6
●
Rozwiązanie
●
(4) → AK
Przykład programu binarnego
●
Zadanie
●
Dodaj do siebie zawartość dwóch komórek pa-
mięci (4 i 5) i sumę zapisz do komórki 6
●
Rozwiązanie
●
(4) → AK
●
(AK) + (5) → AK
Przykład programu binarnego
●
Zadanie
●
Dodaj do siebie zawartość dwóch komórek pa-
mięci (4 i 5) i sumę zapisz do komórki 6
●
Rozwiązanie
●
(4) → AK
●
(AK) + (5) → AK
●
(AK) → 6
Przykład programu binarnego
●
Zadanie
●
Dodaj do siebie zawartość dwóch komórek pa-
mięci (4 i 5) i sumę zapisz do komórki 6
●
Rozwiązanie
●
(4) → AK
●
(AK) + (5) → AK
●
(AK) → 6
●
koniec
Przykład programu binarnego
●
Zadanie
●
Dodaj do siebie zawartość dwóch komórek pa-
mięci (4 i 5) i sumę zapisz do komórki 6
●
Rozwiązanie
●
(4) → AK
100 00100
●
(AK) + (5) → AK
●
(AK) → 6
●
koniec
Przykład programu binarnego
●
Zadanie
●
Dodaj do siebie zawartość dwóch komórek pa-
mięci (4 i 5) i sumę zapisz do komórki 6
●
Rozwiązanie
●
(4) → AK
100 00100
●
(AK) + (5) → AK
001 00101
●
(AK) → 6
●
koniec
Przykład programu binarnego
●
Zadanie
●
Dodaj do siebie zawartość dwóch komórek pa-
mięci (4 i 5) i sumę zapisz do komórki 6
●
Rozwiązanie
●
(4) → AK
100 00100
●
(AK) + (5) → AK
001 00101
●
(AK) → 6
011 00110
●
koniec
Przykład programu binarnego
●
Zadanie
●
Dodaj do siebie zawartość dwóch komórek pa-
mięci (4 i 5) i sumę zapisz do komórki 6
●
Rozwiązanie
●
(4) → AK
100 00100
●
(AK) + (5) → AK
001 00101
●
(AK) → 6
011 00110
●
koniec
111 00000
Przykład programu binarnego
●
Zadanie
●
Dodaj do siebie zawartość dwóch komórek pa-
mięci (4 i 5) i sumę zapisz do komórki 6
●
Rozwiązanie
●
(4) → AK
100 00100
●
(AK) + (5) → AK
001 00101
●
(AK) → 6
011 00110
●
koniec
111 00000
●
pierwszy argument 0000 0111
●
drugi argument
0001 0001
●
wynik
?
Realizacja programu
0
100 00100
1
001 00101
2
011 00110
3
111 00000
4
0000 0111
5
0001 0001
6
?
AK
?
L
0
PaO
32 x 8
0
?
magistrala adresowa magA
magistrala słowowa magS
wea
wes
wys
pisz
czyt
JAL
?
?
0
weak
dod
ode
przep
weja
il
wyl
wyak
wyad
wei
Realizacja programu
0
100 00100
1
001 00101
2
011 00110
3
111 00000
4
0000 0111
5
0001 0001
6
?
AK
7
L
1
PaO
32 x 8
1
7
magistrala adresowa magA
magistrala słowowa magS
wea
wes
wys
pisz
czyt
JAL
7
132
1
weak
dod
ode
przep
weja
il
wyl
wyak
wyad
wei
Realizacja programu
0
100 00100
1
001 00101
2
011 00110
3
111 00000
4
0000 0111
5
0001 0001
6
?
AK
24
L
2
PaO
32 x 8
2
17
magistrala adresowa magA
magistrala słowowa magS
wea
wes
wys
pisz
czyt
JAL
24
37
2
weak
dod
ode
przep
weja
il
wyl
wyak
wyad
wei
Realizacja programu
0
100 00100
1
001 00101
2
011 00110
3
111 00000
4
0000 0111
5
0001 0001
6
0001 1000
AK
24
L
3
PaO
32 x 8
3
24
magistrala adresowa magA
magistrala słowowa magS
wea
wes
wys
pisz
czyt
JAL
24
102
3
weak
dod
ode
przep
weja
il
wyl
wyak
wyad
wei
Programowanie binarne
●
Zalety
●
Program nie wymaga tłumaczenia
●
Może być zrealizowany bezpośrednio po wpro-
wadzeniu do pamięci
●
Małe wymagania na pamięć
●
Wady
●
Konieczność operowania na kodach binarnych
rozkazów
●
Konieczność wyliczania adresów komórek
●
Bardzo trudna modyfikacja programu
●
Rozwiązanie dedykowane konkretnemu proceso-
rowi
Asembler
●
Zastąpienie kodów wewnętrznych kompute-
ra oraz adresów komórek pamięci w postaci
binarnej specjalnymi symbolami
●
Brak potrzeby wyliczania adresów określają-
cych położenie komórek roboczych
●
Program staje się bardziej zrozumiały
●
Łatwiejsza modyfikacja
●
Wciąż rozwiązanie ściśle związane z kon-
kretnym procesorem
Lista rozkazów
Symbol
Kod
Treść
DOD
001
ODE
010
ŁAD
011
POB
100
SOB
101
SOM
110
STP
111
zatrzymanie pracy zegara
(AK) + ((AD)) → AK
(AK) - ((AD)) → AK
(AK) → (AD)
((AD)) → AK
(AD) → L
(AD) → L, gdy (AK) < 0
Przykład programu w języku sym-
bolicznym
●
Zadanie
●
Dodaj do siebie zawartość dwóch komórek pa-
mięci (4 i 5) i sumę zapisz do komórki 6
●
Rozwiązanie
●
(4) → AK
100 00100
●
(AK) + (5) → AK
001 00101
●
(AK) → 6
011 00110
●
koniec
111 00000
●
pierwszy argument 0000 0111
●
drugi argument
0001 0001
●
wynik
?
Przykład programu w języku sym-
bolicznym
●
Zadanie
●
Dodaj do siebie zawartość dwóch komórek pa-
mięci (4 i 5) i sumę zapisz do komórki 6
●
Rozwiązanie
●
(4) → AK
100 00100
POB Arg1
●
(AK) + (5) → AK
001 00101
●
(AK) → 6
011 00110
●
koniec
111 00000
●
pierwszy argument 0000 0111
●
drugi argument
0001 0001
●
wynik
?
Przykład programu w języku sym-
bolicznym
●
Zadanie
●
Dodaj do siebie zawartość dwóch komórek pa-
mięci (4 i 5) i sumę zapisz do komórki 6
●
Rozwiązanie
●
(4) → AK
100 00100
POB Arg1
●
(AK) + (5) → AK
001 00101
DOD Arg2
●
(AK) → 6
011 00110
●
koniec
111 00000
●
pierwszy argument 0000 0111
●
drugi argument
0001 0001
●
wynik
?
Przykład programu w języku sym-
bolicznym
●
Zadanie
●
Dodaj do siebie zawartość dwóch komórek pa-
mięci (4 i 5) i sumę zapisz do komórki 6
●
Rozwiązanie
●
(4) → AK
100 00100
POB Arg1
●
(AK) + (5) → AK
001 00101
DOD Arg2
●
(AK) → 6
011 00110
ŁAD S
●
koniec
111 00000
●
pierwszy argument 0000 0111
●
drugi argument
0001 0001
●
wynik
?
Przykład programu w języku sym-
bolicznym
●
Zadanie
●
Dodaj do siebie zawartość dwóch komórek pa-
mięci (4 i 5) i sumę zapisz do komórki 6
●
Rozwiązanie
●
(4) → AK
100 00100
POB Arg1
●
(AK) + (5) → AK
001 00101
DOD Arg2
●
(AK) → 6
011 00110
ŁAD S
●
koniec
111 00000
STP
●
pierwszy argument 0000 0111
●
drugi argument
0001 0001
●
wynik
?
Przykład programu w języku sym-
bolicznym
●
Zadanie
●
Dodaj do siebie zawartość dwóch komórek pa-
mięci (4 i 5) i sumę zapisz do komórki 6
●
Rozwiązanie
●
(4) → AK
100 00100
POB Arg1
●
(AK) + (5) → AK
001 00101
DOD Arg2
●
(AK) → 6
011 00110
ŁAD S
●
koniec
111 00000
STP
●
pierwszy argument 0000 0111
Arg1: RST 7
●
drugi argument
0001 0001
●
wynik
?
Przykład programu w języku sym-
bolicznym
●
Zadanie
●
Dodaj do siebie zawartość dwóch komórek pa-
mięci (4 i 5) i sumę zapisz do komórki 6
●
Rozwiązanie
●
(4) → AK
100 00100
POB Arg1
●
(AK) + (5) → AK
001 00101
DOD Arg2
●
(AK) → 6
011 00110
ŁAD S
●
koniec
111 00000
STP
●
pierwszy argument 0000 0111
Arg1: RST 7
●
drugi argument
0001 0001
Arg2: RST 17
●
wynik
?
Przykład programu w języku sym-
bolicznym
●
Zadanie
●
Dodaj do siebie zawartość dwóch komórek pa-
mięci (4 i 5) i sumę zapisz do komórki 6
●
Rozwiązanie
●
(4) → AK
100 00100
POB Arg1
●
(AK) + (5) → AK
001 00101
DOD Arg2
●
(AK) → 6
011 00110
ŁAD S
●
koniec
111 00000
STP
●
pierwszy argument 0000 0111
Arg1: RST 7
●
drugi argument
0001 0001
Arg2: RST 17
●
wynik
?
S:
RPA
Przykład programu w języku sym-
bolicznym
●
Zadanie
●
Dodaj do siebie zawartość dwóch komórek pa-
mięci (4 i 5) i sumę zapisz do komórki 6
●
Rozwiązanie
●
(4) → AK
100 00100
POB Arg1
●
(AK) + (5) → AK
001 00101
DOD Arg2
●
(AK) → 6
011 00110
ŁAD S
●
koniec
111 00000
STP
●
pierwszy argument 0000 0111
Arg1: RST 7
●
drugi argument
0001 0001
Arg2: RST 17
●
wynik
?
S:
RPA
KON
Przykład programu w języku sym-
bolicznym
●
Zadanie
●
Dodaj do siebie zawartość dwóch komórek pa-
mięci (4 i 5) i sumę zapisz do komórki 6
●
Rozwiązanie w języku symbolicznym
POB Arg1
DOD Arg2
ŁAD S
STP
Arg1: RST 7
Arg2: RST 17
S: RPA
KON
Przykład 2 – obliczanie wartości
bezwzględnej
●
W komórce pamięci oznaczonej etykietą
Liczba znajduje się liczba całkowita ze zna-
kiem, do komórki oznaczonej etykietą Abs
należy wpisać jej wartość bezwzględną
Przykład 2 – obliczanie wartości
bezwzględnej
POB Liczba
SOM Ujemna
ŁAD Wynik
STP
Ujemna: ODE Liczba
ODE Liczba
ŁAD Wynik
STP
Liczba:
RST
-21
Wynik:
RPA
KON
Translacja z języka symbolicznego
na kody binarne
●
Zadanie wykonywane przez programy tłu-
maczące zwane asemblerami
●
Zwykle realizowane w 2 etapach
●
Każdy etap (przebieg, przejście) to czytanie
programu źródłowego od początku do końca
●
Pierwszy etap – utworzenie tablicy etykiet T2
●
Drugi etap – właściwy przekład instrukcji na
podstawie tablicy kodów T1 (stałej dla każ-
dego asemblera) i stworzonej wcześniej ta-
blicy etykiet T2
Tablica kodów rozkazów
●
Przyporządkowuje kodom symbolicznym
rozkazów odpowiednie kody binarne
Symbol
Kod
Treść
DOD
001
ODE
010
ŁAD
011
POB
100
SOB
101
SOM
110
STP
111
zatrzymanie pracy zegara
(AK) + ((AD)) → AK
(AK) - ((AD)) → AK
(AK) → (AD)
((AD)) → AK
(AD) → L
(AD) → L, gdy (AK) < 0
Składnia instrukcji asemblera
●
Instrukcję można podzielić na 3 pola:
[<etykieta>:] <KOD> [<Argument>]
●
Etykieta to nazwa zakończona dwukropkiem
●
Etykieta może zostać pominięta
●
Kod jest wymagany, może to być kod rozka-
zu lub dyrektywa (RST, RPA, KON)
●
Argument jest opcjonalny (zależy od kodu
rozkazu)
●
Argumentem może być etykieta lub liczba
dziesiętna
Pierwszy przebieg asemblacji
Start
Licznik ← 0
KON ?
Czytaj
instrukcję
Dodaj etykietę
i Licznik do
tablicy etykiet
tak
nie
Etykieta ?
tak
nie
Licznik ← Licznik + 1
Tworzenie tablicy etykiet
POB Liczba
SOM Ujemna
ŁAD Wynik
STP
Ujemna: ODE Liczba
ODE Liczba
ŁAD Wynik
STP
Liczba:
RST
-21
Wynik:
RPA
KON
Tworzenie tablicy etykiet
POB Liczba
SOM Ujemna
ŁAD Wynik
STP
Ujemna: ODE Liczba
ODE Liczba
ŁAD Wynik
STP
Liczba:
RST
-21
Wynik:
RPA
KON
Tworzenie tablicy etykiet
POB Liczba
SOM Ujemna
ŁAD Wynik
STP
Ujemna: ODE Liczba
ODE Liczba
ŁAD Wynik
STP
Liczba:
RST
-21
Wynik:
RPA
KON
Tworzenie tablicy etykiet
POB Liczba
SOM Ujemna
ŁAD Wynik
STP
Ujemna: ODE Liczba
ODE Liczba
ŁAD Wynik
STP
Liczba:
RST
-21
Wynik:
RPA
KON
Tworzenie tablicy etykiet
POB Liczba
SOM Ujemna
Ujemna 4
ŁAD Wynik
STP
Ujemna: ODE Liczba
ODE Liczba
ŁAD Wynik
STP
Liczba:
RST
-21
Wynik:
RPA
KON
Tworzenie tablicy etykiet
POB Liczba
SOM Ujemna
Ujemna 4
ŁAD Wynik
STP
Ujemna: ODE Liczba
ODE Liczba
ŁAD Wynik
STP
Liczba:
RST
-21
Wynik:
RPA
KON
Tworzenie tablicy etykiet
POB Liczba
SOM Ujemna
Ujemna 4
ŁAD Wynik
STP
Ujemna: ODE Liczba
ODE Liczba
ŁAD Wynik
STP
Liczba:
RST
-21
Wynik:
RPA
KON
Tworzenie tablicy etykiet
POB Liczba
SOM Ujemna
Ujemna 4
ŁAD Wynik
STP
Ujemna: ODE Liczba
ODE Liczba
ŁAD Wynik
STP
Liczba:
RST
-21
Wynik:
RPA
KON
Tworzenie tablicy etykiet
POB Liczba
SOM Ujemna
Ujemna 4
ŁAD Wynik
Liczba
8
STP
Ujemna: ODE Liczba
ODE Liczba
ŁAD Wynik
STP
Liczba:
RST
-21
Wynik:
RPA
KON
Tworzenie tablicy etykiet
POB Liczba
SOM Ujemna
Ujemna 4
ŁAD Wynik
Liczba
8
STP
Wynik
9
Ujemna: ODE Liczba
ODE Liczba
ŁAD Wynik
STP
Liczba:
RST
-21
Wynik:
RPA
KON
Tworzenie tablicy etykiet
POB Liczba
SOM Ujemna
Ujemna 4
ŁAD Wynik
Liczba
8
STP
Wynik
9
Ujemna: ODE Liczba
ODE Liczba
ŁAD Wynik
STP
Liczba:
RST
-21
Wynik:
RPA
KON
Tworzenie tablicy etykiet
POB Liczba
SOM Ujemna
Ujemna 4
ŁAD Wynik
Liczba
8
STP
Wynik
9
Ujemna: ODE Liczba
ODE Liczba
ŁAD Wynik
STP
Liczba:
RST
-21
Wynik:
RPA
KON
Drugi przebieg asemblacji
Start
Licznik ← 0
Czytaj
instrukcję
KON ?
RPA ?
RST ?
Kod ?
Argument ?
Etykieta ?
Błąd
Wpisz binarny kod
Jest w T2 ?
tak
tak
tak
tak
nie
nie
nie
Stop
Wyprowadź
utworzoną
linię kodu
Licznik ← Licznik + 1
Wpisz stałą
jako linię kodu
nie
Błąd
Wpisz liczbę
jako argument
Instrukcja bez argumentu
tak
Wpisz adres z
T2 jako
argument
Generacja kodu wynikowego
POB Liczba
100 01000
SOM Ujemna
ŁAD Wynik
STP
Ujemna: ODE Liczba
ODE Liczba
ŁAD Wynik
STP
Liczba:
RST
-21
Wynik:
RPA
KON
Generacja kodu wynikowego
POB Liczba
100 01000
SOM Ujemna
110 00100
ŁAD Wynik
STP
Ujemna: ODE Liczba
ODE Liczba
ŁAD Wynik
STP
Liczba:
RST
-21
Wynik:
RPA
KON
Generacja kodu wynikowego
POB Liczba
100 01000
SOM Ujemna
110 00100
ŁAD Wynik
011 01001
STP
Ujemna: ODE Liczba
ODE Liczba
ŁAD Wynik
STP
Liczba:
RST
-21
Wynik:
RPA
KON
Generacja kodu wynikowego
POB Liczba
100 01000
SOM Ujemna
110 00100
ŁAD Wynik
011 01001
STP
111 00000
Ujemna: ODE Liczba
ODE Liczba
ŁAD Wynik
STP
Liczba:
RST
-21
Wynik:
RPA
KON
Generacja kodu wynikowego
POB Liczba
100 01000
SOM Ujemna
110 00100
ŁAD Wynik
011 01001
STP
111 00000
Ujemna: ODE Liczba
010 01000
ODE Liczba
ŁAD Wynik
STP
Liczba:
RST
-21
Wynik:
RPA
KON
Generacja kodu wynikowego
POB Liczba
100 01000
SOM Ujemna
110 00100
ŁAD Wynik
011 01001
STP
111 00000
Ujemna: ODE Liczba
010 01000
ODE Liczba
010 01000
ŁAD Wynik
STP
Liczba:
RST
-21
Wynik:
RPA
KON
Generacja kodu wynikowego
POB Liczba
100 01000
SOM Ujemna
110 00100
ŁAD Wynik
011 01001
STP
111 00000
Ujemna: ODE Liczba
010 01000
ODE Liczba
010 01000
ŁAD Wynik
011 01001
STP
Liczba:
RST
-21
Wynik:
RPA
KON
Generacja kodu wynikowego
POB Liczba
100 01000
SOM Ujemna
110 00100
ŁAD Wynik
011 01001
STP
111 00000
Ujemna: ODE Liczba
010 01000
ODE Liczba
010 01000
ŁAD Wynik
011 01001
STP
111 00000
Liczba:
RST
-21
Wynik:
RPA
KON
Generacja kodu wynikowego
POB Liczba
100 01000
SOM Ujemna
110 00100
ŁAD Wynik
011 01001
STP
111 00000
Ujemna: ODE Liczba
010 01000
ODE Liczba
010 01000
ŁAD Wynik
011 01001
STP
111 00000
Liczba:
RST
-21
11101011
Wynik:
RPA
KON
Generacja kodu wynikowego
POB Liczba
100 01000
SOM Ujemna
110 00100
ŁAD Wynik
011 01001
STP
111 00000
Ujemna: ODE Liczba
010 01000
ODE Liczba
010 01000
ŁAD Wynik
011 01001
STP
111 00000
Liczba:
RST
-21
11101011
Wynik:
RPA
00000000
KON
Podsumowanie
●
Klasyfikacja języków programowania
●
Przykłady zapisu prostych programów
w języku binarnym
●
Język asemblera i przykłady programów
●
Składnia instrukcji asemblera
●
Algorytm pracy asemblera