1-маъруза. Ассемблердан икки ўтишли транслятор


Download 74.88 Kb.
bet4/6
Sana20.11.2023
Hajmi74.88 Kb.
#1789604
TuriПрограмма
1   2   3   4   5   6
Bog'liq
SO`M

Буйруқлар формати. СЎМ /ҚВда катта ҳажмда хотира учун СЎМдаги 15 разрядли хотира майдони етарли эмас. Бу муаммони ечишнинг икки хил усули бор: биринчиси – нисбий адреслашдан фойдаланиш, иккинчиси адрес майдонини кенгайтириш. СЎМ/ҚВда бу усулларнинг иккаласидан ҳам фойдаланилади.
СЎМ/ҚВдаги буйруқ форматлари.




8

1. 1-байтлик

операция коди(Ор)





8

4

4

2. 2-байтлик

операция коди (Ор)

R1

R2







6

1

1

1

1

1

1

12

3. 3-байтлик

опер.коди

n

i

x

b

p

e

силжиш(disp)







6

1

1

1

1

1

1

20

4. 4-байтлик

опер.коди

n

i

x

b

p

e

адрес (addr)



Адреслаш усуллари. Стандарт СЎМга нисбатан СЎМ/ҚВда нисбий адреслашнинг иккита усули аниқланган (3-формат бўйича).



Адреслаш усули

Адрес аломатлари

Мақсад адресни ҳисоблаш

Базага нисбатан

b=1, p=0

TA = (B)+disp, (0ЈdispЈ4095)

Буйруқ ҳисоблагичига нисбатан

b=0, p=1

TA = (Pc)+ disp,
(-2048 Ј disp Ј 2047)

База бўйича адреслашда силжиш майдони 12 разрядли ишорасиз бутун сон деб қаралади. Буйруқлар ҳисоблагичига нисбатан адрес-лашда 12 разрядли силжиш ишорали бутун сон деб қаралади.


Агар 3-формат буйруғида b=0, p=0 бўлса, мақсад адреси disp майдонидан олинади.
4-формат буйруғида b=0, p=0 бўлса, мақсад адрес addr майдонидан олинади. Адреслашнинг бу ҳолига тўғридан-тўғри адреслаш дейилади.
Юқорида келтирилган адреслашлар индексли адреслаш билан биргаликда олиб борилиши мумкин, бунда х- разряд қиймати 1 ва адрес хисобига (Х) қиймати қўшилади.
3-4-формат буйруқларида i ва n разрядлар мақсад адресни ишлатиш усулини билдиради.
Агар i=1 ва n=0 бўлса, мақсад адрес қиймати операнд сифатида ишлатилади. Бу усулга бевосита адреслаш дейилади.
Агар i=0 ва n=1 бўлса, мақсад адреси бўйича сўз қиймати операнд адреси сифатида ишлатилади. Бу усулга воситали адреслаш дейилади.
Агар бир вақтда i ва n бир вақтда 0 ёки 1 бўлса, мақсад адрес қиймати операнд жойлашиш ўрнини беради. Бу усулга оддий адреслаш дейилади.
Буйруқлар тизими. Стандарт СЎМга қўшимча равишда LDB, STB – B регистрга ёзиш ва B регистрдан хотирага ёзиш. ADDF, SUBF, MULF, DIVF- cузувчи нуқтали арифметик амаллар. RMO – бир регистрдан иккинчи регистрга узатиш. ADDR, SUBR, MULR, DIVR – регистр қиймати устида амал бажариш. SVC – супервизорга мурожаат қилиш.
Қуйида СЎМ/ҚВда адреслашга доир мисол келтирилган.
А регистрга қиймат юклаш буйруғи (LDA) бажарилиши, буйруқ коди 00Н.

...




(B) = 006000

3030

003600

(Pc)=003000

...




(X) =000090

3600

103000




...







6390

00C303




...







C303

003030




...










Буйруқ

Ор

n

i

x

b

p

e

силжиш/адрес

Мақсад адрес

А регистрга юкланган қиймат

032600
03С300
022030
010030
002600
0310С303

000000
000000
000000
000000
000000
000000

1
11001

11
0101

0
1
0
0
00

0
1
0
000

1
0
1
0
10

0
0
0
0
0
1

0110 0000 0000
0011 0000 0000
0000 0011 0000
0000 0011 0000
0110 0000 0000
0000 1100 0011 0000 0011

3600
6390
3030
30
3600
С303

103000
00С303
103000
000030
103000
003030

Ушбу мисол адреслаш усулларини чуқурроқ тушиниб олишга ёрдам беради.

Объект кодни ҳосил қилиш


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



Сатр

Адрес

Нишон

Буйруқ

Операнд

Объект коди

Изоҳ

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




60

101E




STA

LENGTH

0C1036

LENGTH =3

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 74.88 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6




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