Wyklad02

Wyklad02



Wykład 2

Oprogramowanie systemowe. Asembler

Projektowanie programu I

Proces przygotowania programu dla systemu komputerowego

Przebieg procesu projektowania systemu komputerowego

Hierarchia oprogramowania

Poziom

Opis

Program aplikacyjny

Oprogramowanie zaprojektowane dla określonego zastosowania

Język wysokiego poziomu (HLL)

Programy są kompilowane z HLL na język asemblera lub maszynowy, n.p. C++, Pascal, Java, Visual Basic.

System operacyjny

Zawiera procedury, które mogą być wywoływane z programów napisanych w HLL lub asemblerze. Może być wyposażony w interfejs programów aplikacyjnych (API).

Asembler (ASM)

Stosuje mnemoniki instrukcji bezpośrednio odpowiadające rozkazom języka maszynowego.

Język Maszynowy (ML)

Instrukcje numeryczne i operandy które mogą być umieszczone w pamięci komputera i bezpośrednio wykonywane przez procesor.

Oprogramowanie systemowe

1.    Oprogramowanie systemowe:

asemblery, loader-y i konsolidatory, makroasemblery, kompilatory, systemy operacyjne, systemy baz danych, edytory tekstu, interaktywne debuggery.

2.    Różnica pomiędzy programowaniem

aplikacyjnym a programowaniem systemowym

Funkcje narzędzi

Program

źródłowy

• Zależność od procesora

- różne formaty instrukcji, różne rozkazy


Narzędzia wspomagające poszczególne etapy procesu projektowania

•    Programy komputerowe

- kompilator

k — asembler (ew. makroasembler)

\\ konsolidator („ linker” - program łączący) y\loader (program ładujący)

•    Urządzenia pomiarowe (testujące)

\    - wspomaganie projektowania

\    - weryfikacja drogą symulacji

\    Posługują się dobrze zrozumiałą dla człowieka symboliką.

•Elementami wspomagającymi programowanie -biblioteki gotowych programów, O.S. -debugger -symulator


Elementy wspomagające projektowanie

• Biblioteki - gotowe programy lub fragmenty programów, wykonujących standardowe operacje (np. mnożenie, dzielenie liczb itp..)

•    Debuger - umożliwia kontrolowane wykonywanie programu przez system, na przykład krok po kroku, w celu obserwacji zgodności działania programu z zamiarem jego autora.

•    Symulator - symuluje zachowanie się systemu podczas wykonania programu (tańsze i wygodniejsze niż debuger).

Urządzenia pomiarowe służą do wspomagania weryfikacji. Najczęściej używane są testery cyfrowe, które umożliwiają wizualizację lub rejestrację stanów logicznych.

Asembler

Porównanie HLL i ASM

Typ zastosowań

HLL

ASM

Oprogramowanie ogólnego przeznaczenia na jedną platformę komputerową

Struktury formalne języków ułatwiają zorganizowanie programu

Brak struktur formalnych

Oprogramowanie ogólnego przeznaczenia na wiele platform komputerowych

Przenośne

Trudne do wykonania

•    Niskopoziomowy język programowania związany z konkretnym procesorem ściśle odpowiadający zestawowi instrukcji języka maszynowego

•    Każda instrukcja ASM odpowiada dokładnie jednej instrukcji ML

( ASM    ML )

Użyteczność znajomości ASM

•    Poznawanie jak instrukcje HLL są tłumaczone na ML

-    Poznawanie szczegółów „ukrytych” w implementacji instrukcji HLL

•    Poznawanie architektury komputera

-    Bezpośredni dostęp do pamięci, sterownika wideo, karty dźwiękowej, klawiatury...

•    Zwiększenie szybkości aplikacji

-    Bezpośredni dostęp do hardware’u (np.: bezpośredni dostęp do portów zamiast wywołania systemowego)

-    Dobry program ASM jest szybszy i zajmuje mniej miejsca (krytyczne fragmenty programu w ASM)

Aplikacje ASM

• Programy aplikacyjne rzadko są w całości pisane w ASM

- tylko krytyczne (ze względu na czas) części pisane są w ASM

° np. (1): procedura interfejsu (wywoływana z programów HLL) dla zapewnienia bezpośredniego dostępu do

hardware5 u

° np. (2): sterowniki urządzeń (wywoływane przez OS)

• ASM często używany do „wbudowanych” programów (zapisanych w PROM))

• urządzenia mobilne do gier, mikrokontrolery (samochody, maszyny przemysłowe...), sprzęt telekomunikacyjny...

Bardzo szybkie i zwarte lecz przystosowane tylko do jednego typu procesora

Formalizm języka asemblera

Język asemblera - sposób przedstawiania programu, tak aby był on zrozumiały dla asemblera (bliski językowi maszynowemu - mały nakład pracy przy tłumaczeniu)

Język asemblera jest strukturą sformalizowaną. Rządzą nim: reguły leksykalne reguły składni

Asembler typowo rozróżnia jednostki leksykalne (znaczeniowe):

-    program,

-    wiersz,

-    instrukcja,

-    operand.

Przykładowy program w ASM

;zaczynam pisać program

ORG 0000H


jrozmieść program od adresu 0

DANE EQU 10H


;przypisz nazwie DANE wartość 10


heksadec.

START: MOV A, #DANE ;wpisz dane do rejestru A


JMP START


;skok do linii oznaczonej etykietąSTART


Formalizm języka asemblera

W języku asemblera:

-    program składa się z oddzielnych wierszy

-    w jednym wierszu umieszcza się jedno polecenie

-    instrukcja mikroprocesora

-    dyrektywa asemblera

-    opcjonalnie komentarz.


Formalna składnia języka asemblera.



<program> <wiersz> <koniec pliku > | <wiersz> <program>

-    program jest ciągiem 1 lub wielu wierszy

<wiersz> ;:= <definicja> \ <dyrektywa> | <polecenie> \ <komentarz>

-    wiersz zawiera definicję, polecenie lub komentarz

<definicja> ;:= <symbol > = <operand> <komentarz>

-    definicja jest symbolem po którym następuje znak przypisania oraz operand

<polecenie> ;;= <etykieta> <instrukcja> <komentarz> | <instrukcja> <komentarz> | <komentarz>

-    etykieta i instrukcja są w poleceniu opcjonalne

<etykieta> ;;= <symbol>:

-    etykieta jest symbolem po którym umieszczono dwukropek

<instrukcja> :;= <rozkaz> <operand> | <rozkaz>

-    operand jest opcjonalny w instrukcji


Mnemoniki rozkazów

Mnemonik + wskaźnik (wskaźniki) trybu adresowania i predefiniowane nazwy rejestrów -» rozpoznanie instrukcji procesora (kod instrukcji)

Mnemoniki w przykładowym języku asemblera:

•    LJMP = skocz do adresu podanego w polu argumentów instrukcji,

•    CPL = neguj bit, którego adres podano w argumencie,

•    MOV = prześlij argument źródłowy do lokalizacji argumentu

przeznaczenia,

•    LCALL = wywołaj procedurę, której adres podano w argumencie,

•    SJMP = skocz do adresu wyznaczonego na podstawie stanu licznika

rozkazów i przesunięcia zawartego w argumencie,

•    DJNZ = zmniejsz o jeden stan rejestru lub komórki pamięci, a

następnie skocz, jeżeli wynik zmniejszenia jest różny od zera,

•    RET = wróć z podprogramu

<komentarz> :;= ;<tekst> <koniec linii> | <koniec linii>

-    komentarz przed końcem linii jest opcjonalny

<rozkaz> ;:= ADD | ADDC | SUB | SUBC |... | DJNZ

-    rozkazami są: ADD,ADDC,SUB,SUBC,...,DJNZ

<dyrektywa> ;:= DB |... | ORG

-    dyrektywami są: DB,...,ORG

<operand> ::= <symbol > [ <liczba>

-    operand jest symbolem lub liczbą

<symbol>::~ <litera> <znak alfanumerycznym ...<znak alfanumerycznym <znak alfanumerycznym::=<literam | <cyfram

Tryb adresowania

Wskaźniki trybu adresowania

-    identyfikują tryb adresowania

-    są zwykle jednoznakowymi symbolami, które umieszcza się przed, lub po argumencie

W przykładowym języku asemblera:

•    znak # umieszczony przed argumentem w skazuje użycie adresowania natychmiastowego (tj. argumentem jest stała występująca po znaku #)

•    znak @ umieszczony przed argumentem wskazuje użycie adresowania pośredniego

•    brak znaku umieszczonego przed argumentem wskazuje użycie adresowania bezpośredniego

Dyrektywy asemblera nie odpowiadają instrukcjom ML. Nie są tłumaczone na ML. Służą do sterowania pracą asemblera.

Posiadają przypisane zwykle kilkuznakowe symbole. Dyrektywy między innymi służą ao:

•    nadawania adresu początkowego kodowi maszynowemu linii programu

•    oznaczenia początku segmentu, który ma być tłumaczony na postać reloKowalną

•    sterowania wykonaniem asemblacji

•    zarezerwowania obszaru w pamięci i przypisaniu wartości poszczególnym bajtom

-    ORG,

-    ABS, REL

-    IF, ENDIF

-    DB, DW

Funkcje asemblera

•    Zamienić mnemoniki kodów operacji na odpowiedniki w języku maszynowym

•    Zamienić symboliczne operandy na odpowiadające im adresy ich lokalizacji w komputerze

•    Zbudować instrukcje maszynowe we właściwym formacie

•    Zamienić stałe na ich wewnętrzne reprezentacje maszynowe

•    Utworzyć program wynikowy i listing

Dyrektywa

inicjallzacji

Dyrektywa

adresu

przypisania

instrukcji

wartości

komentarz

;zaczy&

\m pisać prograjfK

ORG

0000H

jrozmieść program od adresu 0

DANE

START:

EQU 10H

MOV A, #DANE JMP START

;przypisz nazwie DANE wartość 10 heksadec.

,’wpisz dane do rejestru A

;skok do linii oznaczonej etykietą START

Nazwa

etykieta

instrukcji

Ilustracja elementów składowych programu.

Zasada działania asemblera

Zasada działania asemblera

Asembler pobiera plik źródłowy i zamienia umieszczony tam tekst (w jęz. asemblera) na ciąg binarnych rozkazów maszynowych (język maszynowy).

Produktem asemblera są :

-    plik wynikowy (zwykle z rozszerzeniem .OBJ lub .HEX)

-    plik listingu programu (rozszerzenie .LST).

Plik wynikowy zawiera program w języku maszynowym zapisany w formacie odpowiednim do dalszego przetwarzania przez inne programy narzędziowe.

EQU 97H LJMP START ORG 100H CPL LED MOV A,#10 LCALL DELAY S JMPSTART MOV R0,#0FFH DJNZ R0, LOOP DJNZ ACC, DELAY RET


1    0097 LED

2    0000: 02 01 00

3    0100:

4    0100: B2 97 START:

5    0102: 74 0A

6    0104: 12 01 09

7    0107: 80 F7

8    0109: 78 FF DELAY:

9    010B: D8 FE LOOP:

10    010D: D5 E0 F9

11    0110:22

Program wjęzyku asemblera

Funkcje

asemblera



mmammage



MMMM


Proces tłumaczenia programu

1.    Analiza leksykalna.

2.    Analiza syntaktyczna (składniowa).

3.    Określenie ilości bajtów zajmowanych przez kod każdej instrukcji.

4.    Przypisanie instrukcjom odpowiadających im kodów.

a)    tłumaczenie rozkazu na kod maszynowy,

b)    przypisanie wartości stałym,

c)    przypisanie wartości adresom.

5.    Określenie miejsca w pamięci, w którym ma być umieszczony uzyskany kod maszynowy.

LED

EQU

97 H

LJMP

START

ORG

100H

START:

CPL

LED

MOV

A,#10

LCALL

DELAY

SJMP

START

DELAY:

MOV

R0,#0FFH

LOOP:

DJNZ

R0, LOOP

DJNZ

RET

ACC, DELAY

Program w przykładowym języku asemblera.

Tabela kodów instrukcji


Mnemonik operacji

Liczba bajtów

kod

LJMP

3

02 aa aa

CPL

2

B2al

MOV A

2

74 cc

LCALL

3

12 aa aa

SJMP

2

80 aw

DJNZ R0

2

D8 aw

DJNZ <komórka>

3

D5 al aw

RET

1

22

Uwagi:

aa aa    -    dwubajtowy adres absolutny, pierwszy najbardziej znaczący bajt

a1    -    Jednobajtowy adres absolutny

aw    -    jednobajtowy adres względny

cc    *    jednobajtowa stała

<komórka>    -    predefiniowana nazwa komórki lub jednobajtowy adres absolutny


Kody maszynowe instrukcji procesora niezbędne do zakodowania przykładowego programu.

Wiersz

Etykieta/nazwa

Mnemonik/dyrektywa

wsk

Arg U\

Arg Ul

1

LED

EQU

97H

2

LJMP

START

3

ORG

100H

4

START:

CPL

LED

5

MOV A,

#

10

6

LCALL

DELAY

7

SJMP

START

8

DELAY:

MOV R0,

#

OFFH

9

LOOP:

DJNZ R0,

LOOP

10

DJNZ

ACC,

DELAY

11

RET

Wsk: wskaźnik adresowania

Wyodrębnienie składowych przykładowego programu.

lc=oooo r"

— • 02 LJMP START

•    aa

•    aa

lc=oioo r"

- • B2 START: CPL LED al

LC=0102 n"

- • 74 MOV A,#10

cc

LC=0104 r"

— • 12 LCALL DELAY

•    aa

•    aa

LC=0107 r"

- • 80 SJMP START aw

LC=0109 r*

- • 78 DELAY: MOV R0f#0FFH

cc . . . __

LC=010B rj

— • D8 LOOP: DJNZ R0, LOOP aw

LC=010D r"

-• D5 DJNZ ACC, DELAY al

. • _ _ __ _................

lc=oi 1 o rT~ ' 22 _________________„________________RET ..............................

LC=0000

02

LJMP

START

aa

aa

B2

START:

CPL

LED

97

74

MOV

A,m

OA

12

LCALL DELAY

aa

aa

80

SJMP

START

F7

=

78

DELAY:

MOV

RO,#OFFH

FF

D8

LOOP:

DJNZ

RO, LOOP

FE

D5

DJNZ

A CC, DELAY

EO

F9

22

RET

"..............-...........1

Dodatkowe tłumaczenie przykładowego programu z podstawieniem wartości stałych i wartości przesunięć względnych.


LC=0100

LC=0102

LC=0104

LC=0107

LC=0109

LC=Q10B

L0010D

L00110

lc=oooo r~

- 02 LJMP START 01 00

lc=oioo

B2 START: CPL LED 97

LC=0102

74 MOV A, #10 OA

LC=0104

12 LCALL DELAY 01 09

LC=0107

80 SJMP START F7

LC=0109 r~^

^ 78 DELAY: MOV R0,#0FFH FF

LC=010B r"

D8 LOOP: DJNZ RO, LOOP FE

LC=010D

D5 DJNZ ACCf DELAY

•    EO

•    F9

LC=0110 f f“* 22 RET i

Finalne tłumaczenie przykładowego programu z podstawieniem wartości stałych i wartości przesunięć względnych.

Tabela symboli

Symbol

1. Bajtów

Bajt #1

Bajt #2

LED

1

97

-

START

2

01

00

DELAY

2

01

09

LOOP

2

01

IB


Kompletna tablica symboli dla przykładowego programu.

EQU 97H LJMP START ORG 100H CPL LED MOV A,#10 LCALL DELAY SJMP START MOV R0,#0FFH DJNZ R0, LOOP DJNZ ACC, DELAY RET


1    0097 LED

2    0000: 02 01 00

3    0100:

4    0100: B2 97 START:

5    0102: 74 0A

6    0104: 12 01 09

7    0107: 80 F7

8    0109: 78 FF DELAY:

9    010B: D8 FE LOOP:

10    010D: D5 E0 F9

11    0110:22


Problem odwołań w przód

Odwołanie w przód: do etykiety, która zdefiniowana jest w dalszej części programu

SYMTAB


Asembler dwuprzejściowy

A)    etap zapisywania tablicy symboli (odwołań) pierwsze

przejście

B)    etap generacji kodu -> drugie przejście

ad A) Pierwsze przejście: dla każdego wiersza:

1.    sprawdzenie składni. Jeżeli napotkano błędy, odpowiednia informacja wpisywana jest do pliku listingu (rozszerzenie .LST).

2.    przydzielenie pamięci niezbędnej dla kodu programu (alokacja)

3.    jeżeli w pierwszym przejściu wykryto błędy składni -> kończy pracę.

Ad B) “obraz” bajtów, które będą załadowane pod poszczególne adresy w pamięci operacyjnej (nadanie wartości).

1.    Ustala położenie poszczególnych bajtów w pamięci. Początkowo asembler przyjmuje domyślną wartość dla licznika lokalizacji (LC).

2.    Dla każdej linii tworzy odpowiadający jej kod.

3.    Rezultat jest zapisywany do pliku listingu (dla analizy przez programistę).

4.    Kod programu zostaje zapisany do pliku wynikowego (.OBJ lub .HEX), jeżeli nie wystąpiły błędy = koniec przetwarzanie pliku źródłowego.

Etapy w procesie przygotowania programu


Struktury danych asemblera

•    Tablica kodów instrukcji (OPTAB)

•    Tablica symboli (SYMTAB)

•    Licznik lokalizacji (LOCCTR)



Wyszukiwarka

Podobne podstrony:
DSC1200376 odzaie roalazbw 1 ercmteMure pipcescu asembler przytaedy Program dla procesora można wyge
29122 Kruk S Asembler Kurs programowania dla średnio zaawansowanych Stanisław KRUK KURS PROGRAM
13 SWB - Programowanie mikrokontrolerów - wykład 10a®*Etykiety asemblera Zadaniem etykiet jest
14 SWB - Programowanie mikrokontrolerów - wykład 10a®*Dyrektywy asemblera Polecenie dla kompilatora,
Programowanie Równoległe i Rozproszone Wykład 2 Pracuje w systemie operacyjnym LINUX. Zbudowany prze
Treści programowe WYKŁADY W1. System wspomagania rozwoju OZE. Certyfikacja wykonawców instalacji OZE
System operacyjny 10 Program wykładu 1.    Wprowadzenie •    Co to jes
Program wykładów (współczesne systemy polityczne) 1.    Pojęcia : system polityczny,
P3310713 Studia I stopnia Wykłady 3 i 4 Tomasz Frołowicz Metodyka WFPodstawa programowa a program na
Plan wykładu a Ewolucja systemów baz danych a Relacyjne systemy baz danych i język SQL a Projek
Semestr VII WYKŁADY: Pojęcie i rola oprogramowania systemów komputerowych. Bibliografia i programogr
skanuj0015 (189) 28.11.2005 GÓRNICTWO OGOLNE - wykład 7 emat: Systemy eksploatacji podziemnej węgla

więcej podobnych podstron