02 TD, urządzenia, start [pub]

background image

Oprogramowanie

podstawowe trybu

rzeczywistego

Cd.: Turbo Debugger, wybrane

urządzenia, zimny start

background image

Co dziś będzie…

• Powtórzenie – program Hello0,

kompilacja i uruchamianie

Wybrane urządzenia

:

– CMOS,
– zegar,
– generator dźwięku,
– ekran,
– klawiatura

• BIOS i DOS – jak startuje system

2

background image

Pierwszy program 16-bitowy

„pod DOS”

2 nazwa

SEGMENT

4

ASSUME CS:nazwa, DS:nazwa

11napis

DB 0AH, 0DH, "Hej!", 0AH, 0DH, '$‘

5 start:

PUSH CS

6

POP DS.

12

MOV DX,OFFSET napis

9

MOV AH,9

10

INT 21H

7 koniec:

MOV AH,4CH

8

INT 21H

3 nazwa

ENDS

1

END start

3

background image

Pierwszy program 16-bitowy

„pod DOS”

2

nazwa

SEGMENT

4

ASSUME CS:nazwa, DS:nazwa

11napis

DB 0AH, 0DH, "Hej!", 0AH, 0DH, '$‘

5 start:

PUSH CS

6

POP DS.

12

MOV DX,OFFSET napis

9

MOV AH,9

10

INT 21H

7 koniec:

MOV AH,4CH

8

INT 21H

3

nazwa

ENDS

1

END start

4

background image

Pierwszy program 16-bitowy

„pod DOS”

2

nazwa

SEGMENT

4

ASSUME CS:nazwa, DS:nazwa

11napis

DB 0AH, 0DH, "Hej!", 0AH, 0DH, '$‘

5 start:

PUSH CS

6

POP DS.

12

MOV DX,OFFSET napis

9

MOV AH,9

10

INT 21H

7 koniec:

MOV AH,4CH

8

INT 21H

3

nazwa

ENDS

1

END start

5

background image

Pierwszy program 16-bitowy

„pod DOS”

2

nazwa

SEGMENT

4

ASSUME CS:nazwa, DS:nazwa

11napis

DB 0AH, 0DH, "Hej!", 0AH, 0DH, '$‘

5

start:

PUSH CS

6

POP DS.

12

MOV DX,OFFSET napis

9

MOV AH,9

10

INT 21H

7 koniec:

MOV AH,4CH

8

INT 21H

3

nazwa

ENDS

1

END

start

6

background image

Pierwszy program 16-bitowy

„pod DOS”

2

nazwa

SEGMENT

4

ASSUME CS:nazwa, DS:nazwa

11napis

DB 0AH, 0DH, "Hej!", 0AH, 0DH, '$‘

5

start:

PUSH CS

6

POP DS

12

MOV DX,OFFSET napis

9

MOV AH,9

10

INT 21H

7 koniec:

MOV AH,4CH

8

INT 21H

3

nazwa

ENDS

1

END start

7

background image

Pierwszy program 16-bitowy

„pod DOS”

2

nazwa

SEGMENT

4

ASSUME CS:nazwa, DS:nazwa

11napis

DB 0AH, 0DH, "Hej!", 0AH, 0DH, '$‘

5

start:

PUSH CS

6

POP DS

12

MOV DX,OFFSET napis

9

MOV AH,9

10

INT 21H

7

koniec:

MOV AH,4CH

8

INT 21H

3

nazwa

ENDS

1

END start

8

background image

Pierwszy program 16-bitowy

„pod DOS”

2

nazwa

SEGMENT

4

ASSUME CS:nazwa, DS:nazwa

11

napis

DB 0AH, 0DH, "Hej!", 0AH, 0DH, '$‘

5

start:

PUSH CS

6

POP DS

12

MOV DX,OFFSET napis

9

MOV AH,9

10

INT 21H

7

koniec:

MOV AH,4CH

8

INT 21H

3

nazwa

ENDS

1

END start

9

background image

Pierwszy program 16-bitowy

„pod DOS”

2

nazwa

SEGMENT

4

ASSUME CS:nazwa, DS:nazwa

11

napis

DB 0AH, 0DH, "Hej!", 0AH, 0DH, '$‘

5

start:

PUSH CS

6

POP DS

12

MOV DX,OFFSET napis

9

MOV AH,9

10

INT 21H

7

koniec:

MOV AH,4CH

8

INT 21H

3

nazwa

ENDS

1

END start

10

background image

Kompilacja

• e:\Adam\>e:\tasm\bin\tasm /l /zi hello0
Turbo Assembler Version 4.1 Copyright

(c) 1988, 1996 Borland International

Assembling file: hello0.ASM
Error messages: None
Warning messages: None
Passes: 1
Remaining memory: 397k

11

background image

„Listing”

12

background image

„Listing”

13

background image

Łączenie i wykonanie

• e:\>e:\tasm\bin\tlink /v hello0
Turbo Link Version 7.1.30.1. Copyright (c)

1987, 1996 Borland International

Warning: No stack

E:\>hello0

Hej!

E:\>

14

background image

TD – program z „debug

information”

15

background image

TD – program po

załadowaniu

16

background image

Po PUSH CS

17

background image

Po POP DS

18

background image

Po ładowaniu DX

19

background image

Po ustawieniu AH

20

background image

Po wypisaniu „Hej!” na

konsoli

21

background image

Ekran użytkownika (AltF5)

22

background image

Po ładowaniu AH

23

background image

Koniec…

24

background image

A tak wyglądał ekran AFD…

25

background image

Wybrane urządzenia - CMOS

• Na płycie głównej urządzenia zewnętrzne z

podtrzymaniem bateryjnym:

– pamięć konfiguracyjna (CMOS)

– Zegar czasu rzeczywistego (licznik impulsów z

generatora)

• Dostęp do komórki pamięci CMOS:

– O adresie ustawionym w porcie o adresie 70H

– Przez port o adresie 071H w przestrzeni I/O

• Np. odczyt komórki 8 CMOS do AL:

– MOV AL,8

– OUT 70H,AL

– JMP $+2

– IN AL,71H

26

background image

Wybrane urządzenia –

CMOS

27

background image

Wybrane urządzenia - zegar

• Zegar czasu rzeczywistego generuje sygnał

przerwania IRQ0

• co 55ms, tzn. 18,2 razy na sekundę

• Jeśli IF=1, sterownik przerwań generuje

przerwanie nr 8

• Podprogram obsługi przerwania

– aktualizuje czterobajtowy licznik w pamięci pod

adresem 0:46CH (licznik zwiększany o 1 co 55ms)

– zmniejsza o 1 wartość jednobajtowego licznika pod

adresem 0:440H

– jak wszystkie podprogramy obsługi przerwań

zewnętrznych:

• MOV AL,20H ; kod EOI (End Of Interrupt)

• OUT 20H,AL ; port sterownika przerwań

28

background image

29

background image

Wybrane urządzenia –

generator dźwięku

• Blokowanie dźwięku (jak bramka A20, czy

reset) przez sterownik klawiatury – port

61H w przestrzeni I/O

• Zera na bitach 0 i 1 – blokują

IN AL,61H

; odczytanie portu 61H...

AND AL,0FCH ; maskowanie speaker'a...
OUT 61H,AL ; zapisanie - wyłączenie speaker'a

Jedynki na bitach 0 i 1 – zezwalają na

dźwięk

IN AL,61H

; odczytanie portu 61H...

OR AL,3

; odblokowanie...

OUT 61H,AL ; i zapisanie - włączenie

30

background image

31

background image

Wybrane urządzenia –

generator dźwięku

• Wysokością dźwięku steruje rejestr

dostępny przez port 42H, po wpisaniu

wartości 0B6H do portu 43H

• MOV AL,0B6H ;

adres...

• OUT 43H,AL

;

do rejestru 43H;

