1-маъруза. Ассемблердан икки ўтишли транслятор
SO`M
- Bu sahifa navigatsiya:
- Тайёр бўлгунча такрорлашш
- Барча белгилар
15 |
0003 |
CLOOP |
+JSUB |
RDREC |
4B100000 |
Берилганларни ўқиш | |||
20 |
0007 |
|
LDA |
LENGTH |
032023 |
Ўқиш тугаганлигини аниқлаш | |||
25 |
000A |
|
COMP |
#0 |
290000 |
EOF (LENGTH=0) | |||
30 |
000D |
|
JEQ |
ENDFIL |
332007 |
EOF бўлса чиқиш | |||
35 |
0010 |
|
+JSUB |
WRREC |
4B100000 |
Берилганларни ёзиш | |||
40 |
0014 |
|
J |
CLOOP |
3F2FEC |
Такрорлаш | |||
45 |
0017 |
ENDFIL |
LDA |
=C’EOF’ |
032016 |
Файл охири белгисини юклаш | |||
50 |
001A |
|
STA |
BUFFER |
0F2016 |
| |||
55 |
001D |
|
LDA |
#3 |
010003 |
LENGTH =3 | |||
60 |
0020 |
|
STA |
LENGTH |
0F200A |
| |||
65 |
0023 |
|
+JSUB |
WRREC |
4B100000 |
EOF ни чикариш | |||
70 |
0027 |
|
J |
@RETADR |
3E2000 |
Программадан чикиш | |||
95 |
002A |
RETADR |
RESW |
1 |
|
| |||
100 |
002D |
LENGTH |
RESW |
1 |
|
Ёзув узунлиги | |||
|
0030 |
* |
=C’EOF’ |
|
454F46 |
Файл охири белгиси | |||
105 |
0033 |
BUFFER |
RESB |
4096 |
|
| |||
106 |
1033 |
BUFEND |
EQU |
* |
|
BUFEND қиймати жойлаштигич қийматига тенг | |||
107 |
1000 |
MAXLEN |
EQU |
BUFEND - BUFFER |
MAXLEN адреслар айирмасига тенг | ||||
109 |
0000 |
RDREC |
CSECT |
|
|
Бошқарув секция боши | |||
110 |
|
|
EXTREF BUFFER, BUFEND, LENGTH |
| |||||
115 |
0000 |
|
CLEAR |
X |
B410 |
Такрорлаш ҳисоблагичига 0 қиймат | |||
120 |
0002 |
|
CLEAR |
A |
B400 |
A регистрга 0 қиймат | |||
125 |
0004 |
|
CLEAR |
S |
B440 |
B регистрга 0 қиймат | |||
130 |
0006 |
|
LDT |
MAXLEN |
77201F |
Ёзувнинг максимал узунлиги | |||
135 |
0009 |
RLOOP |
TD |
INPUT |
E3201B |
Ўқиш қурилмани текшириш | |||
140 |
000C |
|
JEQ |
RLOOP |
332FFA |
Тайёр бўлгунча такрорлаш | |||
145 |
000F |
|
RD |
INPUT |
DB2015 |
А регистрга белгини ўқиш | |||
150 |
0012 |
|
COMPR |
A,S |
A004 |
Ёзув тугашини текшириш | |||
155 |
0014 |
|
JEQ |
EXIT |
332009 |
Охири бўлса -чиқиш | |||
160 |
0017 |
|
+STCH |
BUFFER, X |
57900000 |
Буферга белгини ёзиш | |||
165 |
001B |
|
TIXR |
T |
B850 |
Ёзув максимал узунлигигача | |||
170 |
001D |
|
JLT |
RLOOP |
3B2FE9 |
Такрорлаш | |||
175 |
0020 |
EXIT |
+STX |
LENGTH |
13100000 |
Ёзув узунлиги | |||
180 |
0024 |
|
RSUB |
|
4F0000 |
Қисмпрограммадан қайтиш | |||
185 |
0027 |
INPUT |
BYTE |
X’F1’ |
F1 |
Ўқиш қурилмаси коди | |||
190 |
0028 |
MAXLEN |
WORD |
BUFEND - BUFEND |
| ||||
|
|
|
|
|
|
| |||
191 |
0000 |
WRREC |
CSECT |
|
|
| |||
192 |
|
|
EXTREF LENGTH, BUFFER |
|
| ||||
195 |
0000 |
|
CLEAR |
X |
4B10 |
Такрорлаш ҳисоблагич. 0 қиймат бериш | |||
200 |
0002 |
|
+LDT |
LENGTH |
77100000 |
| |||
205 |
0006 |
WLOOP |
TD |
қX’05’ |
E32012 |
Ёзиш қурилмасини текшириш | |||
210 |
0009 |
|
JEQ |
WLOOP |
332FFA | Тайёр бўлгунча такрорлашш | |||
215 |
000C |
|
+LDCH |
BUFFER, X |
53900000 |
Буфердан ўқиш | |||
220 |
0010 |
|
WD |
=X’05’ |
DF200B |
Белгини ёзиш | |||
225 |
0013 |
|
TIXR |
T |
B850 | Барча белгиларЁзилгунча | |||
230 |
0015 |
|
JLT |
WLOOP |
3B2FEE |
Такрорлаш | |||
235 |
0018 |
|
RSUB |
|
4F0000 |
Қисмпрограммадан қайтиш | |||
240 |
|
|
END |
FIRST |
|
| |||
245 |
001B |
* |
=X’05’ |
|
05 |
|
Программа учта БСдан иборат: асосий программа ва ўқиш ва ёзиш қисм программалари. COPY - биринчи БС номи. У 109 қатордаги CSECT ифодасигача. CSECT янги БС бошланишини билдиради. Ҳар бир БС учун код генерациясида адрес (жойлаштириш адреси) нолдан бошланади.
Бир БСда аниқланган ном бошқа БСда бевосита ишлатилиши мумкин эмас. Агар бунга зарурат бўлса, программа матнида бу номлар юклагич томонидан қайта ишланиши учун ташқи кўрсатгич (EXTREF) ва ташқи номлар (EXTDEF) сифатида эълон қилиниши керак. COPY БСдаги BUFFER, BUFEND ва LENGTH нишонлар COPYдан ташқарида ҳам ишлатилиши учун улар EXTDEF руйхатида бўлиши керак. COPY, RDREC, WDREC номларнинг EXTDEF ёзувида эълон қилиниши шарт эмас, улар юклаш жараёнида автоматик равишда аниқланади.
Ташқи номлар аниқловчиси (EXTDEF ) формати.
Устунлар ва улар қийматлари | |||
1 |
2-7 |
8-13 |
14-73 |
D |
Ташқи ном идентификатори (шу секцияда аниқланган) |
Номнинг нисбий адреси (16 санок тизимсида) |
8-13 устунлардек |
Ташқи кўрсатгич ёзуви (EXTREF) формати.
Устунлар ва улар қийматлари | ||
1 |
2-7 |
8-73 |
D |
Бу секцияда мурожаат бўлган ташқи ном |
2-7 устунлардек |
Энди программанинг ассемблер томонидан қайта ишланишининг ўзига хос томонларини программанинг 15-қатордаги буйруғи учун код ҳосил қилинишида кўрайлик.
15 0003 CLOOP +JSUB RDREC 4B100000
Бу ерда RDREC ташқи кўрсатгич. Ассемблер учун RDREC хотирага юкланиш адреси номаълум. Шу сабабли буйруқ кодининг адрес қисмига 0 қиймати ёзилади. Худди шундай 160 буйруқнинг адрес майдони ва 190 қатордаги ҳисобланувчи қиймат 0 бўлади. Юклагич бундай буйруқлардаги адресларнинг “бўш” ўринларини тўлдириш учун модифиқатор ёзувига қўшимчалар киритиш зарур:
Устунлар ва улар қийматлари | ||||
1 |
2-7 |
8-9 |
10 |
11-16 |
M |
Модификация қилинувчи адреснинг программа бошига нисбатан силжиши |
Модификация қилинувчи адрес майдонининг ярим байтлардаги узунлиги (16 саноқ тизимида) |
Модификация аломати (+ ёки -) |
Қиймати кўрсатилган майдонга қўшиладиган ёки айриладиган ташқи ном |
Бошқарув секцияларидан ташкил топган программа матнига мос келувчи объект программа:
HCOPY000000001033
DBUFFER000033BUFEND001033LENGTH00002D
RRDRECWDREC
T0000001D1720274B1000000320232900074B100000...
....
M00000405+RDREC
M00001105+WDREC
M00002405+WDREC
E000000
HRDREC00000000002D
RBUFFERLENGTHBUFEND
T0000001DB410B400B44077201FE3201B332FFADB2015A004332009...
....
M00001805+BUFFER
M00002105+LENGTH
M00002805+BUFEND
M00002805- BUFFER
E000000
HWRREC00000000002C
RBUFFERLENGTH
T0000001CB41077100000E32012332FFA53900000DF2008B8503B2FEE4F000005
M00001805+BUFFER
M00002105+LENGTH
M00002805+BUFEND
M00002805- BUFFER
E000000
Download 74.88 Kb.
Do'stlaringiz bilan baham:
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling