03 Skoki,przerwania,struktury[pub]

background image

Tryb Real Address Mode (lub

Virtual 8086-Mode)

Cd. Historia: BIOS, DOS,

programy, struktura programów

background image

Co dzi

ś

b

ę

dzie…

• Powtórzenie wybranych rozkazów

przenosz

ą

cych sterowanie

• Struktura programu – zagnie

ż

d

ż

ane

podprogramy

• Wybrane przerwania BIOS i DOS

• Zimny start i ładowanie

• Struktura .EXE

2

background image

Rozkazy, które trzeba zna

ć

– ADD, SUB, CMP

– NOT, AND, OR, XOR, TEST

– INC, DEC

– PUSH, POP

– IN, OUT

– JMP, CALL, RET

– Jxx, JCXZ, LOOP

– INT, IRET

3

background image

Rozkazy przenosz

ą

ce

sterowanie

• Przeniesienie sterowania to zmiana

zawarto

ś

ci licznika rozkazów

– Sekwencyjne przeniesienie sterowania – gdy

działa automat zwi

ę

kszaj

ą

cy LR o długo

ść

rozkazu

– Niesekwencyjne: brutalne ładowanie LR

• Niesekwencyjne przeniesienia:

– Skoki efektywne

– Sekwencje przerwa

ń

– Sekwencje powrotu (to rodzaj skoków) IRET

4

background image

Rodzaje skoków

• Skoki:

– Bezwarunkowe a warunkowe

– Bezpo

ś

rednie/po

ś

rednie

– Bezwzgl

ę

dne/wzgl

ę

dne

– Efektywne/nieefektywne (to cecha wykonania

skoku, a nie cecha rozkazu skoku)

• Tylko w trybie adresów rzeczywistych

skoki

• Wewn

ą

trzsegmentowe/mi

ę

dzysegmentowe

5

background image

Skoki bezwarunkowe

• Zawsze efektywne

• JMP adres – far lub near

• JMP SHORT adres – wzgl

ę

dny, krótki

• CALL adres – far lub near

• RET – far lub near (decyduje dyrektywa

PROC lub zapis RETF)

• IRET

6

background image

Rozkazy powoduj

ą

ce

przerwania

• Przerwania wewn

ę

trzne (supervisor call)

– INT n

– INT 3 (jednobajtowy)

– INTO (warunkowy)

• Przerwania „undefined opcode”

• Przerwania od „bł

ę

dów”, np. dzielenia

przez 0

7

background image

Powtórka

• Odło

ż

y

ć

co

ś

na stos:

– sp

sp-2

– [ss:sp]

co

ś

• Zdj

ąć

ze stosu

co

ś

:

co

ś

[ss:sp]

– sp

sp+2

• „wykonanie” skoku:

– cs:ip

argument far

– Ip

argument near

8

background image

Powtórka cd.

• PUSH

co

ś

– Odło

ż

y

ć

na stos

co

ś

• POP

co

ś

– Zdj

ąć

ze stosu

co

ś

• INT

N

śą

danie przerwania wewn

ę

trznego do

sterownika

• IRET

– Powrót z przerwania

9

background image

Sekwencja przerwania

N

• Po zako

ń

czeniu rozkazu (CS:IP wskazuje

na kolejny rozkaz) pami

ę

tanie stanu

sterowania:

– Odło

ż

y

ć

na stos rejestr F (odpowiednik pushf)

– Odło

ż

y

ć

na stos rejestr CS (push cs)

– Odło

ż

y

ć

na stos rejestr IP (push ip)

• Wymuszenie nowego stanu sterowania:

– IP

[0:4*

N

]

– CS

[0:4*

N

+2]

10

background image

Sekwencja powrotu IRET

• Odtworzenie stanu sterowania ze stosu

– IP

[ss:sp]

– SP

SP + 2

– CS

[ss:sp]

– SP

SP + 2

– F

[ss:sp]

– SP

SP + 2

11

background image

Podprogramy

• W j

ę

zyku C:

– Int funkcja (int par1, int par2, int par3);

• W asemblerze:

– PUSH par3

– PUSH par2

– PUSH par1

– CALL funkcja

– ADD SP, 6 ; gdy podprogram w konwencji C)

12

background image

Podprogram

• Pocz

ą

tek

– PUSH BP

– MOV BP, SP

– SUB SP, dlugosc_danych_lokalnych

• Wywoływanie parametrów i zmiennych

– MOV AX,[BP+4]

; parametr 1

– MOV DX, [BP-2] ; zmienna 1

• Konwencja: C a Pascal

– RET lub RET 6

13

background image

Programy rezydentne a shelle

• SEGMENT

– Deklaracje danych podprogramu obsługi

• OBSLUGA

– podprogram obsługi przerwania

• INIT

– cz

ęść

inicjuj

ą

ca programu

• ENDS

• Po zainicjowaniu, w pami

ę

ci tylko

OBSLUGA

14

background image

Jak przej

ąć

przerwanie

STARY

LABEL DWORD

CZOFFSET

DW ?

CZSEG

DW ?

----------------------------------------------------------------------------------------

; pobranie "przechwytywanego" wektora przerwania

MOV AL,NRWKT ; symbol NRWKT to numer wektora

MOV AH,35H

; numer funkcji: pobranie wektora nr AL do ES:BX

INT 21H

; przerwanie uslugowe DOS'u

; zapamietanie starej wartosci wektora

MOV CZOFFSET,BX

; czesc OFFSET

MOV CZSEG,ES

; czesc SEG

; teraz ustawienie nowej wartosci wektora - w DS jest juz to samo co w CS

MOV DX,OFFSET OBSLUGA

; czesc OFFSET adresu

podprogramu obslugi

MOV AL,NRWKT

; numer wektora

MOV AH,25H

; funkcja: ustawienie wektora nr AL z

DS:DX

INT 21H

; przerwanie uslugowe DOS'u

15

background image

OBSLUGA (np. przerwanie

16H)

OBSLUGA

PROC FAR

TEST AH,0EFH

; sprawdzenie czy funkcja odczytu (0 lub 10H)

JZ OBSL1

JMP CS:STARY

; STARY to adres podwojnego slowa: skok

miedzysegentowy

;

OBSL1

LABEL NEAR

PUSHF

CALL CS:STARY

; symulacja sekwencji przerwania (jak po rozkazie INT):

; tu mog

ą

wyst

ą

pi

ć

ż

ne działania modyfikuj

ą

ce dane wyj

ś

ciowe z przerwania

OK_JUZ

LABEL NEAR

; koniec dzialan modyfikujacych

IRET

; to koniec podprogramu obslugi (czesci rezydentnej programu)

OBSLUGA

ENDP

16

background image

Zako

ń

cz i pozosta

ń

; obliczenie nowej długo

ś

ci programu w DX

MOV DX,OFFSET INIT

; adres poczatkowy fragmentu "do

odrzucenia"

ADD DX,100H

; zwiekszony o dlugosc PSP daje dlugosc

pozos-

; tajacego w pamieci fragmentu (w bajtach)

ADD DX,0FH

; teraz przygotowanie do zaokraglenia do

paragrafow

MOV CL,4

; ustawienie licznika przesuniec

SHR DX,CL

; wlasciwe zaokraglenie: dzielenie przez 16

(przesunie-

; cie logiczne o 4 pozycje w prawo

; zakonczenie z pozostaniem w pamieci

MOV AL,0

; kod powrotu, rowny 0

MOV AH,31H

; funkcja: koncz i pozostaw

; w pamieci DX nietykalnych paragrafow

INT 21H

; przerwanie uslugowe DOS'u

; i to juz koniec programu

17

background image

Przerwania – przegl

ą

d

Mikroprocesorowe

o numerach 0 i 1; do przerwa

ń

mikroprocesorowych zaliczy

ć

mo

ż

na te

ż

przerwania o

numerach 3 i 4. Przez przerwania mikroprocesorowe
rozumie si

ę

takie przerwania, których cechy szczególne

zale

żą

głównie od mikroprocesora.

• 0 – dzielenie przez 0

– MOV BX,0
– DIV BX

• 1 – single step (flaga TF)

• 2 – przerwanie niemaskowalne (NMI) [zewn

ę

trzne?]

• 3 – breakpoint (INT 3)
• 4 – przerwanie przy nadmiarze (INTO)

18

background image

Przerwania

Sprz

ę

towe

(zewn

ę

trzne) o numerach 2, 8, 9, 11-15

(0BH-0FH). Przerwania sprz

ę

towe wynikaj

ą

z organizacji

IBM PC i nie mo

ż

na ich zmieni

ć

. Przerwania te

obsługiwane s

ą

przez BIOS lub podprogramy zawarte na

kartach rozszerze

ń

.

BIOS'u

o numerach 5, 16-28 (10H-1AH) i 72 (48H),

oprócz 24 (18H).

• Tzw.

adresowe BIOS'u

o numerach 27, 28 i 29 (1BH,

1DH i 1EH). W rzeczywisto

ś

ci s

ą

to adresy danych

(FAR) specjalnych BIOS'u - pewnych tablic
pomocniczych. Nie s

ą

to adresy podprogramów

obsługi.

19

background image

Przerwania główne DOSu

Główne DOS'u

o numerach 32, 33, 37-39 (20H,

21H, 25H-27H). Szczególnie wa

ż

ne s

ą

przerwania:

33 (21H): tzw. przerwanie osłonowe lub

usługowe - stanowi

żą

danie wykonania

przez DOS jednej z funkcji usługowych o
numerze zadanym w rejestrze AH
;

– 32 (20H):

żą

danie normalnego zako

ń

czenia

pracy programu u

ż

ytkowego;

– 39 (27H):

żą

danie zako

ń

czenia pracy

programu u

ż

ytkowego z pozostaniem w

miejscu (z przesuni

ę

ciem pocz

ą

tku TPA wg

zawarto

ś

ci rejestru DX).

20

background image

Przerwania (?) adresowe DOSu

Tzw.

adresowe DOS'u

o numerach 34, 35 i 36 (22H, 23H i 24H). Mo

ż

na

powiedzie

ć

,

ż

e o ile pozostałe przerwania programowe wywoływane s

ą

przez program u

ż

ytkownika, a obsługiwane przez oprogramowanie

systemowe (BIOS lub DOS), to dla omawianych przerwa

ń

rzecz si

ę

ma

dokładnie odwrotnie:

przerwania te wywoływana s

ą

przez DOS, a mog

ą

by

ć

obsługiwane przez program u

ż

ytkownika

, je

ś

li ustawi on odpowiednio

wektory przerwa

ń

. Przerwania s

ą

wywoływane:

– 35 (23H): po naci

ś

ni

ę

ciu kombinacji klawiszy Ctrl-Break (^C); je

ś

li

u

ż

ytkownik ustawi ten wektor, to zostanie on odtworzony po

zako

ń

czeniu pracy programu;

– 36 (24H): po wyst

ą

pieniu bł

ę

du krytycznego - tzn. takiego, po którym

normalne kontynuowanie programu nie jest mo

ż

liwe; je

ś

li u

ż

ytkownik

ustawi ten wektor, to zostanie on odtworzony po zako

ń

czeniu pracy

programu;

– 34 (22H): je

ś

li w programie wyst

ą

pi przerwanie 32 (20H - normalne

zako

ń

czenie programu), lub 39 (27H - zako

ń

czenie z pozostaniem w

miejscu) sterowanie zostanie przekazane pod adres
mi

ę

dzysegmentowy okre

ś

lony tym wektorem, lecz nie b

ę

dzie to wej

ś

cie

do procedury obsługi przerwania tylko normalny skok; omawiane
"przerwanie" adresowe wykorzystywane jest przez tzw. nakładki na
DOS (np. Norton Commander), tzn. programy powołuj

ą

ce do pracy inne

programy pod swoj

ą

kontrol

ą

; je

ś

li u

ż

ytkownik zmieni ten wektor, to

musi go odtworzy

ć

przed zako

ń

czeniem pracy programu.

21

background image

Przerwania inne

• Zarezerwowane (na potrzeby wewn

ę

trzne

DOS'u) o numerach 40-95 (28H-5FH).

• U

ż

ytkownika (do dowolnego

wykorzystania w programach u

ż

ytkowych)

o numerach 96-103 (60H-67H).

• Niewykorzystywane o numerach 104-127

(68H-7FH) i 241-255 (0F1H-0FFH).

• Interpretera j

ę

zyka BASIC o numerach 24

i 128-240 (18H i 80H-0F0H).

22

background image

Koniec

Dalej nast

ę

puj

ą

materiały pomocnicze:

ilustracje do rozmieszczenia programów w
pami

ę

ci…

23

background image

Pami

ęć

w real address mode

24

background image

25

background image

Co jest w pami

ę

ci?

26

background image

System i programy w pami

ę

ci

27

background image

Moduł ładowalny .EXE (DOS)

EXE header
00 word "MZ" - Link file .EXE signature (Mark Zbikowski?)
02 word length of image mod 512

04 word size of file in 512 byte pages

06 word number of relocation items following header
08 word size of header in 16 byte paragraphs, used to locate the beginning of

the load module

0A word min # of paragraphs needed to run program
0C word max # of paragraphs the program would like
0E word offset in load module of stack segment (in paras)
10 word initial SP value to be loaded
12 word negative checksum of pgm used while by EXEC loads pgm
14 word program entry point, (initial IP value)
16 word offset in load module of the code segment (in paras)
18 word offset in .EXE file of first relocation item
1A word overlay number (0 for root program)
RELOCATION TABLE
IMAGE

28

background image

Moduł ładowalny .EXE, cd.

- relocation table and the program load module follow the header

- relocation entries are 32 bit values representing the offset into the
load module needing patched

- once the relocatable item is found, the CS register is added to the
value found at the calculated offset


Registers at load time of the EXE file are as follows:

AX:

contains number of characters in command tail, or 0

BX:CX

32 bit value indicating the load module memory size

DX

zero

SS:SP

set to stack segment if defined else, SS=CS and SP=0

or top of memory.

DS

set to segment address of EXE header

ES

set to segment address of EXE header

CS:IP

far address of program entry point, (label on "END„

statement of program)

29

background image

Moduł wykonywalny

• PSP – Program Segment Prefix
Blok opisu otoczenia ENVIRONMENT

– por. komend

ę

SET

• Image a posta

ć

.COM

• Organizacja wielu programów w pami

ę

ci

• Bloki allokacji pami

ę

ci

• UMB – Upper Memory Blocks

30

background image

Bloki allokacji pami

ę

ci

31

background image

Bloki po załadowaniu TD BAL

32

background image

Blok environment

33

background image

PSP i program

34


Wyszukiwarka

Podobne podstrony:
03 Skoki,przerwania,struktury[pub]
03-E-czas-przerw
03 E czas przerwid 4598
Wzor-22 Skorowidz dzialek 31 03 03, geodezja, rok III, Projektowanie Struktur Terenowych, Sprawko nr
Wzor-08 Protokol badania KW 31 03 03-SAGOWSKI, geodezja, rok III, Projektowanie Struktur Terenowych
7 Struktura osadu (16 03 2011)
03 Interakcje stosunki spoleczne organizacja struktura spoleczna, studia, wprowadzenie do socjologii
03 struktury algebraiczne
Wzor-01 Wykaz podmiotow (spis alf.) 31 03 03, geodezja, rok III, Projektowanie Struktur Terenowych,
03 www STRUKTURY organizacyjne
Finanse Publiczne barabara szlabowska, Pojęcie, zakres i struktura prawa finansów publicznych - pyta
03 Struktury maszyn z magnesami trwałymi
Wzor-08 Protokol badania KW 31 03 03-wspolwlasnosc, geodezja, rok III, Projektowanie Struktur Teren
Wzor-08 Protokol badania KW 31 03 03-BONS, geodezja, rok III, Projektowanie Struktur Terenowych, Sp
Wzor-08 Protokol badania KW 31 03 03-GMINA, geodezja, rok III, Projektowanie Struktur Terenowych, S
Wzor-02 Wykaz osob jedn.org.i org.(s.alf.) 31 03 03, geodezja, rok III, Projektowanie Struktur Teren

więcej podobnych podstron