Ассемблерлар. Объект кодни ҳосил қилиш. Ассемблер жадвали ва алгоритми


Download 230.64 Kb.
bet1/2
Sana02.06.2024
Hajmi230.64 Kb.
#1835927
  1   2
Bog'liq
Assemblerlar

§3. Ассемблерлар. Объект кодни ҳосил қилиш. Ассемблер жадвали ва алгоритми


Ассемблер жараёнида дастурдаги буйруқларнинг мнемоник кодларига уларга мос машина эквивалентларига ўтказиш, дастурдаги белги нишонларга машина адресларини тайинлашдек вазифалар бажарилади. Биз СЎМ ва СЎМ/ҚВ учун ассемблерларни кўриб чиқамиз. Бу мисолларда ассемблерлар учун умумий бўлган томонлари, ассемблерда ишлатиладиган алгоритмлар, берилганлар тузилишлари кўриб чиқилади. Ассемблернинг машинанинг аппарат хусусиятларига боғлиқ бўлган томонлари CЎМ/ҚВ учун кўрилган ассемблерларда қурилади.


Ассемблернинг асосий вазифалари. СЎМ учун ассемблер тилидаги дастур ёрдамида ассемблернинг асосий хусусиятларини кўрамиз. Бу дастур матни қуйида келтирилади.



Сатр

Адрес

Нишон

Буйруқ

Операнд

Объект коди

Изоҳ

5




COPY

START

1000







10

1000

FIRST

STL

RETADR

141033

қайтиш адресини сақлаш

15

1003

CLOOP

JSUB

RDREC

482039

Ўқиш дастур­сига мурожаат

20

1006




LDA

LENGTH

001036

Кирувчи маълумот тугаган­лиги-

25

1009




COMP

ZERO

281030

­ни аниқлаш (LENGTHқ0)

30

100С




JEQ

ENDFIL

301015

Берилганлар укишни тугатиш

35

100F




JSUB

WRREC

482061

Берилганларни чоп қилиш

40

1012




J

CLOOP

3C1003

Такрорлаш учун утиш

45

1015




LDA

EOF

00102A

Файл охири белгисини юклаш

50

1018




STA

BUFFER

0C1039




55

101B

ENDFIL

LDA

THREE

00102D

LENGTH қ3

60

101E




STA

LENGTH

0C1036




65

1021




JSUB

WRREC

482061

EOF чиқариш

70

1024




LDL

RETADR

081033

қайтиш адресини юклаш

75

1027




RSUB




4C0000

Дастурдан чиқиш

80

102A

EOF

BYTE

C’EOF’

454F46




85

102D

THREE

WORD

3

000003




90

1030

ZERO

WORD

0







95

1033

RETADR

RESW

1







100

1036

LENGTH

RESW

1




Ёзув узунлиги

105

1039

BUFFER


RESB

4096




Буфер узунлиги-4096 байт

110

Буферга ёзувни ўқиш дастурcи

115

2039




LDX

ZERO

041030

Такрорланиш санагичи

120

203C

RDREC

LDA

ZERO

001030




125

203F




TD

INPUT

E0205D

Киритиш қурилма текшириш

130

2042

RLOOP

JEQ

RLOOP

30203F

Тайёр бўлгунча такрорлаш

135

2045




RD

INPUT

D8205D

Белгини А регистрга ўқиш

140

2048




COMP

ZERO

281030

Ёзув тугаганл. текшириш

145

204B




JEQ

EXIT

30203F

Такрорлашдан чиқиш

150



204E




STCH



BUFFER,X



549039



Белгини буферга ёзиш (Х-силжиш)

155

2051




TIX

MAXLEN

2C205E

Такрорлаш жараёни

160

2054




JLT

RLOOP

38203F




165

2057




STX

LENGTH

101036




170

205A

EXIT

RSUB




4C0000




175

205D

INPUT

BYTE

X’F1’

F1




180

205E

MAXLEN

WORD

4096

001000




185

Буфердаги ёзувни чиқариш қисм дастурси

190

2061

WRREC

LDX

ZERO

041030




195

2064

WLOOP

TD

OUTPUT

E02079




200

2067




JEQ

WLOOP

302064




205

206A




LDCH

BUFFER, X

509039




210

206D




WD

OUTPUT

DC2079




215

2070




TIX

LENGTH

2C1036




220

2073




JLT

WLOOP

382064




225

2076




RSUB




4C0000




230

2079

OUTPUT

BYTE

X’05’

05




235







END

FIRST







Келтирилган дастурга изоҳ берайлик.



  1. Сатр номери мурожаат қилиш учун ишлатилади ва дастур таркибига кирмайди.

  1. «*» белгисидан бошланувчи сатр изоҳ ҳисобланади.

  1. қуйидагилар ассемблер директивалари ҳисобланади:

START – дастур номи ва бошланғич адресини аниқлайди;
END – дастур охирини кўрсатади ва дастурнинг биринчи бажарилувчи буйруғини аниқлайди;
BYTE - берилганларни хотирада тасвирлаш учун керак байтларни аниқлайди;
WORD – сўз катталигидаги ўзгармасни аниқлайди.
RESB – берилганлар учун қанча байт кетма-кетлигини ажратиш кераклиги билдиради.
RESW – берилганлар учун қанча сўз ажратиш кераклигини кўрсатади.
Дастур учта қисмдан иборат.
Асосий дастур киритиш қурилмасидан берилганларни ўқийди (F1H – қурилма) ва чиқариш қурилмасига (05H) чиқаради.
Берилганларни ўқиш RDREC, уларни ёзиш WRREC қисм дастурлари орқали амалга оширилади, бунда хотира буферидан фойдаланилади.
Ассемблер жараёнида дастур бошланғич матнидан машина кодига ўтиш амалга оширилади. Бунинг учун қуйидаги ишлар бажарилиши керак.

  1. Амалнинг (операциянинг) мнемоник кодини унга эквивалент

  2. машина тилидаги кодига ўтказиш керак. Масалан, STL ® 14H.

  3. Мос форматдаги машина буйруқларини кўриш.

  4. Ўзгармасларни машина хотирасидаги ички кўринишига (кодига) ўтказиш. Масалан, EOF ® 454F46.

  5. Объект дастурни маълумот сақлагичга ёзиш ва матнини чиқариш.

Шу ўринда буйруқларнинг мнемоник кодларига мос машина кодларини ва уларнинг мазмунларини келтириш мақсадга мувофиқдир.
қуйида дастурларда учрайдиган буйруқлар тўплам остиси келтирилган.



Буйруқ

Адрес

Буйруқ формати

Машина коди

Мазмуни

STL

m

3 / 4

14

m..mқ2 ¬ (L)

JSUB

m

3 / 4

48

L¬(Pc); Pc ¬ m

LDA

m

3 / 4

00

A ¬ (m..mқ2)

COMP

m

3 / 4

28

(A) : (m..mқ2)

JEQ

m

3 / 4

30

Pc¬m,агар CCқ ’қ’

J

m

3 / 4

3C

Pc ¬ m

STA

m

3 / 4

0C

m..mқ2 ¬ (A)

LDL

m

3 / 4

08

L ¬ (m..mқ2)

LDX

m

3 / 4

04

X ¬ (m..mқ2)

TD

m

3 / 4

E0

(m) даги қурилмани текшириш

RD

m

3 / 4

D8

A¬навбатдаги байт (m)

STCH

m

3 / 4

54

m ¬ (A) кичик байт

TIX

m

3 / 4

2C

(X)¬(X)қ1;(X):(m..mқ2)

JLT

m

3 / 4

38

Pc ¬ m, агар CCқ’>’

STX

m

3 / 4

10

m..mқ2 ¬ (X)

LDCH

m

3 / 4

50

A (кичик байтига)¬ (m)

Ассемблер жараёнида дастур матни маълумот оқими сифа­ти­да қаралади, яъни сатрлар кетма-кет ўқилади ва қайта ишланади. Бу жараённинг 2-қадамидан бошқасини амалга ошириш қийинчилик туғдирмайди.


Мисол учун, “10 FIRST STL RETADR” қаторидаги буйруқ учун машина кодини ҳосил қилишда буйруқ форматининг адрес майдони қийматини аниқлашнинг иложи йўқ, чунки RETADR адреси (у нишон бўлган қатор) ҳали учрамаган. Шу сабабли ассемблер икки ўтиш қилади. Биринчи ўтишда белги номлар (нишонлар) адресларини аниқлайди, иккинчи ўтишда бевосита трансляцияни амалга оширади.
Дастур матнида ассемблер кўрсатмалари (директивалари) бўлиб, улар бевосита машина буйруқларига ўтмайди ва ассемблер жараёнини бошқаришга хизмат қилади.
Ассемблер жараёнининг охирги босқичида дастур матнига мос объект дастур ҳосил бўлади (ихчамлик учун объект кодлар дастур матнидаги «Объект коди» устунида келтирилган), кейинчалик бу объект дастур оператив хотирага бажариш учун юкланади. Объект дастур тузилишига кўра учта ёзувдан иборат бўлади: бош қисм ёзуви; дастур танаси; тугаллаш ёзуви.
Бош қисм ёзуви.
Устунлар

1

2-7

8-13

14-19

H

Дастур номи

Дастур бошланғич адреси (16лик.)

Дастурнинг байтлардаги узунлиги (16лик)

Дастур танаси.


Устунлар

1

2-7

8-9

10-69

T

Ёзувнинг бошланғич адреси

Ёзувнинг байтлардаги узунлиги (16лик)

Объект кодлар (16лик)

Тугаллаш ёзуви.


Устунлар.

1

2-7

E

Объект дастурнинг биринчи бажарилувчи буйруғи адреси (16лик)

Юқорида келтирилган дастурнинг объект дастурси:


H^COPY ^001000^00107A


T^001000^1E^141033^482039^001036^281030^301015^482061^3C1003^00102A^0C1039^00102D
T^00101E^15^0C1036^482061^081033^4C0000^454F46^000003^000000
. . .
T^002073^07^382064^4C0000^05
E^001000
Бу ерда ^– белгиси ажратувчи сифатида келаяпти ва дастур таркибига кирмайди.

Download 230.64 Kb.

Do'stlaringiz bilan baham:
  1   2




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling