10 Asembler

background image

Programowanie w językach niskie-

go poziomu

Wykład nr 10 z Podstaw Informatyki

background image

Języki programowania

Języki maszynowe (kod maszynowy)

Języki asemblera (symboliczne)

Języki programowania ogólnych zastosowań

Języki zorientowane dziedzinowo

background image

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

background image

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

background image

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

background image

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

background image

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

background image

Kodowanie binarne

Program składa się z ciągu rozkazów oraz
danych

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

?

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

?

background image

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

?

background image

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

?

background image

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

?

background image

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

?

background image

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

?

background image

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

?

background image

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

background image

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

background image

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

background image

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ą

background image

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

background image

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

background image

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

background image

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

background image

Pierwszy przebieg asemblacji

Start

Licznik ← 0

KON ?

Czytaj

instrukcję

Dodaj etykietę

i Licznik do

tablicy etykiet

tak

nie

Etykieta ?

tak

nie

Licznik ← Licznik + 1

background image

Tworzenie tablicy etykiet

POB Liczba

SOM Ujemna

ŁAD Wynik

STP

Ujemna: ODE Liczba

ODE Liczba

ŁAD Wynik

STP

Liczba:

RST

-21

Wynik:

RPA

KON

background image

Tworzenie tablicy etykiet

POB Liczba

SOM Ujemna

ŁAD Wynik

STP

Ujemna: ODE Liczba

ODE Liczba

ŁAD Wynik

STP

Liczba:

RST

-21

Wynik:

RPA

KON

background image

Tworzenie tablicy etykiet

POB Liczba

SOM Ujemna

ŁAD Wynik

STP

Ujemna: ODE Liczba

ODE Liczba

ŁAD Wynik

STP

Liczba:

RST

-21

Wynik:

RPA

KON

background image

Tworzenie tablicy etykiet

POB Liczba

SOM Ujemna

ŁAD Wynik

STP

Ujemna: ODE Liczba

ODE Liczba

ŁAD Wynik

STP

Liczba:

RST

-21

Wynik:

RPA

KON

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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


Wyszukiwarka

Podobne podstrony:
Asembler wykład 09-10-2000
Asembler wykład 16-10-2000, Zaczynamy (pracę) z programem Turbo Assembler, Rozdział 1
Asembler wykład 30-10-2000, Assembler - wykład
Asembler wykład 02-10-2000, Maciej Kostyra
10 Metody otrzymywania zwierzat transgenicznychid 10950 ppt
10 dźwigniaid 10541 ppt
wyklad 10 MNE
Kosci, kregoslup 28[1][1][1] 10 06 dla studentow
10 budowa i rozwój OUN
10 Hist BNid 10866 ppt
Asembler ARM przyklady II
POKREWIEŃSTWO I INBRED 22 4 10
Prezentacja JMichalska PSP w obliczu zagrozen cywilizacyjn 10 2007

więcej podobnych podstron