assembler€86ˆ 8

assembler€86ˆ 8



56 4. Język asemblerowy mikroprocesorów 8086/8088

433. Połączenia międzymodułowe

OsiÄ…gniÄ™cia współczesnej inżynierii programowania narzucajÄ… moduÅ‚owÄ… konstrukcjÄ™ programów. Szczególnie duże programy sÄ… dzielone na wiele modułów kodowanych, tÅ‚umaczonych i uruchamianych niezależnie, czasem prz.cz różnych programistów. WystÄ™pujÄ…ce zależnoÅ›ci miÄ™dzy moduÅ‚ami oraz cechy i inne wÅ‚aÅ›ciwoÅ›ci poszczególnych modułów sÄ… definiowane odpowienimi dyrektywami: NAME, PUBLIC, EXTRN, END, oraz INCLUDE.

Dyrektywa NAME

Dyrektywa pozwala przypisać nazwÄ™ moduÅ‚owi przekazywanÄ… nastÄ™pnie programowi Å‚Ä…czÄ…cemu. SkÅ‚adnia jest nastÄ™pujÄ…ca    i

N.AME nazwa modułu

Nazwa moduÅ‚u może zawierać do szeÅ›ciu znaków i może być taka sama jak symbole stosowane w programie źródÅ‚owym do innych celów. Dyrektywa NAME nie może być poprzedzona nazwÄ… symbolicznÄ… i w danym module może być użyta tylko raz. Jeżeli dyrektywa NAME nie wystÄ™puje w programie lub też zostaÅ‚a bÅ‚Ä™dnie zapisana, to asembler przyjmuje automatycznie nazwÄ™ moduÅ‚u jako sześć pierwszych znaków tekstu wystÄ™pujÄ…cego w dyrektywie T1TLE, uzupeÅ‚nionych o rozszerzenie OBJ. Jeżeli dyrektywa TITLE także nie wystÄ™puje, to za nazwÄ™ moduÅ‚u zostaje przyjÄ™ta nazw pliku dyskowego z programem źródÅ‚owym, uzupeÅ‚niona o rozszerzenie OBJ.

Dyrektywa PUBLIC

Dyrektywa PUBLIC pozwala na okreÅ›lenie wewnÄ™trznych, symbolicznych nazw globalnych, tzn. takich, które sÄ… zdefiniowane wewnÄ…trz danego moduÅ‚u i sÄ… dostÄ™pne dla innych modułów. Informacja ta jest niezbÄ™dna w momencie Å‚Ä…czenia przez odpowiedni program Å‚Ä…czÄ…cy kilku modułów w jednÄ… caÅ‚ość. SkÅ‚adnia dyrektywy jest nastÄ™pujÄ…ca    >

PUBLIC nazwa Å‚ I,nazwa_2, ..J

Dyrektywa nic może być poprzedzona nazwą. Wyspecyfikowane nazwy mogą być etykietami, nazwami zmiennych, mogą być również zdefiniowane dyrektywami EQU, = . W tym ostatnim przypadku nie mogą być dłuższe niż dwa bajty.

Dyrektywa EXTRN

Dyrektywa EXTRN sÅ‚uży do deklarowania asemblerowi zewnÄ™trznych, symbolicznych nazw globalnych, tzn. takich, które sÄ… używane w danym module, ale sÄ… zdefiniowane w innym module. Brak deklaracji nazw zewnÄ™trznych jest sygnalizowany komunikatem asemblera o bÅ‚Ä™dzie polegajÄ…cym na niezdefiniowaniu nazw symbolicznych używanych w programie. Adres odpowiadajÄ…cy zadeklarowanej nazwie zewnÄ™trznej zostanie uzupeÅ‚niony w czasie Å‚Ä…czenia modułów przez program Å‚Ä…czÄ…cy. SkÅ‚adnia dyrektywy jest nastÄ™pujÄ…ca

EXTRN nazwalrtypl [, nazwa_2:typ_2, ...1

4.3. Dyrektywy i pseudoinstrukcje


Dyrektywa nie może być poprzedzona nazwÄ…. Musi zostać podany typ nazwy - BYTE, WORD, DWORD, NEAR, FAR lub ABS. Typ ABS dotyczy staÅ‚ych numerycznych lub nazw zdefiniowanych dyrektywÄ… EQU. Typ w dyrektywie musi być zgodny z typem w definicji nazwy. Dyrektywa może znajdować siÄ™ wewnÄ…trz segmentu (nazwa bÄ™dÄ…ca argumentem musi być wtedy zdefiniowana w tym segmencie) lub poza segmentem (gdy nazwy sÄ… zdefiniowane w różnych segmentach). Nazwa deklarowana jako zewnÄ™trzna (EXRTN) nie może wystÄ™pować równoczeÅ›nie jako wewnÄ™trzna (PUBLIC).

Przykład

EXTRN ZMIENNAiWORD, PODPROGRAMiFAR

•••

PROGRAM SEGMENT PARA

• ••

MOV ZMIENNA,BX ; ZMIENNA zdefiniowana w innym module CALL PODPROGRAM ; PODPROGRAM jest zdefiniowany

; w innym module    â–²

Dyrektywa END

Dyrektywa END wskazuje koniec programu źródÅ‚owego i powoduje zatrzymanie asemblacji. W zwiÄ…zku z tym, w programie może znajdować siÄ™ tylko jedna dyrektywa END, a ponadto musi to być ostatni wiersz programu. SkÅ‚adnia dyrektywy jest nastÄ™pujÄ…ca

END [etykieta]

Jeżeli wystÄ™puje etykieta, to okreÅ›la ona adres startowy programu. ModuÅ‚ jest traktowany wtedy jako program główny. Jeżeli caÅ‚y program skÅ‚ada siÄ™ z wielu Å‚Ä…czonych modułów, to tylko jeden z nich może być zakoÅ„czony dyrektywÄ… END z etykietÄ…. Dla programów uruchamianych pod kontrolÄ… systemu operacyjnego MS-DOS, jest to jedyny sposób zdefiniowania adresu, od którego należy rozpocząć wykonywanie programu.

Dy^ek tywal NCLU DE

Dyrektywa INCLUDE pozwala doÅ‚Ä…czyć do tÅ‚umaczonego programu inny plik z programem źródÅ‚owym. DoÅ‚Ä…czanie rozpoczyna siÄ™ od miejsca umieszczenia yrektywy INCLUDE. Po doÅ‚Ä…czeniu pliku asembler analizuje kolejne instrukcje programu umieszczone po dyrektywie. INCLUDE jest stosowana w przypadku powtarzasz?^*1 sekwenci* rozkazów wykorzystywanych w różnych moduÅ‚ach i programach. â€¢ k ac*n*a dyrektywy jest nastÄ™pujÄ…ca

INCLUDE nazwapliku

^•3-4. Definiowanie danych i rezerwacja pamięci

y rozdziale tym omówiono dyrektywy: DB, DW, DD, DO, DT oraz RECORD, STRUĆ

1 -Radix.


Wyszukiwarka

Podobne podstrony:
assembler?86? 8 76    4. JÄ™zyk asemblerowy mikroprocesorów 8086/8088 LE (ang. lower
assembler?86? 0 40 4. Język asemblerowy mikroprocesorów 8086/8088 W książce omówimy wersję MASM 4.
assembler?86? 3 46 4. Język asemblerowy mikroprocesorów 8086/8088 PARA - początek segmentu będzie
assembler?86? 4 48 4. Język asemblerowy mikroprocesorów 8086/8088 tępne segmenty będą łączone jak
assembler?86? 5 50 4. Język asemblerowy mikroprocesorów 8086/8088 ; w kolejnym przykładzie zmienne
assembler?86? 6 52 4. JÄ™zyk asemblerowy mikroprocesorów 8086/8088 MOV AX, DANE 2    
assembler?86? 7 54 4. Język asemblerowy mikroprocesorów 8086/8088 kowych informacji czy skoki do (
assembler?86? 2 64 4. Język asemblerowy mikroprocesorów 8086/8088 64 4. Język asemblerowy mikropro
assembler?86? 3 66 4. Język asemblerowy mikroprocesorów 8086/8088 66 4. Język asemblerowy mikropro
assembler?86? 4 68 4. Język asemblerowy mikroprocesorów 8086/8088 Dyrektywy .LALL, .SALL, .XALL Dy
assembler?86? 5 70 4. Język asemblerowy mikroprocesorów 8086/8088 .186
assembler?86? 6 72 4. Język asemblerowy mikroprocesorów 8086/8088 72 4. Język asemblerowy mikropro
assembler?86? 7 74 4. Język asemblerowy mikroprocesorów 8086/8088 Przykład ZMIENNA A DW 5*5 ; =
assembler?86? 9 78 4. Język asemblerowy mikroprocesorów 8086/8088 PROGRAM SEGMENT • • • A DALEKO E
assembler?86? 1 42 4. Język asemblerowy mikroprocesorów 8086/80X8 (ODH). Asembler przetwarza łańcu
assembler?86? 2 44 4. Język asemblerowy mikroprocesorów #086/8088 Wiersz programu kończy się zasad
assembler?86? 0 60 4. JÄ™zyk asemblerowy nuKroprocesorów 8086/8088 ; OOh    16-23 DA
assembler?86? 9 58 4. Język asemblerowy mikroprocesorów 808618088 Dyrektywy: DB, DW, DD, DQ, DT Li
assembler?86? 1 62 4. JÄ™zyk asemblerowy> mikroprocesorów 808618088 oraz    AA

więcej podobnych podstron