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 MDA

16 stopni szaro

ś

ci

B8000

01h Tekstowy

40 x 25

Oprócz MDA

16 znak/8 tło

B8000

02h Tekstowy

80 x 25

Oprócz MDA

16 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 MDA

4

B8000

05h Graficzny

320 x 200 Oprócz MDA

4 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”

– 7 stan Insert (zwi

ą

zany z klawiszem Ins)

– 6 stan CapsLock
– 5 stan NumLock
– 4 stan ScrollLock
– 3 Alt
– 2 Ctrl
– 1 lewy klawisz Shift
– 0 prawy 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


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