• MOV AL,DL

;

wys. dźwięku - mniej znaczący B

• OUT 42H,AL
• MOV AL,DH

;

wys. dzwieku - bardziej znaczacy

• OUT 42H,AL

32

background image

Wybrane urządzenia - ekran

• W IBM PC pamięć obrazu na karcie graficznej to tzw.

„wyświetlana pamięć”: dwudostępne urządzenie

pamiętające.

• Zawartość pamięci obrazu jest cyklicznie odczytywana

ok. 20 razy na sekundę przez układy wyświetlania, ta

zawartość steruje obrazem na ekranie.

• Pamięć obrazu może być zapisywana przez procesor –

jest dostępna w przestrzeni adresowej pamięci

operacyjnej.

• Tryb graficzny: gdy jednostka informacji w pamięci

obrazu opisuje jeden punkt na ekranie (pixel)

• Tryb tekstowy (znakowy), gdy opisuje tzw. znak:

prostokątny obszar na ekranie. Znaki są grupowane w

wiersze i kolumny.

33

background image

Tryby znakowe

• W trybach znakowych pojedynczym elementem obrazu na

ekranie jest znak.

• Znak jest obszarem prostokątnym, który może znajdować się

na ekranie tylko w jednym ze ściśle określonych położeń: cały

obraz na ekranie w trybie znakowym składa się z pewnej liczby

wierszy i kolumn znakowych.

• Rozmiar pola znaku (w punktach) zależy od typu sterownika,

zaś liczby kolumn i wierszy zależą od wybranego trybu

znakowego.

• Każdy znak w pamięci video kodowany jest w postaci dwóch

bajtów: pierwszy (o niższym adresie) zawiera kod znaku (ASCII),

zaś drugi bajt (o adresie o 1 większym) zawiera tzw. atrybut,

określający barwę lub stopień szarości znaku (tzw. kolor

pierwszoplanowy), barwę lub stopień szarości tła i wskaźnik

migotania znaku. Migotanie polega na okresowym przełączaniu

koloru znaku z koloru pierwszoplanowego do koloru tła i

odwrotnie. Bit sterujący migotaniem może być wykorzystywany

jako bit sterujący jasnością koloru tła.

34

background image

Tryby podstawowe

Tablica trybów pracy sterowników obrazu

Pamięć

Tryb_ __Rodzaj__ Rozdzielczość Sterowniki _____Kolory_______

obrazu

• 00h Tekstowy 40 x 25

Oprócz MDA16 stopni szarości

B8000

• 01h Tekstowy 40 x 25

Oprócz MDA16 znak/8 tło

B8000

• 02h Tekstowy 80 x 25

Oprócz MDA16 stopni szarości

B8000

• 03h Tekstowy 80 x 25

Oprócz MDA 16 znak/8 tło

B8000

• 04h Graficzny 320 x 200 Oprócz MDA4 B8000

• 05h Graficzny 320 x 200 Oprócz MDA4 stopnie szarości

B8000

• 06h Graficzny 640 x 200 Oprócz MDA 2

B8000

• 07h Tekstowy 80 x 25

MDA,EGA,HGC czerń/biel

B0000

0Bh Zarezerwowany (wewnętrzny dla EGA)

0Ch Zarezerwowany (wewnętrzny dla EGA)

0Dh Graficzny 320 x 200 EGA

16

A0000

• 0Eh Graficzny 640 x 200 EGA

16

A0000

• 0Fh Graficzny 640 x 350 EGA czerń/biel

A0000

• 10h Graficzny 640 x 350 EGA

16 A0000

35

background image

Atrybut w trybach

tekstowych

CGA i EGA
• bit nr: 7 6 5 4 3 2 1 0

B R G B I

R G B


Kolor Kolor

tła pierwszego planu (znaku)


migotanie

Intensywność koloru znaku

• R ‑ składowa czerwona barwy (Red);
• G ‑ składowa zielona barwy (Green);
• B ‑ składowa niebieska barwy (Blue).

36

background image

Kodowanie barw

bit znaki gdy sterownik


Wartość

I

R

G

B

Monochrom.

Kolor


0

0

0

0

0

Czarne

Czarne

1

0

0

0

1

Podkreślone

Niebieskie

2

0

0

1

0

Zielone

3

0

0

1

1

Cyjan

4

0

1

0

0

Czerwone

5

0

1

0

1

Magenta

6

0

1

1

0

Brązowe

7

0

1

1

1

Białe

Białe


8

1

0

0

0

Szare

9

1

0

0

1

Jasne Podkr.

Jasne Niebieskie

10

1

0

1

0

Jasne Zielone

11

1

0

1

1

Jasne Cyjan

12

1

1

0

0

Jasne Czerwone

13

1

1

0

1

Jasne Magenta

14

1

1

1

0

Żółte

15

1

1

1

1

Jasne Białe Jasne Białe

Cyjan ‑ kolor niebieskozielony;

Magenta ‑ fioletowy.

37

background image

Pamięć obrazu

• Obowiązują następujące reguły wyznaczania położenia

bajtów opisujących znak w pamięci obrazu:

• AdK = 2*LK*Y + 2*X

• AdA = 2*LK*Y + 2*X + 1

• gdzie:

• AdK ‑ adres kodu znaku względem początku strony w

pamięci obrazu;

• AdA ‑ adres atrybutu znaku względem początku strony

w pamięci obrazu;

• LK ‑ liczba kolumn w aktualnym trybie, LK {40,80};

• X ‑ numer kolumny pozycji znaku na ekranie, X

{0..LK‑1};

• Y ‑ numer wiersza pozycji znaku na ekranie, Y {0..24}.

38

background image

Przerwanie BIOSu 10H

AH=0 ‑ ustawienie nowego trybu wyświetlania

dane:

AL ‑ nowy tryb wyświetlania; wyniki: nie ma;

AH=1 ‑ ustawienie rozmiaru kursora:
dane: CL (bity 4..0) ‑ numer pierwszej (od góry) linii kursora w polu znaku;

CH (bity 4..0) ‑ numer ostatniej (od góry) linii kursora w polu znaku;
wyniki: nie ma;

AH=2 ‑ ustawienie położenia kursora:

dane:

BH ‑ numer strony;

DL ‑ nr kolumny;

DH ‑ nr

wiersza;
wyniki: nie ma;

AH=3 ‑ odczytanie położenia i rozmiaru kursora:

dane:

BH ‑ numer strony;

wyniki

:DL ‑ nr kolumny, w której znajduje się kursor;

DH ‑ nr wiersza, w którym znajduje się kursor;
CL (bity 4..0) ‑ numer pierwszej (licząc od góry) linii kursora w polu

znaku;
CH (BITY 4..0) ‑ numer ostatniej (licząc od góry) linii kursora w polu

znaku;

39

background image

Przerwanie BIOSu 10H cd.

AH=4 ‑ ustawienie numeru (przełączenie) strony wyświetlanej

dane: AL ‑ nowy numer strony do wyświetlania; wyniki: nie

ma;

AH=8 ‑ odczytanie znaku i atrybutu z pozycji wskazywanej przez

kursor:
dane: BH ‑ numer strony; wyniki: AL ‑ kod znaku; AH ‑ atrybut;

AH=9 -  zapisanie znaku i atrybutu wielokrotnie na pozycji

wskazywanej przez kursor:
dane: BH ‑ nr strony; AL ‑ kod znaku; BL ‑ atrybut; CX ‑ liczba

powtórzeń znaku;
wyniki: nie ma;

AH=10 (0AH) ‑ zapisanie znaku wielokrotnie na pozycji

wskazywanej przez kursor:
dane: BH ‑ nr strony; AL ‑ kod znaku; CX ‑ liczba powtórzeń

znaku;
wyniki: nie ma;

40

background image

Przerwanie BIOSu 10H cd.

AH=12 (0CH) ‑ zapisanie punktu na ekranie (w trybie graficznym;

funkcja niedozwolona dla sterownika Hercules
dane: AL ‑ kolor punktu (piksela);
CX ‑ pionowa pozycja punktu (numer wiersza punktów na

ekranie);
DX ‑ pozioma pozycja punktu (numer kolumny punktów na

ekranie);
BH ‑ numer strony wyświetlanej;
wyniki:

nie ma;

AH=13 (0DH) ‑ odczytanie punktu z ekranu (w trybie graficznym;

funkcja niedozwolona dla sterownika Hercules):
dane: CX ‑ pionowa pozycja punktu (numer wiersza punktów na

ekranie);
DX ‑ pozioma pozycja punktu (numer kolumny punktów na

ekranie);
BH ‑ numer strony wyświetlanej;
wyniki: AL ‑ kolor punktu (piksela);

41

background image

Przerwanie BIOSu 10H cd.

AH=14 (0EH) ‑ zapisanie znaku na ekranie na

polucji kursora i przesunięcie kursora (tzw. zapis w

trybie TTY):
dane: AL ‑ kod znaku do zapisania; BL ‑ kolor tła

(gdy tryb graficzny); BH ‑ numer strony;
wyniki: nie ma;

AH=15 (0FH) ‑ pobranie aktualnego trybu video:

dane: nie ma;
wyniki:

AL ‑ tryb video;

AH ‑ liczba kolumn na stronie;
BH ‑ numer strony wyświetlanej.

42

background image

Funkcja 9 DOSu

AH=9 przy wywołaniu przerwania INT 33

(21H) ‑ wyprowadzenie łańcucha znaków

ograniczonego znakiem $ (dolara):
dane:

DS:DX ‑ adres początku łańcucha

znaków;
wyniki: nie ma;

łańcuch znaków powinien być zakończony

znakiem $ (dolara), który nie będzie

wysyłany na ekran. Nie ma sposobu

wyświetlenia znaku dolara za pomocą tej

funkcji.

43

background image

Wybrane urządzenia -

klawiatura

44

background image

Przerwania klawiatury 1

• Przerwanie sprzętowe 9: po kazdym

wciśnięciu, zwolnieniu i przekroczeniu
interwału przytrzymywania klawisza;
porty sterownika klawiatury od 60H
poczynając

• BIOS odczytuje numer (kod skanowania)

klawisza, dokonuje konwersji na ASCII i
umieszcza te dwa bajty w buforze
pierścieniowym (FIFO) klawiatury

45

background image

Przerwania klawiatury 2

• Przerwanie usługowe BIOS nr 22 (16H), bez „echa”, funkcje:

• AH=0 –

pobranie

znaku z bufora klawiatury: ASCII  AL, scan

code  AH

• AH=1 – sprawdzenie bufora (NIE „wyjmuje” znaku z bufora):

– Jeśli bufor jest pusty, to 1ZF, jeśli nie, to 0ZF i

odczyt

(bez

kasowania w buforze) jak przy funkcji 0

• AH=2 – odczyt bajtu stanu klawiszy specjalnych „shift”

– 7stan Insert (związany z klawiszem Ins)

– 6stan CapsLock

– 5stan NumLock

– 4stan ScrollLock

– 3Alt

– 2Ctrl

– 1lewy klawisz Shift

– 0prawy klawisz Shift

• AH = 10H, 11H, 12H to odpowiedniki 0, 1 i 2 dla „nowych”

klawiatur

46

background image

Przerwania klawiatury 3

• Przerwanie 21H DOS, funkcja AH=10H

„wejście buforowe z klawiatury”

– AH=10H
– DS:DX – adres pola buforowego
– Pierwszy znak pola (ds:dx) powinien

zawierać długość pola

– Wynik: ds:[dx+1] – liczba znaków

wprowadzonych (do Enter lub końca bufora)

– Od ds:(dx+2) wprowadzone znaki

47

background image

Jak startuje 80x86 (także

Pantium, czy np. pierwszy z

rdzeni Core 2 Duo)

 Przestrzenie adresowe dostrzegane przez programistę:

 Pamięci: 1M + 64K – 16 = 0FFFF0H+0FFFFH = 10FFEFH [B]

 I/O: 64KB

 Urządzeń pamięci głównej – w zależności od zestawu, np.:

2GB

 Pamięci karty graficznej – w zależności od typu, np. 1GB

 Przestrzenie niedostępne bezpośrednio, np.:

 Pamięci konfiguracyjnej (CMOS)

 Dysków…

 Niedostrzegalne dla programisty - różnego rodzaju

bufory:

 Caches procesora: I i II poziom

 Bufory dysków

48

background image

Pamięć w real address

mode

49

background image

Jak startuje system? Zimny

start

• POST: (Power‑On‑Self Test), w którym:

• inicjowanie wszystkich podzespołów płyty głównej i test poprawności ich pracy;

• ustawienie wektorów przerwań BIOS'u, pozostałe wektory ustawiane na "puste"

podprogramy obsługi (IRET);

• Ustalenie i zapamiętanie konfiguracji;

• dołączenie oprogramowania z kart rozszerzeń: obszar od 0A0000H sprawdzany

co 256 B, czy nie zawiera 55AAH ‑ jeśli tak, to CALL FAR PTR xxx:3 (gdzie xxx to

sprawdzany adres); tam program inicjujący:

– inicjalizacja podzespołów karty,

– sprawdzenie ich sprawności i

ustawienie odpowiednich wektorów przerwań;

• próba odczytania z mechanizmu dyskowego A: pierwszego sektora ze ścieżki

zerowej (boot record), zawierającego prosty program ładujący; w razie

powodzenia ładowania sterowanie jest przekazywane do tego programu;

• w razie niepowodzenia próby odczytu z dysku A: dokonywana jest identyczna

próba odczytu i uruchomienia bootstrap’u z dysku C:

• w razie niepowodzenia odczytu z C: próba uruchomienia interpretera języka

BASIC;

• w razie niepowodzenia wypisanie komunikatu (na monitorze) z żądaniem

włożenia do mechanizmu A: dyskietki systemowej a następnie oczekiwanie na

spełnienie tego żądania.

50

background image

Start DOSu

• Ładowanie pierwszego sektora i CALL

do tego obszaru (MBR lub boot record).

• Poszukiwanie i ładowanie:

IBMBIO.COM i IBMDOS.COM (IBM)
IO.SYS i MSDOS.SYS (Microsoft)

• Dodatki według CONFIG.SYS
• Ładowanie COMMAND.COM
• Pierwszy batch: AUTOEXEC.BAT

51


Document Outline


Wyszukiwarka

Podobne podstrony:
02 TD, urządzenia, start [pub]
02Niestacjonarne urządzenia, start [pub]
02Niestacjonarne urządzenia, start [pub]
02 Dobieranie urządzeń audiowizualnych
B11 SMM Zalacznik 02 Iskrobezpieczenstwo urzadzen
02 Instalacja urządzeń do lokalnego i centralnego
operator urzadzen przemyslu szklarskiego 813[02] z2 07 n
monter sieci i urzadzen telekomunikacyjnych 725[02] o1 01 n
operator urzadzen przemyslu spozywczego 827[01] z2 02 u
monter instalacji i urzadzen sanitarnych 713[02] z1 11 n
operator maszyn i urzadzen odlewniczych 812[03] z1 02 u
monter instalacji i urzadzen sanitarnych 713[02] z4 04 n
monter instalator urzadzen technicznych w budownictwie wiejskim 723[05] z2 02 u
monter instalacji i urzadzen sanitarnych 713[02] z1 06 n
monter sieci i urzadzen telekomunikacyjnych 725[02] z1 01 n
operator maszyn i urzadzen metalurgicznych 812[02] o1 02 n
operator urzadzen przemyslu szklarskiego 813[02] z2 03 u

więcej podobnych podstron