1-маъруза. Ассемблердан икки ўтишли транслятор
Download 74.88 Kb.
|
SO`M
- Bu sahifa navigatsiya:
- Адреслаш усуллари
- Адреслаш усули Адрес аломатлари Мақсад адресни ҳисоблаш
- Ассемблернинг асосий вазифалари.
Буйруқлар формати. СЎМ /ҚВда катта ҳажмда хотира учун СЎМдаги 15 разрядли хотира майдони етарли эмас. Бу муаммони ечишнинг икки хил усули бор: биринчиси – нисбий адреслашдан фойдаланиш, иккинчиси адрес майдонини кенгайтириш. СЎМ/ҚВда бу усулларнинг иккаласидан ҳам фойдаланилади.
СЎМ/ҚВдаги буйруқ форматлари.
Адреслаш усуллари. Стандарт СЎМга нисбатан СЎМ/ҚВда нисбий адреслашнинг иккита усули аниқланган (3-формат бўйича).
База бўйича адреслашда силжиш майдони 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Н.
Ушбу мисол адреслаш усулларини чуқурроқ тушиниб олишга ёрдам беради. Объект кодни ҳосил қилишАссемблер жараёнида программадаги буйруқларнинг мнемоник кодларига уларга мос машина эквивалентларига ўтказиш, программадаги белги нишонларга машина адресларини тайинлашдек вазифалар бажарилади. Биз СЎМ ва СЎМ/ҚВ учун ассемблерларни кўриб чиқамиз. Бу мисолларда ассемблерлар учун умумий бўлган томонлари, ассемблерда ишлатиладиган алгоритмлар, берилганлар тузилишлари кўриб чиқилади. Ассемблернинг машинанинг аппарат хусусиятларига боғлиқ бўлган томонлари СЎМ/ҚВучун кўрилган ассемблерларда қурилади. Ассемблернинг асосий вазифалари. СЎМ учун ассемблер тилидаги программа ёрдамида ассемблернинг асосий хусусиятларини кўрамиз. Бу программа матни қуйида келтирилади.
Келтирилган программага изоҳ берайлик. Сатр номери мурожаат қилиш учун ишлатилади ва программа таркибига кирмайди. «*» белгисидан бошланувчи сатр изоҳ ҳисобланади. Қуйидагилар ассемблер директивалари ҳисобланади: START – программа номи ва бошланғич адресини аниқлайди; END – программа охирини кўрсатади ва программанинг биринчи бажарилувчи буйруғини аниқлайди; BYTE - берилганларни хотирада тасвирлаш учун керак байтларни аниқлайди; WORD – сўз катталигидаги ўзгармасни аниқлайди. RESB – берилганлар учун қанча байт кетма-кетлигини ажратиш кераклиги билдиради. RESW – берилганлар учун қанча сўз ажратиш кераклигини кўрсатади. Программа учта қисмдан иборат. Асосий программа киритиш қурилмасидан берилганларни ўқийди (F1H – қурилма) ва чиқариш қурилмасига (05H) чиқаради. Берилганларни ўқиш RDREC, уларни ёзиш WRREC қисм программалари орқали амалга оширилади, бунда хотира буферидан фойдаланилади. Ассемблер жараёнида программа бошланғич матнидан машина кодига ўтиш амалга оширилади. Бунинг учун қуйидаги ишлар бажарилиши керак. Амалнинг (операциянинг) мнемоник кодини унга эквивалент машина тилидаги кодига ўтказиш керак. Масалан, STL ® 14H. Мос форматдаги машина буйруқларини кўриш. Ўзгармасларни машина хотирасидаги ички кўринишига (кодига) ўтказиш. Масалан, EOF ® 454F46. Объект программани маълумот сақлагичга ёзиш ва матнини чиқариш. Шу ўринда буйруқларнинг мнемоник кодларига мос машина кодларини ва уларнинг мазмунларини келтириш мақсадга мувофиқдир. Қуйида программаларда учрайдиган буйруқлар тўплам остиси келтирилган.
Ассемблер жараёнида программа матни маълумот оқими сифатида қаралади, яъни сатрлар кетма-кет ўқилади ва қайта ишланади. Бу жараённинг 2-қадамидан бошқасини амалга ошириш қийинчилик туғдирмайди. Мисол учун, “10 FIRST STL RETADR” қаторидаги буйруқ учун машина кодини ҳосил қилишда буйруқ форматининг адрес майдони қийматини аниқлашнинг иложи йўқ, чунки RETADR адреси (у нишон бўлган қатор) ҳали учрамаган. Шу сабабли ассемблер икки ўтиш қилади. Биринчи ўтишда белги номлар (нишонлар) адресларини аниқлайди, иккинчи ўтишда бевосита трансляцияни амалга оширади. Программа матнида ассемблер кўрсатмалари (директивалари) бўлиб, улар бевосита машина буйруқларига ўтмайди ва ассемблер жараёнини бошқаришга хизмат қилади. Ассемблер жараёнининг охирги босқичида программа матнига мос объект программа ҳосил бўлади (ихчамлик учун объект кодлар программа матнидаги «Объект коди» устунида келтирилган), кейинчалик бу объект программа оператив хотирага бажариш учун юкланади. Объект программа тузилишига кўра учта ёзувдан иборат бўлади: бош қисм ёзуви; программа танаси; тугаллаш ёзуви. Бош қисм ёзуви.
Программа танаси.
Тугаллаш ёзуви.
Юқорида келтирилган программанинг объект программаси: 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: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling