එකලස් කිරීමේ භාෂාවේ සහ උපදෙස් ව්‍යුහයේ මූලික කොටස්. එකලස් කිරීමේ භාෂා විධානවල දත්ත ආකෘතිය සහ ව්‍යුහය. "පද්ධති වැඩසටහන්කරණය" විනය තුළ

හැදින්වීම.

මූලාශ්‍ර වැඩසටහන ලියා ඇති භාෂාව ලෙස හැඳින්වේ ඇතුල්වීමභාෂාව, සහ එය ප්‍රොසෙසරය මඟින් ක්‍රියාත්මක කිරීම සඳහා පරිවර්තනය කරන භාෂාව වේ නිවාඩු දිනවලදිව. ආදාන භාෂාව ප්‍රතිදාන භාෂාව බවට පරිවර්තනය කිරීමේ ක්‍රියාවලිය ලෙස හැඳින්වේ විකාශනය.ක්‍රමලේඛනය සඳහා භාවිතා නොකරන ද්විමය යන්ත්‍ර භාෂාවෙන් වැඩසටහන් ක්‍රියාත්මක කිරීමට ප්‍රොසෙසරවලට හැකියාව ඇති බැවින්, සියලුම මූලාශ්‍ර වැඩසටහන් පරිවර්තනය කිරීම අවශ්‍ය වේ. දන්නා ක්රම දෙකක්විකාශන: සම්පාදනය සහ අර්ථ නිරූපණය.

හිදී සම්පාදනයමූලාශ්‍ර ක්‍රමලේඛය ප්‍රථමයෙන් සම්පුර්ණයෙන්ම ප්‍රතිදාන භාෂාවෙන් සමාන වැඩසටහනකට පරිවර්තනය කර ඇත වස්තුවවැඩසටහන සහ පසුව ක්රියාත්මක කිරීම. මෙම ක්රියාවලිය විශේෂ භාවිතා කරමින් ක්රියාත්මක වේ වැඩසටහන්,කියලා සම්පාදක.ද්විමය කේතවල යන්ත්‍ර (ප්‍රතිදාන) භාෂාව නියෝජනය කිරීමේ සංකේතාත්මක ස්වරූපයක් ආදාන භාෂාව වන සම්පාදකයක් ලෙස හැඳින්වේ. එකලස් කරන්නා.

හිදී අර්ථකථනමූලාශ්‍ර ක්‍රමලේඛයේ සෑම පෙළ පේළියක්ම විශ්ලේෂණය කර (අර්ථකථනය කර) එහි සඳහන් කර ඇති විධානය වහාම ක්‍රියාත්මක වේ. මෙම ක්රමය ක්රියාත්මක කිරීම භාර දෙනු ලැබේ පරිවර්තක වැඩසටහන.අර්ථ නිරූපණයට බොහෝ කාලයක් ගතවේ. එහි කාර්යක්ෂමතාව වැඩි කිරීම සඳහා, එක් එක් පේළිය සැකසීම වෙනුවට, පරිවර්තකයා පළමුව සියල්ල පරිවර්තනය කරයි කණ්ඩායමඅක්ෂර වලට නූල් (

) මුල් වැඩසටහනට පවරා ඇති කාර්යයන් ඉටු කිරීම සඳහා ජනනය කරන ලද සංකේත අනුපිළිවෙල භාවිතා වේ.

පහත සාකච්ඡා කර ඇති එකලස් කිරීමේ භාෂාව සම්පාදනය භාවිතයෙන් ක්‍රියාත්මක වේ.

භාෂාවේ විශේෂාංග.

එකලස් කිරීමේ ප්රධාන ලක්ෂණ:

● ද්විමය කේත වෙනුවට, භාෂාව සංකේතාත්මක නම් භාවිතා කරයි - සිහිවටන.උදාහරණයක් ලෙස, එකතු කිරීමේ විධානය සඳහා (

) සිහිවටන භාවිතා වේ

අඩු කිරීම් (

ගුණ කිරීම (

කොට්ඨාශ (

ආදිය. මතක සෛල ආමන්ත්‍රණය කිරීමට සංකේතාත්මක නම් ද භාවිතා වේ. එකලස් කිරීමේ භාෂාවෙන් වැඩසටහන් කිරීමට, ද්විමය කේත සහ ලිපින වෙනුවට, ඔබ දැනගත යුත්තේ එකලස් කරන්නා ද්විමය කේත බවට පරිවර්තනය කරන සංකේතාත්මක නම් පමණි;

එක් එක් ප්රකාශය අනුරූප වේ එක් යන්ත්‍ර විධානයක්(කේතය), එනම් එකලස් භාෂා වැඩසටහනක යන්ත්‍ර විධාන සහ ක්‍රියාකරුවන් අතර එකින් එක ලිපි හුවමාරුවක් ඇත;

● භාෂාව ප්‍රවේශය සපයයි සියලු වස්තූන් වෙතසහ කණ්ඩායම්. ඉහළ මට්ටමේ භාෂාවලට මෙම හැකියාව නොමැත. උදාහරණයක් ලෙස, එකලස් කිරීමේ භාෂාව ඔබට ධජ ලේඛනයේ බිටු පරීක්ෂා කිරීමට සහ ඉහළ මට්ටමේ භාෂාව (උදාහරණයක් ලෙස,

) මෙම හැකියාව නැත. පද්ධති ක්‍රමලේඛන භාෂා (උදාහරණයක් ලෙස, C) බොහෝ විට අතරමැදි ස්ථානයක් ගන්නා බව සලකන්න. ප්‍රවේශ්‍යතාව අනුව, ඒවා එකලස් කිරීමේ භාෂාවට සමීප වන නමුත් ඉහළ මට්ටමේ භාෂාවක වාක්‍ය ඛණ්ඩය ඇත;

● එකලස් කිරීමේ භාෂාව විශ්ව භාෂාවක් නොවේ.සෑම විශේෂිත මයික්‍රොප්‍රොසෙසර සමූහයකටම තමන්ගේම එකලස් කරන්නා ඇත. ඉහළ මට්ටමේ භාෂාවලට මෙම අඩුපාඩුවක් නොමැත.

ඉහළ මට්ටමේ භාෂා මෙන් නොව, එකලස් කිරීමේ භාෂාවෙන් වැඩසටහනක් ලිවීමට සහ දෝෂහරණය කිරීමට බොහෝ කාලයක් ගතවේ. එසේ තිබියදීත්, එකලස් කිරීමේ භාෂාව ලැබී ඇත පුළුල් භාවිතයපහත සඳහන් තත්වයන් නිසා:

● එකලස් කිරීමේ භාෂාවෙන් ලියන ලද වැඩසටහනක් ප්‍රමාණයෙන් සැලකිය යුතු තරම් කුඩා වන අතර ඉහළ මට්ටමේ භාෂාවකින් ලියන ලද වැඩසටහනකට වඩා ඉතා වේගයෙන් ධාවනය වේ. සමහර යෙදුම් සඳහා මෙම දර්ශක මූලික කාර්යභාරයක් ඉටු කරයි, උදාහරණයක් ලෙස, බොහෝ පද්ධති වැඩසටහන්(සම්පාදකයන් ඇතුළුව), ක්‍රෙඩිට් කාඩ් මත වැඩසටහන්, ජංගම දුරකථන, උපාංග ධාවක, ආදිය;

● සමහර ක්රියා පටිපාටි අවශ්ය වේ සම්පූර්ණ ප්රවේශයසාමාන්‍යයෙන් ඉහළ මට්ටමේ භාෂාවකින් කළ නොහැකි දෘඪාංග වෙත. මෙම නඩුවට මෙහෙයුම් පද්ධතිවල බාධා කිරීම් සහ බාධා කිරීම් හසුරුවන්නා මෙන්ම කාවැද්දූ තත්‍ය කාලීන පද්ධතිවල උපාංග පාලක ද ඇතුළත් වේ.

බොහෝ වැඩසටහන් වලදී, සම්පූර්ණ කේතයෙන් කුඩා ප්‍රතිශතයක් පමණක් වැඩසටහන ක්‍රියාත්මක කිරීමේ කාලයෙන් විශාල ප්‍රතිශතයකට වගකිව යුතුය. සාමාන්‍යයෙන්, වැඩසටහනේ 1% ක්‍රියාත්මක කිරීමේ කාලයෙන් 50% ක් සඳහා වගකිව යුතු අතර, වැඩසටහනේ 10% ක් ක්‍රියාත්මක කිරීමේ කාලයෙන් 90% ක් සඳහා වගකිව යුතුය. එබැවින්, සැබෑ තත්වයන් තුළ නිශ්චිත වැඩසටහනක් ලිවීම සඳහා, Assembler සහ ඉහළ මට්ටමේ භාෂා දෙකම භාවිතා වේ.

එකලස් කිරීමේ භාෂාවෙන් ක්‍රියාකරු ආකෘතිය.

එකලස් කිරීමේ භාෂා වැඩසටහනක් යනු විධාන ලැයිස්තුවකි (ප්‍රකාශයන්, වාක්‍ය), ඒ සෑම එකක්ම වෙනම රේඛාවක් ඇති අතර ක්ෂේත්‍ර හතරක් අඩංගු වේ: ලේබල් ක්ෂේත්‍රයක්, මෙහෙයුම් ක්ෂේත්‍රයක්, ඔපෙරන්ඩ් ක්ෂේත්‍රයක් සහ අදහස් ක්ෂේත්‍රයක්. සෑම ක්ෂේත්‍රයක්ම වෙනම තීරුවක් ඇත.

ලේබල් ක්ෂේත්රය.

1 තීරුව ලේබල් ක්ෂේත්‍රය සඳහා වෙන් කර ඇත. ලේබලය සංකේතාත්මක නමක් හෝ හඳුනාගැනීමකි, ලිපිනයන්මතකය. ඔබට හැකි වන පරිදි එය අවශ්ය වේ:

● විධානයට කොන්දේසි සහිත හෝ කොන්දේසි විරහිත සංක්‍රමණයක් කරන්න;

● දත්ත ගබඩා කර ඇති ස්ථානයට ප්‍රවේශය ලබා ගන්න.

එවැනි ප්රකාශයන් ලේබලයක් සමඟ සපයා ඇත. නමක් දැක්වීමට ඉංග්‍රීසි හෝඩියේ (කැපිටල්) අකුරු සහ ඉලක්කම් භාවිතා වේ. නමේ ආරම්භයේ අකුරක් සහ අවසානයේ මහා බඩවැලේ බෙදුම්කරු තිබිය යුතුය. මහා බඩවැලේ ලේබලය වෙනම පේළියක ලිවිය හැකි අතර, සම්පාදකයාගේ කාර්යය සරල කරන තීරු 2 හි ඊළඟ පේළියේ opcode ලිවිය හැකිය. මහා බඩවැලේ නොමැති වීම ලේබලයක් වෙනම රේඛාවල පිහිටා තිබේ නම් මෙහෙයුම් කේතයකින් වෙන්කර හඳුනා ගැනීමට ඉඩ නොදේ.

එකලස් කිරීමේ භාෂාවේ සමහර අනුවාදවල, කොලන් ස්ථානගත කරනු ලබන්නේ උපදෙස් ලේබලවලට පසුව මිස දත්ත ලේබලවලට පසුව නොවේ, සහ ලේබලයේ දිග අක්ෂර 6ක් හෝ 8කට සීමා විය හැක.

ලේබලය විධාන ලිපින සමඟ සම්බන්ධ වී ඇති බැවින් ලේබල් ක්ෂේත්‍රයේ සමාන නම් නොතිබිය යුතුය. වැඩසටහන් ක්‍රියාත්මක කිරීමේදී මතකයෙන් විධානයක් හෝ දත්තයක් ඇමතීමට අවශ්‍ය නොවන්නේ නම්, ලේබල් ක්ෂේත්‍රය හිස්ව පවතී.

මෙහෙයුම් කේත ක්ෂේත්රය.

මෙම ක්ෂේත්‍රයේ විධානයක් හෝ ව්‍යාජ විධානයක් සඳහා වන සිහිවටන කේතය අඩංගු වේ (පහත බලන්න). විධාන සිහිවටන කේතය භාෂා සංවර්ධකයින් විසින් තෝරා ගනු ලැබේ. එකලස් කිරීමේ භාෂාවෙන්

මතකයෙන් ලේඛනයක් පූරණය කිරීමට mnemonic තෝරා ඇත

), සහ ලේඛනයේ අන්තර්ගතය මතකයේ සුරැකීමට - සිහිවටනයක්

) එකලස් කිරීමේ භාෂාවලින්

මෙහෙයුම් දෙකම සඳහා ඔබට පිළිවෙලින් එකම නම භාවිතා කළ හැකිය

සිහිවටන නම් තෝරා ගැනීම අත්තනෝමතික විය හැකි නම්, යන්ත්‍ර උපදෙස් දෙකක් භාවිතා කිරීමේ අවශ්‍යතාවය තීරණය වන්නේ ප්‍රොසෙසර ගෘහ නිර්මාණ ශිල්පය මගිනි.

රෙජිස්ටර් වල සිහිවටන ද එකලස් කිරීමේ අනුවාදය මත රඳා පවතී (වගුව 5.2.1).

මෙහෙයුම් ක්ෂේත්රය.

මෙහි පිහිටා ඇත අමතර තොරතුරු, මෙහෙයුම සිදු කිරීම සඳහා අවශ්ය වේ. ජම්ප් විධාන සඳහා වන ඔපෙරන්ඩ් ක්ෂේත්‍රයේ, පැනීම සිදු කළ යුතු ලිපිනය මෙන්ම යන්ත්‍ර විධානය සඳහා ඔපෙරාන්ඩ් වන ලිපින සහ රෙජිස්ටර් ද දක්වා ඇත. උදාහරණයක් ලෙස, අපි 8-bit ප්‍රොසෙසර සඳහා භාවිතා කළ හැකි operands ලබා දෙමු

● සංඛ්‍යාත්මක දත්ත,

විවිධ සංඛ්යා පද්ධති වලින් ඉදිරිපත් කෙරේ. භාවිතා කරන ලද සංඛ්‍යා පද්ධතිය දැක්වීමට, නියතය ලතින් අකුරෙන් එකක් අනුගමනය කරයි: B,

ඒ අනුව ද්විමය, අෂ්ටක, ෂඩ් දශම, දශම සංඛ්‍යා පද්ධති (

ඔබට එය ලිවීමට අවශ්‍ය නැත). ෂඩාස්රාකාර අංකයක පළමු ඉලක්කම් A, B, C නම්,

එවිට නොවැදගත් 0 (ශුන්‍ය) ඉදිරියෙන් එකතු වේ;

● අභ්‍යන්තර මයික්‍රොප්‍රොසෙසර් රෙජිස්ටර් සහ මතක සෛලවල කේත

M (මූලාශ්‍ර හෝ තොරතුරු ග්‍රාහක) A, B, C, අක්ෂර ආකාරයෙන්

M හෝ ඔවුන්ගේ ලිපින ඕනෑම සංඛ්‍යා පද්ධතියක (උදාහරණයක් ලෙස, 10B - ලියාපදිංචි ලිපිනය

ද්විමය පද්ධතියේ);

● හඳුනාගැනීම්,

ගුවන් යානා යුගල ලියාපදිංචි කිරීම සඳහා,

පළමු අකුරු B වේ,

එන්; සමුච්චය සහ විශේෂාංග ලේඛන යුගල සඳහා -

; වැඩසටහන් කවුන්ටරය සඳහා -

;ස්ටැක් පොයින්ටරය සඳහා -

● මෙහෙයුම් වල ලිපිනයන් හෝ කොන්දේසි සහිත ඊළඟ උපදෙස් දැක්වෙන ලේබල්

(කොන්දේසිය සපුරා ඇත්නම්) සහ කොන්දේසි විරහිත සංක්රමණයන්.උදාහරණයක් ලෙස, විධානය තුළ operand M1

විධානයට කොන්දේසි විරහිත සංක්‍රමණයක අවශ්‍යතාවය අදහස් කරයි, ලේබල් ක්ෂේත්‍රයේ ලිපිනය M1 හඳුනාගැනීමෙන් සලකුණු කර ඇත;

● ප්රකාශන,

ගණිතමය සහ තාර්කික ක්‍රියාකරුවන් භාවිතයෙන් ඉහත සාකච්ඡා කළ දත්ත සම්බන්ධ කිරීමෙන් ගොඩනගා ඇත. දත්ත අවකාශය වෙන්කර ගැනීමේ ක්‍රමය භාෂා අනුවාදය මත රඳා පවතින බව සලකන්න. එකලස් කිරීමේ භාෂා සංවර්ධකයින් සඳහා

වචනය නිර්වචනය කරන්න), පසුව ඇතුල් කරන්න විකල්ප විකල්පය.

ආරම්භයේ සිටම ප්‍රොසෙසර සඳහා භාෂාවෙන් තිබූ

භාෂා අනුවාදයේ

භාවිතා කරන ලදී

නියතයක් නිර්වචනය කරන්න).

ප්‍රොසෙසරයන් විවිධ දිග වල ඔපරෙන්ඩ් සකසයි. එය නිර්වචනය කිරීම සඳහා, එකලස් කිරීමේ සංවර්ධකයින් විවිධ තීරණ ගත්හ, උදාහරණයක් ලෙස:

විවිධ දිග ඇති II රෙජිස්ටර් වලට විවිධ නම් ඇත: EAX - 32-bit operands (වර්ගය) තැබීම සඳහා

); AX - 16-bit සඳහා (වර්ගය

සහ AN - 8-bit සඳහා (වර්ගය

● ප්‍රොසෙසර සඳහා

එක් එක් මෙහෙයුම් කේතයට උපසර්ග එකතු කරනු ලැබේ: උපසර්ගය

වර්ගය සඳහා

; වර්ගය සඳහා ".B" උපසර්ගය

විවිධ දිග ඔපෙරන්ඩ් සඳහා විවිධ opcodes භාවිතා වේ, උදාහරණයක් ලෙස, බයිටයක් පැටවීමට, අර්ධ වචනය (

) සහ opcodes භාවිතයෙන් 64-bit ලේඛනයකට වචන

පිළිවෙලින්.

අදහස් ක්ෂේත්‍රය.

මෙම ක්ෂේත්‍රය වැඩසටහනේ ක්‍රියාවන් පිළිබඳ පැහැදිලි කිරීම් සපයයි. අදහස් වැඩසටහනේ ක්‍රියාකාරිත්වයට බලපාන්නේ නැති අතර මිනිසුන් සඳහා අදහස් කෙරේ. එවැනි අදහස් නොමැතිව පළපුරුදු ක්‍රමලේඛකයින්ට පවා සම්පූර්ණයෙන්ම තේරුම්ගත නොහැකි වැඩසටහනක් වෙනස් කිරීමට ඒවා අවශ්‍ය විය හැකිය. අදහස් දැක්වීමක් සංකේතයකින් ආරම්භ වන අතර වැඩසටහන් පැහැදිලි කිරීමට සහ ලේඛනගත කිරීමට භාවිතා කරයි. අදහස් දැක්වීමක ආරම්භක චරිතය විය හැක්කේ:

● සමාගමේ ප්‍රොසෙසර සඳහා භාෂාවලින් අර්ධ කොමා (;).

විශ්මයජනක ලක්ෂ්‍යය(!) සඳහා භාෂාවලින්

සෑම වෙනම විවරණ රේඛාවකටම පෙර ප්‍රමුඛ චරිතයක් ඇත.

ව්යාජ විධාන (විධාන).

එකලස් කිරීමේ භාෂාවේ ප්‍රධාන විධාන වර්ග දෙකක් තිබේ:

මූලිකප්‍රොසෙසර යන්ත්‍ර කේතයට සමාන උපදෙස්. මෙම විධාන මඟින් වැඩසටහන මගින් අදහස් කරන සියලුම සැකසුම් සිදු කරයි;

ව්යාජ විධානහෝ නියෝග,වැඩසටහනක් කේත සංයෝජන භාෂාවකට පරිවර්තනය කිරීමේ ක්‍රියාවලියට සේවා සැපයීම සඳහා නිර්මාණය කර ඇත. වගුවේ උදාහරණයක් ලෙස. 5.2.2 එකලස් කරන්නා වෙතින් සමහර ව්‍යාජ විධාන පෙන්වයි

පවුල සඳහා

.

ක්‍රමලේඛනය කිරීමේදී, ඇල්ගොරිතමයට අනුව, එකම විධාන දාමය බොහෝ වාරයක් පුනරාවර්තනය කළ යුතු අවස්ථා තිබේ. මෙම තත්වයෙන් මිදීමට ඔබට:

● එය දිස්වන සෑම විටම අවශ්ය විධාන අනුපිළිවෙල ලියන්න. මෙම ප්රවේශය වැඩසටහනේ පරිමාව වැඩි කිරීමට හේතු වේ;

● මෙම අනුක්‍රමය ක්‍රියා පටිපාටියකට (උපෘති) සකසා අවශ්‍ය නම් එය අමතන්න. මෙම ප්‍රතිදානයට එහි අඩුපාඩු තිබේ: සෑම අවස්ථාවකම ඔබට විශේෂ ක්‍රියාපටිපාටිය ඇමතුම් විධානයක් සහ ආපසු එන විධානයක් ක්‍රියාත්මක කළ යුතු අතර, අනුපිළිවෙල කෙටි සහ නිතර භාවිතා කරන්නේ නම්, වැඩසටහනේ වේගය බෙහෙවින් අඩු කළ හැකිය.

සරලම සහ ඵලදායී ක්රමයවිධාන දාමයක් නැවත නැවත පුනරාවර්තනය කිරීම භාවිතා කිරීම සමන්විත වේ සාර්ව,වැඩසටහනක නිතර දක්නට ලැබෙන විධාන සමූහයක් නැවත පරිවර්තනය කිරීම සඳහා නිර්මාණය කර ඇති ව්‍යාජ විධානයක් ලෙස නිරූපණය කළ හැක.

සාර්ව, හෝ සාර්ව විධානයක්, අංශ තුනකින් සංලක්ෂිත වේ: macrodefinition, macroinversion සහ macroextension.

මැක්රෝ නිර්වචනය

මෙය වැඩසටහනේ පෙළෙහි යොමු කිරීම් සඳහා භාවිතා කරන වැඩසටහන් විධානවල නැවත නැවතත් අනුපිළිවෙලක් සඳහා නම් කිරීමකි.

සාර්ව අර්ථ දැක්වීමට පහත ව්‍යුහය ඇත:

ප්රකාශන ලැයිස්තුව; මැක්රෝ නිර්වචනය

සාර්ව අර්ථ දැක්වීමේ දී ඇති ව්‍යුහය තුළ, කොටස් තුනක් වෙන්කර හඳුනාගත හැකිය:

● මාතෘකාව

නම ඇතුළුව macro

ව්යාජ විධානය

සහ පරාමිතීන් සමූහයක්;

● තිත් වලින් සලකුණු කර ඇත සිරුරසාර්ව;

● කණ්ඩායම

උපාධිය

සාර්ව අර්ථ දැක්වීම්.

මැක්‍රෝ නිර්වචන පරාමිති කට්ටලයේ තෝරාගත් උපදෙස් සමූහය සඳහා ඔපෙරන්ඩ් ක්ෂේත්‍රයේ ලබා දී ඇති සියලුම පරාමිති ලැයිස්තුවක් අඩංගු වේ. මෙම පරාමිතීන් වැඩසටහනේ කලින් ලබා දුන්නේ නම්, ඒවා සාර්ව නිර්වචන ශීර්ෂයේ සඳහන් කිරීමට අවශ්‍ය නොවේ.

තෝරාගත් විධාන සමූහය නැවත එකලස් කිරීම සඳහා, නමෙන් සමන්විත අභියාචනයක් භාවිතා කරනු ලැබේ

macro විධාන සහ අනෙකුත් අගයන් සහිත පරාමිති ලැයිස්තුව.

සම්පාදන ක්‍රියාවලියේදී එකලස් කරන්නාට සාර්ව නිර්වචනයක් හමු වූ විට, එය එය සාර්ව නිර්වචන වගුවේ ගබඩා කරයි. නම වැඩසටහනේ පසුව පෙනී සිටීමේදී (

) මැක්‍රෝ එකක, එකලස් කරන්නා එය සාර්වයේ ශරීරය සමඟ ප්‍රතිස්ථාපනය කරයි.

සාර්ව නාමයක් opcode එකක් ලෙස භාවිතා කිරීම හැඳින්වේ සාර්ව ආපසු හැරවීම(සාර්ව ඇමතුම), සහ එය සාර්ව ශරීරය සමඟ ප්‍රතිස්ථාපනය කිරීම - සාර්ව ව්යාප්තිය.

වැඩසටහනක් අක්ෂර අනුපිළිවෙලක් ලෙස නිරූපණය කරන්නේ නම් (අකුරු, ඉලක්කම්, අවකාශ, විරාම ලකුණු සහ කරත්තය නව රේඛාවකට ගෙන යාමට නැවත පැමිණේ), එවිට සාර්ව ප්‍රසාරණය සමන්විත වන්නේ මෙම අනුක්‍රමයේ දාම කිහිපයක් වෙනත් දාම සමඟ ප්‍රතිස්ථාපනය කිරීමෙනි.

මැක්‍රෝ ප්‍රසාරණය සිදුවන්නේ එකලස් කිරීමේ ක්‍රියාවලියේදී මිස වැඩසටහන් ක්‍රියාත්මක කිරීමේදී නොවේ. අක්ෂර තන්තු හැසිරවීමේ ක්‍රම පවරනු ලැබේ macro යනු.

එකලස් කිරීමේ ක්රියාවලිය සිදු කරනු ලැබේ පාස් දෙකකින්:

● පළමු ප්‍රවේශයේදී, සියලුම සාර්ව නිර්වචන සංරක්ෂණය කර ඇති අතර, සාර්ව ඇමතුම් පුළුල් කෙරේ. මෙම අවස්ථාවෙහිදී, මුල් වැඩසටහන කියවා සියලුම සාර්ව නිර්වචන ඉවත් කරන ලද වැඩසටහනක් බවට පරිවර්තනය කරනු ලබන අතර, සෑම සාර්ව ඇමතුමක්ම සාර්ව ශරීරයෙන් ප්‍රතිස්ථාපනය වේ;

● දෙවන අවසරය මැක්‍රෝවලින් තොරව ප්‍රතිඵලයක් ලෙස ලැබෙන වැඩසටහන ක්‍රියාවට නංවයි.

පරාමිතීන් සහිත මැක්රෝස්.

නැවත නැවතත් විධාන අනුපිළිවෙල සමඟ වැඩ කිරීමට, විවිධ අගයන් ගත හැකි පරාමිති, සාර්ව අර්ථ දැක්වීම් සපයනු ලැබේ:

● සමඟ සැබෑසාර්ව ඇමතුමේ operand ක්ෂේත්රයේ තබා ඇති පරාමිතීන්;

● සමඟ විධිමත්පරාමිතීන්. සාර්ව ප්‍රසාරණය අතරතුර, සාර්ව ශරීරයේ දිස්වන සෑම විධිමත් පරාමිතියක්ම අදාළ සත්‍ය පරාමිතිය මගින් ප්‍රතිස්ථාපනය වේ.

පරාමිති සහිත macros භාවිතා කිරීම.

වැඩසටහන 1 හි සමාන විධාන අනුපිළිවෙලවල් දෙකක් අඩංගු වන අතර, පළමු එක P සහ මාරු කරන විධාන වලින් වෙනස් වේ.

සහ දෙවැන්න

වැඩසටහන 2 P1 සහ P2 යන විධිමත් පරාමිති දෙකක් සහිත සාර්වයක් ඇතුළත් වේ. සාර්ව ප්‍රසාරණය අතරතුර, සාර්ව ශරීරය තුළ ඇති සෑම P1 අක්ෂරයක්ම පළමු සත්‍ය පරාමිතිය මගින් ප්‍රතිස්ථාපනය වේ (P,

), සහ P2 සංකේතය දෙවන සත්‍ය පරාමිතිය මගින් ප්‍රතිස්ථාපනය වේ (

) වැඩසටහන් අංක 1 වෙතින්. මැක්රෝ ඇමතුමේ

වැඩසටහන 2 සලකුණු කර ඇත: P,

පළමු සැබෑ පරාමිතිය,

දෙවන සැබෑ පරාමිතිය.

වැඩසටහන 1

වැඩසටහන 2

MOV EBX,Q MOV EAX,Pl

MOV Q,EAX MOV EBX,P2

MOV P,EBX MOV P2,EAX

විස්තීරණ හැකියාවන්.

උසස් භාෂා විශේෂාංග කිහිපයක් බලමු

කොන්දේසි සහිත පැනීමේ විධානයක් සහ පැනිය යුතු ලේබලයක් අඩංගු මැක්‍රෝ එකක් දෙවරක් හෝ වැඩි වාර ගණනක් කැඳවුවහොත්, ලේබලය අනුපිටපත් කරනු ලැබේ (අනුපිටපත් ලේබල් ගැටළුව), එය දෝෂයක් ඇති කරයි. එමනිසා, සෑම ඇමතුමක්ම පරාමිතියක් ලෙස වෙනම ලේබලයක් පවරයි (ක්‍රමලේඛකයා විසින්). භාෂාවෙන්

ලේබලය දේශීය ලෙස ප්‍රකාශ කර ඇත (

) සහ උසස් හැකියාවන්ට ස්තූතිවන්ත වන අතර, මැක්‍රෝව පුළුල් කරන සෑම අවස්ථාවකම එකලස් කරන්නා ස්වයංක්‍රීයව වෙනස් ලේබලයක් ජනනය කරයි.

වෙනත් මැක්‍රෝස් තුළ මැක්‍රෝ නිර්වචනය කිරීමට ඔබට ඉඩ සලසයි. මෙම උසස් විශේෂාංගය වැඩසටහනක කොන්දේසිගත සම්බන්ධ කිරීම සමඟ ඉතා ප්‍රයෝජනවත් වේ. අපි සලකා බලමු

WORDSIZE GT 16 M2 මැක්රෝ නම්

M2 සාර්ව ප්‍රකාශයේ කොටස් දෙකෙහිම අර්ථ දැක්විය හැක

කෙසේ වෙතත්, නිර්වචනය වැඩසටහන එකලස් කර ඇති ප්‍රොසෙසරය මත රඳා පවතී: 16-bit හෝ 32-bit. M1 ලෙස හඳුන්වන්නේ නැතිනම්, macro M2 කිසිසේත්ම නිර්වචනය නොවේ.

තවත් දියුණු විශේෂාංගයක් වන්නේ මැක්‍රෝවලට තමන් ඇතුළු අනෙකුත් මැක්‍රෝවලට ඇමතීමට හැකි වීමයි - පුනරාවර්තනඅමතන්න. අවසාන අවස්ථාවෙහිදී, නිමක් නැති ලූපයක් වළක්වා ගැනීම සඳහා, මැක්‍රෝව එක් එක් ප්‍රසාරණය සමඟ වෙනස් වන පරාමිතියක් තමාටම සම්මත කළ යුතුය. චෙක් පතමෙම පරාමිතිය සහ පරාමිතිය නිශ්චිත අගයකට ළඟා වූ විට පුනරාවර්තනය අවසන් කරන්න.

එකලස් කිරීමේදී මැක්‍රෝ මාධ්‍ය භාවිතය පිළිබඳව.

මැක්රෝස් භාවිතා කරන විට, එකලස් කරන්නාට කාර්යයන් දෙකක් ඉටු කිරීමට හැකි විය යුතුය: සාර්ව අර්ථ දැක්වීම් සුරකින්නසහ සාර්ව අභියෝග පුළුල් කරන්න.

සාර්ව අර්ථ දැක්වීම් සුරැකීම.

සියලුම සාර්ව නාම වගුවක ගබඩා කර ඇත. සෑම නමක්ම අවශ්‍ය නම් එය ඇමතීමට හැකි වන පරිදි අදාළ මැක්‍රෝ වෙත දර්ශකයක් සමඟ ඇත. සමහර එකලස් කරන්නන්ට සාර්ව නම් සඳහා වෙනම වගුවක් ඇත, අනෙක් අයට සාමාන්‍ය වගුවක් ඇත, එහි සාර්ව නම් සමඟ සියලුම යන්ත්‍ර උපදෙස් සහ විධානයන් පිහිටා ඇත.

එකලස් කිරීමේදී මැක්‍රෝවක් හමු වූ විට නිර්මාණය කර ඇත:

නව වගු අංගයසාර්වයේ නම, පරාමිති ගණන සහ සාර්ව දේහය ගබඩා කරනු ලබන වෙනත් සාර්ව නිර්වචන වගුවකට දර්ශකයක් සමඟ;

● ලැයිස්තුව විධිමත්පරාමිතීන්.

සරලව අක්ෂර මාලාවක් වන මැක්‍රෝවේ ශරීරය පසුව කියවා සාර්ව නිර්වචන වගුවේ ගබඩා කෙරේ. ලූපයේ සිරුරේ සිදුවන විධිමත් පරාමිතීන් සලකුණු කර ඇත විශේෂ චරිතය.

සාර්වයක අභ්‍යන්තර නිරූපණය

වැඩසටහන 2 (පි. 244) සඳහා ඉහත උදාහරණයෙන්:

MOV EAX, MOV EBX, MOV MOV සහ

එහිදී carriage return අක්ෂරය ලෙස semicolon භාවිතා කරන අතර, ampersand & විධිමත් පරාමිති අක්ෂරය ලෙස භාවිතා කරයි.

සාර්ව ඇමතුම් දිගු කිරීම.

එකලස් කිරීමේදී මැක්‍රෝ නිර්වචනයක් හමු වූ විට, එය සාර්ව වගුවේ ගබඩා වේ. මැක්‍රෝ එකක් ඇමතූ විට, එකලස් කරන්නා ආදාන උපාංගයෙන් ආදාන දත්ත කියවීම තාවකාලිකව නවතා ගබඩා කර ඇති මැක්‍රෝ බොඩි කියවීම ආරම්භ කරයි. සාර්ව ශරීරයෙන් උපුටා ගන්නා ලද විධිමත් පරාමිතීන් සැබෑ පරාමිති මගින් ප්රතිස්ථාපනය කර ඇමතුම මගින් සපයනු ලැබේ. ඇම්පර්සන්ඩ් සහ පෙර පරාමිතීන් එකලස් කරන්නාට ඒවා හඳුනා ගැනීමට ඉඩ සලසයි.

Assembler හි බොහෝ අනුවාදයන් තිබියදීත්, එකලස් කිරීමේ ක්රියාවලීන් පොදු ලක්ෂණ ඇති අතර බොහෝ ආකාරවලින් සමාන වේ. ද්වි-පාස් එකලස් කිරීමේ ක්‍රියාකාරිත්වය පහත සාකච්ඡා කෙරේ.

ද්වි-පාස් එකලස් කරන්නා.

වැඩසටහනක් ප්‍රකාශ කිහිපයකින් සමන්විත වේ. එමනිසා, එකලස් කිරීමේදී ඔබට පහත ක්‍රියා අනුපිළිවෙල භාවිතා කළ හැකි බව පෙනේ:

● එය යන්ත්‍ර භාෂාවට පරිවර්තනය කරන්න;

● ප්‍රතිඵලයක් ලෙස ලැබෙන යන්ත්‍ර කේතය ගොනුවකට ද, ලැයිස්තුගත කිරීමේ අනුරූප කොටස වෙනත් ගොනුවකට ද මාරු කරන්න;

● සම්පූර්ණ වැඩසටහන පරිවර්තනය වන තෙක් ලැයිස්තුගත ක්‍රියා පටිපාටිය නැවත කරන්න.

කෙසේ වෙතත්, මෙම ප්රවේශය ඵලදායී නොවේ. උදාහරණයක් ලෙස ඊනියා ගැටලුව ඉදිරි සබැඳිය.පළමු ප්‍රකාශය P ප්‍රකාශයට පැනීමක් නම්, වැඩසටහනේ අවසානයේ පිහිටා ඇති අතර, එකලස් කරන්නාට එය පරිවර්තනය කළ නොහැක. ඔහු මුලින්ම ක්රියාකරු P හි ලිපිනය තීරණය කළ යුතු අතර, මෙය සිදු කිරීම සඳහා ඔහු සම්පූර්ණ වැඩසටහන කියවිය යුතුය. මූලාශ්ර වැඩසටහනේ සෑම සම්පූර්ණ කියවීමක්ම හැඳින්වේ ඡේදය.පාස් දෙකක් භාවිතයෙන් ඔබට ලුක්හෙඩ් ලින්ක් ගැටළුව විසඳිය හැකි ආකාරය අපි පෙන්වමු:

ඔබ කළ යුතු පළමු පාස් මත එකතු කරනවාසහ සියලු සංකේත අර්ථ දැක්වීම් (ලේබල් ඇතුළුව) වගුවේ ගබඩා කරන්න, සහ දෙවන අවසරයේදී, එක් එක් ක්‍රියාකරු කියවා එකලස් කරන්න. මෙම ක්‍රමය සාපේක්ෂ වශයෙන් සරල ය, නමුත් මුල් වැඩසටහන හරහා දෙවන ගමන් කිරීම සඳහා I/O මෙහෙයුම් සඳහා අමතර කාලයක් වැය කිරීම අවශ්‍ය වේ;

● ඔබ කළ යුතු පළමු පාස් පරිවර්තනය කරන්නවැඩසටහන අතරමැදි ආකෘතියක් බවට පත් කර එය වගුවක සුරකින්න, සහ දෙවන සම්මත කිරීම මුල් වැඩසටහනට අනුව නොව, වගුව අනුව සිදු කරන්න. මෙම එකලස් කිරීමේ ක්‍රමය කාලය ඉතිරි කරයි, මන්ද දෙවන අවසරය I/O මෙහෙයුම් සිදු නොකරන බැවිනි.

පළමු සාමාර්ථය.

පළමු පාස් ඉලක්කය- සංකේත වගුවක් සාදන්න. ඉහත සඳහන් කළ පරිදි, පළමු පාස් එකේ තවත් ඉලක්කයක් වන්නේ සියලුම සාර්ව නිර්වචන සංරක්ෂණය කිරීම සහ ඒවා පෙනෙන පරිදි ඇමතුම් පුළුල් කිරීමයි. එහි ප්‍රතිඵලයක් වශයෙන්, සංකේත නිර්වචනය සහ සාර්ව ප්‍රසාරණය යන දෙකම එක් ප්‍රවේශයකින් සිදුවේ. සංකේතය එක්කෝ විය හැක ලේබලය,හෝ අර්ථය,-you විධානය භාවිතයෙන් නිශ්චිත නමක් පවරනු ලැබේ:

;අගය - බෆර ප්‍රමාණය

විධාන ලේබල් ක්ෂේත්‍රයේ සංකේතාත්මක නම්වලට අර්ථය පැවරීමෙන්, එකලස් කරන්නා විසින් වැඩසටහන් ක්‍රියාත්මක කිරීමේදී සෑම විධානයකටම ඇති ලිපින අවශ්‍යයෙන්ම නියම කරයි. මෙම කාර්යය සඳහා, එකලස් කිරීමේ ක්රියාවලියේදී එකලස් කරන්නා ගබඩා කරයි උපදෙස් ලිපින කවුන්ටරය(

) විශේෂ විචල්‍යයක් ලෙස. පළමු පාස් ආරම්භයේදී, විශේෂ විචල්‍යයේ අගය 0 ලෙස සකසා ඇති අතර එක් එක් සැකසූ විධානයට පසුව එම විධානයේ දිග ප්‍රමාණයෙන් වැඩි වේ. වගුවේ උදාහරණයක් ලෙස. 5.2.3 විධානවල දිග සහ ප්‍රති අගයන් දැක්වෙන වැඩසටහන් ඛණ්ඩයක් පෙන්වයි. පළමු පාස් මත, වගු ජනනය වේ සංකේතාත්මක නම්, නියෝගසහ මෙහෙයුම් කේත,සහ අවශ්ය නම් වචනාර්ථයෙන්වගුව. වචනාර්ථයක් යනු එකලස් කරන්නා විසින් ස්වයංක්‍රීයව මතකය වෙන් කරන නියතයකි. නවීන ප්‍රොසෙසරවල ක්ෂණික ලිපින සහිත උපදෙස් අඩංගු බව අපි වහාම සටහන් කරමු, එබැවින් ඒවායේ එකලස් කරන්නන් වචනාර්ථයට සහය නොදක්වයි.

සංකේත නාම වගුව

එක් එක් නම සඳහා එක් මූලද්රව්යයක් අඩංගු වේ (වගුව 5.2.4). සංකේතාත්මක නාම වගුවේ සෑම මූලද්‍රව්‍යයක්ම නමම (හෝ එයට දර්ශකයක්), එහි සංඛ්‍යාත්මක අගය සහ සමහර විට ඇතුළත් විය හැකි අමතර තොරතුරු අඩංගු වේ:

● සංකේතය හා සම්බන්ධ දත්ත ක්ෂේත්‍රයේ දිග;

● මතකය නැවත ස්ථානගත කිරීමේ බිටු (එමගින් අදහස් කරන්නේ එකලස් කරන්නාට වඩා වෙනස් ලිපිනයකින් වැඩසටහන පූරණය කළහොත් සංකේතයක අගය වෙනස් වේද යන්න පෙන්නුම් කරයි);

● ක්‍රියා පටිපාටියෙන් පිටත සිට සංකේතයට ප්‍රවේශ විය හැකිද යන්න පිළිබඳ තොරතුරු.

සංකේතාත්මක නම් ලේබල් වේ. ඒවා ක්‍රියාකරුවන් භාවිතයෙන් නියම කළ හැක (උදාහරණයක් ලෙස,

විධාන වගුව.

වැඩසටහනක් එකලස් කිරීමේදී හමු වන සියලුම විධාන හෝ ව්‍යාජ විධාන මෙම වගුවේ ලැයිස්තුගත කරයි.

මෙහෙයුම් කේත වගුව.

එක් එක් මෙහෙයුම් කේතය සඳහා, වගුවේ වෙනම තීරු ඇත: මෙහෙයුම් කේත නම් කිරීම, operand 1, operand 2, මෙහෙයුම් කේතයේ ෂඩාස්රාකාර අගය, විධාන දිග සහ විධාන වර්ගය (වගුව 5.2.5). Operands ගණන සහ වර්ගය අනුව මෙහෙයුම් කේත කණ්ඩායම් වලට බෙදා ඇත. විධාන වර්ගය කණ්ඩායම් අංකය තීරණය කරන අතර එම කණ්ඩායමේ සියලුම විධාන සැකසීමට කැඳවනු ලබන ක්රියා පටිපාටිය නියම කරයි.

දෙවන සමත්.

දෙවන සමත්වීමේ ඉලක්කය- වස්තු වැඩසටහනක් නිර්මාණය කිරීම සහ අවශ්ය නම්, එකලස් කිරීමේ ප්රොටෝකෝලය මුද්රණය කිරීම; එක් ක්‍රියාත්මක කළ හැකි ගොනුවකට විවිධ කාලවලදී එකලස් කරන ලද ක්‍රියා පටිපාටි සම්බන්ධ කිරීමට සම්බන්ධකයට අවශ්‍ය ප්‍රතිදාන තොරතුරු.

දෙවන පාස් එකේ (පළමු එකේ මෙන්), ප්‍රකාශ අඩංගු රේඛා එකින් එක කියවා සකස් කරනු ලැබේ. මුල් ක්‍රියාකරු සහ ප්‍රතිදාන ක්‍රියාකරු ෂඩ් දශමයෙන් ව්‍යුත්පන්න කර ඇත වස්තුවකේතය මුද්‍රණය කර හෝ පසුව මුද්‍රණය කිරීම සඳහා බෆරයක තැබිය හැක. විධාන ලිපින කවුන්ටරය නැවත සැකසීමෙන් පසුව, විධානය කැඳවනු ලැබේ ඊළඟ ප්රකාශය.

මූලාශ්‍ර වැඩසටහනේ දෝෂ අඩංගු විය හැක, උදාහරණයක් ලෙස:

ලබා දී ඇති සංකේතය අර්ථ දක්වා නැත හෝ එක් වරකට වඩා අර්ථ දක්වා ඇත;

● opcode වලංගු නොවන නමකින් නියෝජනය වේ (අකුරු දෝෂයක් හේතුවෙන්), ප්‍රමාණවත් ඔපෙරන්ඩ් නොමැත, හෝ ඔපෙරන්ඩ් වැඩි ගණනක් ඇත;

● ක්රියාකරු නැත

සමහර එකලස් කරන්නන්ට නිර්වචනය නොකළ සංකේතයක් හඳුනාගෙන එය ප්‍රතිස්ථාපනය කළ හැකිය. කෙසේ වෙතත්, බොහෝ අවස්ථාවන්හිදී, දෝෂ ප්‍රකාශයක් හමු වූ විට, එකලස් කරන්නා තිරය මත දෝෂ පණිවිඩයක් පෙන්වන අතර එකලස් කිරීමේ ක්‍රියාවලිය දිගටම කරගෙන යාමට උත්සාහ කරයි.

එකලස් කිරීමේ භාෂාව සඳහා කැප වූ ලිපි.

උස්බෙකිස්තානයේ ජාතික විශ්ව විද්‍යාලය මිර්සෝ උලුග්බෙක්ගේ නමින් නම් කරන ලදී

පරිගණක තාක්ෂණ පීඨය

මාතෘකාව මත: EXE ගොනුවක අර්ථ විග්‍රහය.

සම්පූර්ණ කරන ලදී:

ටෂ්කන්ට් 2003.

පෙරවදන.

එකලස් කිරීමේ භාෂාව සහ විධාන ව්යුහය.

EXE ගොනු ව්‍යුහය (අර්ථාර්ථ විග්‍රහය).

COM ගොනු ව්යුහය.

වෛරසයේ ක්රියාකාරිත්වය සහ පැතිරීමේ මූලධර්මය.

Disassembler.

වැඩසටහන්.

පෙරවදන

ක්‍රමලේඛකයෙකුගේ වෘත්තිය විශ්මයජනක හා අද්විතීයයි. වර්තමානයේ, නවීන තාක්ෂණයෙන් තොරව විද්යාව හා ජීවිතය ගැන සිතාගත නොහැකිය. මිනිස් ක්‍රියාකාරකම් හා සම්බන්ධ සෑම දෙයක්ම නොමැතිව කළ නොහැක පරිගණක තාක්ෂණය. තවද මෙය එහි ඉහළ සංවර්ධනයට සහ පරිපූර්ණත්වයට දායක වේ. පුද්ගලික පරිගණක සංවර්ධනය බොහෝ කලකට පෙර ආරම්භ නොවූවත්, මෙම කාලය තුළ මෘදුකාංග නිෂ්පාදනවල දැවැන්ත පියවරයන් සිදු කර ඇති අතර මෙම නිෂ්පාදන දිගු කලක් තිස්සේ බහුලව භාවිතා වේ. පරිගණක ආශ්‍රිත දැනුමේ ක්‍ෂේත්‍රයද ඊට අනුරූප තාක්‍ෂණය මෙන්ම පිපිරීමකට ලක්ව ඇත. අපි වාණිජ පැත්ත සැලකිල්ලට නොගන්නේ නම්, මෙම වෘත්තීය ක්‍රියාකාරකම්වල ආගන්තුකයන් නොමැති බව අපට පැවසිය හැකිය. බොහෝ අය වැඩසටහන් සංවර්ධනය කරන්නේ ලාභයක් හෝ ආදායමක් සඳහා නොව, ඔවුන්ගේම කැමැත්තෙන්, ආශාව නිසාය. ඇත්ත වශයෙන්ම, මෙය වැඩසටහනේ ගුණාත්මක භාවයට බලපෑම් නොකළ යුතු අතර, මෙම ව්යාපාරයේ දී, එසේ කතා කිරීමට, ගුණාත්මක ක්රියාත්මක කිරීම, ස්ථාවර වැඩ කිරීම සහ සියලු නවීන අවශ්යතා සපුරාලීම සඳහා තරඟයක් සහ ඉල්ලුමක් පවතී. මෙහිදී පහන් කට්ටල විශාල සංඛ්යාවක් ප්රතිස්ථාපනය කිරීමට පැමිණි 60 ගණන්වල මයික්රොප්රොසෙසර්වල පෙනුම ද සඳහන් කිරීම වටී. එකිනෙකින් බොහෝ වෙනස් මයික්‍රොප්‍රොසෙසර් වර්ග කිහිපයක් තිබේ. මෙම මයික්‍රොප්‍රොසෙසර ඒවායේ බිට් ගැඹුර සහ ගොඩනඟන ලද පද්ධති විධාන අනුව එකිනෙකට වෙනස් වේ. වඩාත් පොදු ඒවා නම්: Intel, IBM, Celeron, AMD, ආදිය. මෙම සියලුම ප්‍රොසෙසර Intel ප්‍රොසෙසරවල උසස් ගෘහ නිර්මාණ ශිල්පයට සම්බන්ධ වේ. ක්ෂුද්‍ර පරිගණකවල ව්‍යාප්තිය ප්‍රධාන හේතු දෙකක් නිසා එකලස් කිරීමේ භාෂාව පිළිබඳ ආකල්ප නැවත සලකා බැලීමට හේතු විය. පළමුව, එකලස් කිරීමේ භාෂාවෙන් ලියන ලද වැඩසටහන් සඳහා සැලකිය යුතු ලෙස අඩු මතකයක් සහ ක්‍රියාත්මක කිරීමේ කාලයක් අවශ්‍ය වේ. දෙවනුව, එකලස් කිරීමේ භාෂාව සහ එහි ප්‍රතිඵලයක් ලෙස ලැබෙන යන්ත්‍ර කේතය පිළිබඳ දැනුම යන්ත්‍රයේ ගෘහ නිර්මාණ ශිල්පය පිළිබඳ අවබෝධයක් ලබා දෙයි, එය ඉහළ මට්ටමේ භාෂාවකින් වැඩ කිරීමේදී ලබා දීමට අපහසුය. බොහෝ මෘදුකාංග වෘත්තිකයන් Pascal, C හෝ Delphi වැනි ඉහළ මට්ටමේ භාෂාවලින් දියුණු වුවද, වැඩසටහන් ලිවීමේදී වඩාත් ප්‍රබල හා ඵලදායී වේ මෘදුකාංගසම්පූර්ණයෙන්ම හෝ අර්ධ වශයෙන් එකලස් භාෂාවෙන් ලියා ඇත. ඉහළ මට්ටමේ භාෂා නිර්මාණය කර ඇත්තේ විශේෂ ඒවා වළක්වා ගැනීමට ය තාක්ෂණික ලක්ෂණවිශේෂිත පරිගණක. එකලස් කිරීමේ භාෂාව, ප්‍රොසෙසරයේ නිශ්චිත විශේෂතා සඳහා නිර්මාණය කර ඇත. එබැවින්, නිශ්චිත පරිගණකයක් සඳහා එකලස් කිරීමේ භාෂා වැඩසටහනක් ලිවීම සඳහා, ඔබ එහි ගෘහ නිර්මාණ ශිල්පය දැන සිටිය යුතුය. මේ දිනවල, ප්රධාන දර්ශනය මෘදුකාංග නිෂ්පාදනය EXE ගොනුවකි. සලකා බලමින් ධනාත්මක පැතිමෙයින් අදහස් කරන්නේ වැඩසටහනේ කතුවරයාට එහි අඛණ්ඩතාව පිළිබඳව සහතික විය හැකි බවයි. නමුත් බොහෝ විට මෙය නඩුවෙන් බොහෝ දුරස් වේ. Disassembler එකකුත් තියෙනවා. Disassembler භාවිතා කිරීමෙන් ඔබට බාධා කිරීම් සහ වැඩසටහන් කේත සොයාගත හැකිය. එකලස් කරන්නා පිළිබඳ මනා දැනුමක් ඇති පුද්ගලයෙකුට සම්පූර්ණ වැඩසටහනම ඔහුගේ රසයට ප්‍රතිනිර්මාණය කිරීම අපහසු නොවනු ඇත. සමහර විට මෙය වඩාත් විසඳිය නොහැකි ගැටළුව පැන නගී - වෛරසය. මිනිසුන් වෛරසයක් ලියන්නේ ඇයි? සමහරු පුදුමයෙන්, සමහරු කෝපයෙන් මෙම ප්‍රශ්නය අසන නමුත්, කෙසේ වෙතත්, මෙම කාර්යයට උනන්දුවක් දක්වන පුද්ගලයින් තවමත් සිටින්නේ කිසිදු හානියක් කිරීමේ දෘෂ්ටි කෝණයෙන් නොව, පද්ධති ක්‍රමලේඛනය කෙරෙහි උනන්දුවක් ලෙස ය. වෛරස් ලියා ඇත්තේ විවිධ හේතු. සමහර අය පද්ධති ඇමතුම් වලට කැමතියි, තවත් අය එකලස් කරන්නා පිළිබඳ ඔවුන්ගේ දැනුම වැඩි දියුණු කරයි. මම මේ සියල්ල මගේ තුළ පැහැදිලි කිරීමට උත්සාහ කරමි පාඨමාලා වැඩ. EXE ගොනුවේ ව්‍යුහය ගැන පමණක් නොව එකලස් කිරීමේ භාෂාව ගැනද එහි සඳහන් වේ.

^ එකලස් කිරීමේ භාෂාව.

පළමු පරිගණකවල පෙනුමේ සිට අද දක්වාම, එකලස් කිරීමේ භාෂාව පිළිබඳ ක්‍රමලේඛකයන්ගේ අදහස් පරිවර්තනය කිරීම අනුගමනය කිරීම සිත්ගන්නා කරුණකි.

එක කාලෙක එකලස් කිරීම යනු පරිගණකයකින් ප්‍රයෝජනවත් දෙයක් කිරීමට නොහැකි භාෂාවකි. ටිකෙන් ටික තත්ත්වය වෙනස් විය. පරිගණකයක් සමඟ සන්නිවේදනය කිරීමේ වඩාත් පහසු මාධ්‍යයක් දර්ශනය විය. එහෙත්, වෙනත් භාෂා මෙන් නොව, එකලස් කරන්නා මිය ගියේ නැත; එපමනක් නොව, එය ප්‍රතිපත්තිමය වශයෙන් මෙය කළ නොහැකි විය. ඇයි? පිළිතුරක් සෙවීමේදී, පොදුවේ එකලස් කිරීමේ භාෂාව කුමක්දැයි තේරුම් ගැනීමට උත්සාහ කරමු.

කෙටියෙන් කිවහොත්, එකලස් භාෂාව යනු යන්ත්‍ර භාෂාවේ සංකේතාත්මක නිරූපණයකි. යන්ත්‍රයක අවම දෘඪාංග මට්ටමේ සියලුම ක්‍රියාවලි මෙහෙයවනු ලබන්නේ යන්ත්‍ර භාෂා විධාන (උපදෙස්) මගිනි. මෙයින් පැහැදිලි වන්නේ, පොදු නම තිබියදීත්, එක් එක් වර්ගයේ පරිගණක සඳහා එකලස් කිරීමේ භාෂාව වෙනස් බවයි. මෙයද අදාළ වේ පෙනුමඑකලස් කිරීමේ භාෂාවෙන් ලියා ඇති වැඩසටහන් සහ මෙම භාෂාව පිළිබිඹු කරන අදහස්.

එකලස් කරන්නා පිළිබඳ දැනුමකින් තොරව දෘඩාංග සම්බන්ධ ගැටළු (හෝ, එපමනක් නොව, වැඩසටහනක වේගය වැඩි කිරීම වැනි දෘඩාංග මත රඳා පවතී) සැබවින්ම විසඳිය නොහැක.

ක්‍රමලේඛකයෙකුට හෝ වෙනත් ඕනෑම පරිශීලකයෙකුට ඕනෑම ඉහළ මට්ටමේ මෙවලම්, අතථ්‍ය ලෝක තැනීම සඳහා වැඩසටහන් පවා භාවිතා කළ හැකි අතර, ඇත්ත වශයෙන්ම පරිගණකය එහි වැඩසටහන ලියා ඇති භාෂාවේ විධානයන් ක්‍රියාත්මක නොකරන නමුත් ඒවායේ පරිවර්තනය කළ නිරූපණය යැයි සැක නොකරයි. සම්පූර්ණයෙන්ම වෙනස් භාෂාවකින් - යන්ත්‍ර භාෂාවෙන් නීරස හා අඳුරු විධාන අනුපිළිවෙලක ස්වරූපයෙන්. දැන් අපි සිතන්නේ එවැනි පරිශීලකයෙකුට සම්මත නොවන ගැටළුවක් ඇති බව හෝ යමක් සාර්ථක නොවන බවයි. නිදසුනක් වශයෙන්, ඔහුගේ වැඩසටහන සමහර අසාමාන්ය උපාංගයක් සමඟ වැඩ කිරීම හෝ පරිගණක දෘඩාංගවල මෙහෙයුම් මූලධර්ම පිළිබඳ දැනුම අවශ්ය වන වෙනත් ක්රියාවන් සිදු කළ යුතුය. ක්‍රමලේඛකයා කෙතරම් දක්ෂ වුවත්, ඔහු සිය අපූරු වැඩසටහන ලියූ භාෂාව කෙතරම් හොඳ වුවත්, එකලස් කිරීමේ දැනුම නොමැතිව ඔහුට කළ නොහැක. සියලුම ඉහළ මට්ටමේ භාෂා සම්පාදකයින් පාහේ ඔවුන්ගේ මොඩියුල එකලස් කිරීමේ මොඩියුල සමඟ සම්බන්ධ කිරීම හෝ ක්‍රමලේඛන එකලස් කිරීමේ මට්ටමට ප්‍රවේශ වීමට සහාය වීම අහම්බයක් නොවේ.

ඇත්ත වශයෙන්ම, පරිගණක සාමාන්යවේදීන්ගේ කාලය දැනටමත් ගෙවී ගොස් ඇත. ඔවුන් පවසන පරිදි, ඔබට අතිමහත් බව වැළඳ ගත නොහැක. නමුත් පොදු දෙයක් තිබේ, ඕනෑම බැරෑරුම් පරිගණක අධ්‍යාපනයක් ගොඩනගා ඇති ආකාරයේ පදනමක්. මෙය පරිගණක ක්‍රියාකාරිත්වයේ මූලධර්ම, එහි ගෘහ නිර්මාණ ශිල්පය සහ එකලස් කිරීමේ භාෂාව මෙම දැනුමේ පිළිබිඹුවක් සහ ප්‍රතිමූර්තියක් ලෙස දැනුමයි.

සාමාන්‍ය නවීන පරිගණකයක් (i486 හෝ Pentium පදනම් වූ) පහත සඳහන් සංරචක වලින් සමන්විත වේ (රූපය 1).

සහල්. 1. පරිගණකය සහ පර්යන්ත

සහල්. 2. බ්ලොක් රූප සටහන පුද්ගලික පරිගණකය

රූපයෙන් (රූපය 1) පරිගණකය භෞතික උපාංග කිහිපයකින් සමන්විත වන අතර, ඒ සෑම එකක්ම පද්ධති ඒකකය ලෙස හැඳින්වෙන එක් ඒකකයකට සම්බන්ධ කර ඇති බව පෙනේ. අපි තර්කානුකූලව සිතන්නේ නම්, එය යම් ආකාරයක සම්බන්ධීකරණ උපකරණයක කාර්යභාරය ඉටු කරන බව පැහැදිලිය. අපි පද්ධති ඒකකය ඇතුළත බලමු (මොනිටරය තුළට යාමට උත්සාහ කිරීම අවශ්ය නොවේ - එහි රසවත් කිසිවක් නැත, ඊට අමතරව, එය භයානක ය): නඩුව විවෘත කර පුවරු, කුට්ටි, සම්බන්ධක වයර් බලන්න. ඔවුන්ගේ ක්රියාකාරී අරමුන තේරුම් ගැනීම සඳහා, සාමාන්ය පරිගණකයක බ්ලොක් රූප සටහන දෙස බලමු (රූපය 2). එය නිරපේක්ෂ නිරවද්‍යතාවයක් ඉල්ලා නොසිටින අතර නවීන පුද්ගලික පරිගණකයක මූලද්‍රව්‍යවල අරමුණ, අන්තර් සම්බන්ධතාවය සහ සාමාන්‍ය සංයුතිය පෙන්වීමට පමණක් අදහස් කෙරේ.

රූපයේ දැක්වෙන රූප සටහන සාකච්ඡා කරමු. 2 තරමක් සාම්ප්‍රදායික නොවන ශෛලියකින්.
පුද්ගලයෙකුට අලුත් දෙයක් හමු වූ විට, නොදන්නා දේ තේරුම් ගැනීමට උපකාර කළ හැකි සමහර ආශ්‍රයන් සෙවීම සාමාන්‍ය දෙයකි. පරිගණකය අවුස්සන්නේ කුමන සංගම්ද? උදාහරණයක් ලෙස, මම බොහෝ විට පරිගණකයක් සම්බන්ධ කරන්නේ පුද්ගලයා සමඟ ය. ඇයි?

පුද්ගලයෙකු පරිගණකයක් නිර්මාණය කරන විට, ඔහු තුළ කොතැනක හෝ ගැඹුරින් ඔහු සිතුවේ ඔහු තමාට සමාන දෙයක් නිර්මාණය කරන බවයි. පරිගණකයට බාහිර ලෝකයෙන් තොරතුරු ලබා ගැනීම සඳහා අවයව ඇත - යතුරු පුවරුව, මූසිකය සහ චුම්බක තැටි ධාවකයන්. රූපයේ. 2 මෙම අවයව පද්ධති බස්රථවල දකුණු පසින් පිහිටා ඇත. ලැබුණු තොරතුරු “ජීර්ණය” කරන අවයව පරිගණකයට ඇත - මේවා CPUසහ RAM. අවසාන වශයෙන්, පරිගණකය සැකසීමේ ප්රතිඵල නිපදවන කථන අවයව ඇත. මේවා ද දකුණු පස ඇති උපාංග කිහිපයකි.

නවීන පරිගණක, ඇත්ත වශයෙන්ම, මිනිසුන්ගෙන් බොහෝ දුරස් ය. ඔවුන් විශාල නමුත් සීමිත කොන්දේසි විරහිත ප්‍රත්‍යාවර්තක මට්ටමින් බාහිර ලෝකය සමඟ අන්තර් ක්‍රියා කරන ජීවීන් සමඟ සැසඳිය හැකිය.
මෙම ප්‍රත්‍යාවර්ත කට්ටලය යන්ත්‍ර විධාන පද්ධතියක් සාදයි. ඔබ පරිගණකයක් සමඟ කොතරම් ඉහළ මට්ටමක සන්නිවේදනය කළත්, එය අවසානයේ කම්මැලි සහ ඒකාකාරී යන්ත්‍ර විධාන අනුපිළිවෙලකට පැමිණේ.
සෑම යන්ත්‍ර විධානයක්ම එක් හෝ තවත් කොන්දේසි විරහිත ප්‍රතීකයක් උද්දීපනය කිරීමට උත්තේජකයකි. මෙම උත්තේජකයේ ප්රතික්රියාව සෑම විටම නොපැහැදිලි වන අතර ක්ෂුද්ර වැඩසටහනක ස්වරූපයෙන් ක්ෂුද්ර විධාන බ්ලොක් එකේ "දෘඪ" වේ. මෙම ක්ෂුද්‍ර ක්‍රමලේඛය යන්ත්‍ර විධානයක් ක්‍රියාත්මක කිරීමට ක්‍රියාවන් ක්‍රියාත්මක කරයි, නමුත් නිශ්චිත වෙත සපයන ලද සංඥා මට්ටමින් තර්කනයපරිගණකය, එමගින් පරිගණකයේ විවිධ උප පද්ධති පාලනය කිරීම. ක්ෂුද්ර වැඩසටහන් පාලනය කිරීමේ ඊනියා මූලධර්මය මෙයයි.

පුද්ගලයෙකු සමඟ සාදෘශ්‍යය දිගටම කරගෙන යමින්, අපි සටහන් කරමු: පරිගණකයක් නිසි ලෙස ආහාරයට ගැනීම සඳහා, බොහෝ මෙහෙයුම් පද්ධති, ක්‍රමලේඛන භාෂා සිය ගණනක් සඳහා සම්පාදක යනාදිය සොයාගෙන ඇත, නමුත් ඒවා සියල්ලම, ඇත්ත වශයෙන්ම, තැටියක් පමණි. ආහාර (වැඩසටහන්) යම් නීතිරීතිවලට අනුව ලබා දෙනු ලැබේ ආමාශය (පරිගණකය). පරිගණකයේ ආමාශය පමණක් ආහාර වේලට, ඒකාකාරී ආහාර වලට ප්‍රිය කරයි - එයට ව්‍යුහගත තොරතුරු ලබා දෙන්න, ශුන්‍ය සහ එකවල දැඩි ලෙස සංවිධිත අනුපිළිවෙලක ස්වරූපයෙන්, යන්ත්‍ර භාෂාව සෑදෙන සංයෝජන.

මේ අනුව, පිටතින් බහුභාෂාවක් වුවද, පරිගණකය තේරුම් ගන්නේ එක් භාෂාවක් පමණි - යන්ත්‍ර උපදෙස් භාෂාව. ඇත්ත වශයෙන්ම, පරිගණකයක් සමඟ සන්නිවේදනය කිරීමට සහ වැඩ කිරීමට, මෙම භාෂාව දැන ගැනීම අවශ්ය නොවේ, නමුත් ඕනෑම වෘත්තීය වැඩසටහන්කරුවෙකු ඉක්මනින් හෝ පසුව එය අධ්යයනය කිරීමේ අවශ්යතාවකට මුහුණ දෙයි. වාසනාවකට මෙන්, ක්‍රමලේඛකයාට ද්විමය සංඛ්‍යාවල විවිධ සංයෝජනවල අර්ථය තේරුම් ගැනීමට උත්සාහ කළ යුතු නැත, 50 දශකයේ සිට ක්‍රමලේඛකයින් ක්‍රමලේඛනය සඳහා යන්ත්‍ර භාෂාවේ සංකේතාත්මක ප්‍රතිසමයක් භාවිතා කිරීමට පටන් ගත් අතර එය එකලස් කිරීමේ භාෂාව ලෙස හැඳින්වේ. මෙම භාෂාව යන්ත්‍ර භාෂාවේ සියලුම අංග නිවැරදිව පිළිබිඹු කරයි. ඉහළ මට්ටමේ භාෂා මෙන් නොව, එකලස් කිරීමේ භාෂාව එක් එක් වර්ගයේ පරිගණක සඳහා වෙනස් වන්නේ එබැවිනි.

ඉහත සියල්ලෙන් අපට නිගමනය කළ හැක්කේ පරිගණකයක් සඳහා එකලස් කිරීමේ භාෂාව “ස්වදේශික” බැවින්, වඩාත් ඵලදායී වැඩසටහන ලිවිය හැක්කේ එහි පමණක් (සුදුසුකම් ලත් ක්‍රමලේඛකයෙකු විසින් ලියන ලද්දක් නම්) බවයි. මෙහි එක් කුඩා "නමුත්" ඇත: මෙය ඉතා ශ්රම-දැඩි ක්රියාවලියක් වන අතර එය විශාල අවධානයක් සහ ප්රායෝගික අත්දැකීම් අවශ්ය වේ. එමනිසා, යථාර්ථයේ දී, ඔවුන් ප්‍රධාන වශයෙන් සැපයිය යුතු එකලස් කිරීමේ වැඩසටහන් ලියයි ඵලදායී වැඩදෘඪාංග සමඟ. සමහර විට ක්‍රියාත්මක කිරීමේ කාලය හෝ මතක පරිභෝජනය සම්බන්ධයෙන් තීරණාත්මක වන වැඩසටහන් කොටස් එකලස් කරන්නා තුළ ලියා ඇත. පසුව, ඒවා subroutines ආකාරයෙන් විධිමත් කර ඉහළ මට්ටමේ භාෂාවකින් කේතය සමඟ ඒකාබද්ධ වේ.

ඕනෑම පරිගණකයක එකලස් කිරීමේ භාෂාව ඉගෙනීම ආරම්භ කිරීම අර්ථවත් වන්නේ පරිගණකයේ කුමන කොටස දෘශ්‍යමානද සහ මෙම භාෂාවෙන් ක්‍රමලේඛනය සඳහා ප්‍රවේශ විය හැකිදැයි සොයා බැලීමෙන් පසුව පමණි. මෙය ඊනියා පරිගණක ක්‍රමලේඛ ආකෘතිය වන අතර, ඉන් කොටසක් මයික්‍රොප්‍රොසෙසර් ක්‍රමලේඛ ආකෘතිය වන අතර, එහි රෙජිස්ටර් 32 ක් අඩංගු වන අතර, එක් හෝ තවත් මට්ටමකට, ක්‍රමලේඛකයාගේ භාවිතය සඳහා ලබා ගත හැකිය.

මෙම ලේඛන විශාල කණ්ඩායම් දෙකකට බෙදිය හැකිය:

^ 16 පරිශීලක ලේඛන;

පද්ධති රෙජිස්ටර් 16 ක්.

එකලස් කිරීමේ භාෂා වැඩසටහන් රෙජිස්ටර් ඉතා තීව්‍ර ලෙස භාවිතා කරයි. බොහෝ රෙජිස්ටර් වලට නිශ්චිත ක්‍රියාකාරී අරමුණක් ඇත.

නමට අනුව, පරිශීලක රෙජිස්ටර් පරිශීලක රෙජිස්ටර් ලෙස හැඳින්වේ, මන්ද ක්‍රමලේඛකයාට ඔහුගේ වැඩසටහන් ලිවීමේදී ඒවා භාවිතා කළ හැකිය. මෙම ලේඛනවලට ඇතුළත් වේ (රූපය 3):

දත්ත සහ ලිපින ගබඩා කිරීම සඳහා ක්‍රමලේඛකයින්ට භාවිතා කළ හැකි 32-bit රෙජිස්ටර් අටක් (සාමාන්‍ය කාර්ය ලේඛන (GPR) ලෙසද හැඳින්වේ):

කොටස් හය: cs, ds, ss, es, fs, gs;

තත්ත්වය සහ පාලන ලේඛන:

කොඩි ලියාපදිංචි කොඩි / කොඩි;

විධාන පොයින්ටර් රෙජිස්ටර් eip/ip.

සහල්. 3. i486 සහ Pentium මයික්‍රොප්‍රොසෙසර වල පරිශීලක ලේඛන

මෙම බොහෝ රෙජිස්ටර් slashes සහිතව පෙන්වන්නේ ඇයි? නැත, මේවා විවිධ ලේඛන නොවේ - ඒවා එක් විශාල 32-බිට් ලේඛනයක කොටස් වේ. ඒවා වෙනම වස්තූන් ලෙස වැඩසටහනේ භාවිතා කළ හැකිය. i8086 සිට ආරම්භ වන Intel මයික්‍රොප්‍රොසෙසර වල බාල 16-bit මාදිලි සඳහා ලියන ලද වැඩසටහන් වල ක්‍රියාකාරීත්වය සහතික කිරීම සඳහා මෙය සිදු කරන ලදී. i486 සහ Pentium මයික්‍රොප්‍රොසෙසර බොහෝ දුරට 32-bit රෙජිස්ටර් ඇත. කොටස් ලේඛන හැර ඔවුන්ගේ අංකය i8086 ට සමාන වේ, නමුත් මානය විශාල වන අතර එය ඔවුන්ගේ තනතුරු වලින් පිළිබිඹු වේ - ඒවා ඇත
උපසර්ගය e (දිගු කරන ලද).

^ පොදු කාර්ය ලේඛන
මෙම කණ්ඩායමේ සියලුම රෙජිස්ටර් ඔබට ඔවුන්ගේ "පහළ" කොටස් වෙත ප්රවේශ වීමට ඉඩ සලසයි (රූපය 3 බලන්න). මෙම රූපය දෙස බලන විට, මෙම ලේඛනවල පහළ 16 සහ 8-බිට් කොටස් පමණක් ස්වයං-ලිපිනය සඳහා භාවිතා කළ හැකි බව සලකන්න. මෙම රෙජිස්ටර් වල ඉහල බිටු 16 ස්වාධීන වස්තු ලෙස ලබා ගත නොහැක. මෙය සිදු කරන ලද්දේ, අප ඉහත සඳහන් කළ පරිදි, Intel මයික්‍රොප්‍රොසෙසර වල තරුණ 16-bit මාදිලි සමඟ ගැළපීම සඳහා ය.

අපි පොදු කාර්ය ලේඛන සමූහයට අයත් ලේඛන ලැයිස්තුගත කරමු. මෙම ලේඛන භෞතිකව අංක ගණිත තාර්කික ඒකකයක් (ALU) තුළ මයික්‍රොප්‍රොසෙසරයේ පිහිටා ඇති බැවින් ඒවා ALU රෙජිස්ටර් ලෙසද හැඳින්වේ:

eax/ax/ah/al (accumulator Register) - බැටරිය.
අතරමැදි දත්ත ගබඩා කිරීමට භාවිතා කරයි. සමහර විධාන සඳහා මෙම ලේඛනය භාවිතා කිරීම අවශ්‍ය වේ;

ebx/bx/bh/bl (මූලික ලේඛනය) - මූලික ලේඛනය.
යම් වස්තුවක මූලික ලිපිනය මතකයේ ගබඩා කිරීමට භාවිතා කරයි;

ecx/cx/ch/cl (ගණන් ලේඛනය) - කවුන්ටර ලේඛනය.
සමහර පුනරාවර්තන ක්‍රියාවන් සිදු කරන කණ්ඩායම්වල භාවිතා වේ. එහි භාවිතය බොහෝ විට අදාළ විධානයේ ඇල්ගොරිතමයේ ව්‍යංග හා සැඟවී ඇත.
උදාහරණයක් ලෙස, loop loop සංවිධානය කිරීම සඳහා වන විධානය, යම් ලිපිනයක පිහිටා ඇති විධානයකට පාලනය මාරු කිරීමට අමතරව, ecx/cx ලේඛනයේ අගය එකින් එක විශ්ලේෂණය කර අඩු කරයි;

edx/dx/dh/dl (දත්ත ලේඛනය) - දත්ත ලේඛනය.
eax/ax/ah/al රෙජිස්ටර් එක වගේම, අතරමැදි දත්ත ගබඩා කරනවා. සමහර විධානවල එහි භාවිතය අනිවාර්ය වේ; සමහර විධාන සඳහා මෙය ව්‍යංගයෙන් සිදුවේ.

ඊනියා දාම මෙහෙයුම් සඳහා සහය දැක්වීම සඳහා පහත ලේඛන දෙක භාවිතා කරයි, එනම් මූලද්‍රව්‍ය දාම අනුක්‍රමිකව සකසන මෙහෙයුම්, ඒ සෑම එකක්ම බිටු 32, 16 හෝ 8 ක් දිග විය හැකිය:

esi/si (මූලාශ්‍ර දර්ශක ලේඛනය) - මූලාශ්‍ර දර්ශකය.
දම්වැල් සහිත මෙහෙයුම් වල මෙම ලේඛනයේ මූලාශ්‍ර දාමයේ මූලද්‍රව්‍යයේ වත්මන් ලිපිනය අඩංගු වේ;

edi/di (ගමනාන්තර දර්ශක ලේඛනය) - ග්‍රාහකයාගේ (ලබන්නාගේ) දර්ශකය.
දම්වැල් සහිත මෙහෙයුම් වල මෙම ලේඛනයේ ගමනාන්ත දාමයේ වත්මන් ලිපිනය අඩංගු වේ.

මයික්‍රොප්‍රොසෙසර් ගෘහ නිර්මාණ ශිල්පය තුළ, දෘඪාංග සහ මෘදුකාංග මට්ටමින් තොගයක් වැනි දත්ත ව්‍යුහයකට සහය දක්වයි. තොගය සමඟ වැඩ කිරීම සඳහා, මයික්‍රොප්‍රොසෙසර් උපදෙස් පද්ධතියේ විශේෂ විධාන ඇති අතර, මයික්‍රොප්‍රොසෙසර් මෘදුකාංග ආකෘතියේ මේ සඳහා විශේෂ රෙජිස්ටර් ඇත:

esp/sp (ස්ටැක් පොයින්ටර් රෙජිස්ටර්) - ස්ටැක් පොයින්ටර් රෙජිස්ටර්.
වත්මන් අට්ටි කොටසෙහි අට්ටියේ ඉහළට දර්ශකයක් අඩංගු වේ.

ebp/bp (Base Pointer register) - stack frame base pointer register.
තොගය තුළ දත්ත වෙත අහඹු ප්‍රවේශය සංවිධානය කිරීමට නිර්මාණය කර ඇත.

තොගයක් යනු අත්තනෝමතික දත්ත තාවකාලිකව ගබඩා කිරීම සඳහා වැඩසටහන් කලාපයකි. ඇත්ත වශයෙන්ම, දත්ත දත්ත කොටසක ගබඩා කළ හැකිය, නමුත් මෙම අවස්ථාවේදී, තාවකාලිකව ගබඩා කර ඇති සෑම දත්තයක් සඳහාම, වෙනම නම් කරන ලද මතක සෛලයක් සෑදිය යුතුය, එමඟින් වැඩසටහනේ විශාලත්වය සහ භාවිතා කරන නම් ගණන වැඩි වේ. තොගයේ පහසුව පවතින්නේ එහි ප්‍රදේශය නැවත භාවිතා කළ හැකි වන අතර, ස්ටැක් මත දත්ත ගබඩා කිරීම සහ එය එතැනින් ලබා ගැනීම නම් කිසිවක් සඳහන් නොකර ඵලදායි push සහ pop විධාන භාවිතා කරමින් සිදු කෙරේ.
තොගය සාම්ප්‍රදායිකව භාවිතා කරනු ලැබේ, උදාහරණයක් ලෙස, උපසිරැසියක් ඇමතීමට පෙර වැඩසටහනක් විසින් භාවිතා කරන රෙජිස්ටර් වල අන්තර්ගතය සුරැකීමට, එමඟින් "තමන්ගේම අරමුණු සඳහා" ප්‍රොසෙසර රෙජිස්ටර් භාවිතා කරනු ඇත. උපසිරැසි ආපසු පැමිණීමෙන් පසු ලේඛනවල මුල් අන්තර්ගතය තොගයෙන් ඉවත් කරනු ලැබේ. තවත් පොදු තාක්ෂණික ක්‍රමයක් නම්, එයට අවශ්‍ය පරාමිති තොගය හරහා උපසිරසියකට යැවීමයි. උපසිරැසි, පරාමිති තොගයේ තබා ඇත්තේ කුමන අනුපිළිවෙලකටදැයි දැන, ඒවා එතැනින් ගෙන එය ක්‍රියාත්මක කිරීමේදී ඒවා භාවිතා කළ හැකිය. සුවිශේෂී ලක්ෂණයතොගය යනු එහි අඩංගු දත්ත නැවත ලබා ගන්නා අද්විතීය අනුපිළිවෙලකි: ඕනෑම අවස්ථාවක, ඉහළ මූලද්‍රව්‍යය පමණක් තොගයේ තිබේ, i.e. මූලද්‍රව්‍යය ඉතා මෑතකදී තොගය මතට තල්ලු විය. අට්ටියෙන් ඉහළම මූලද්‍රව්‍යය මතු කිරීමෙන් ඊළඟ මූලද්‍රව්‍යය ලබා ගත හැක. අට්ටි මූලද්‍රව්‍ය තොගයේ පහළ සිට (එනම්, එහි උපරිම ලිපිනයෙන්) අනුක්‍රමිකව අඩුවන ලිපිනවල සිට, තොගය සඳහා වෙන් කර ඇති මතක ප්‍රදේශයේ පිහිටා ඇත. ඉහළ, ප්‍රවේශ විය හැකි මූලද්‍රව්‍යයේ ලිපිනය තොග පොයින්ටර් රෙජිස්ටර් SP හි ගබඩා කර ඇත. වැඩසටහන් මතකයේ වෙනත් ඕනෑම අංශයක් මෙන්, තොගය යම් කොටසක කොටසක් විය යුතුය හෝ වෙනම ඛණ්ඩයක් සෑදිය යුතුය. ඕනෑම අවස්ථාවක, මෙම කොටසෙහි ඛණ්ඩ ලිපිනය එස්එස් කොටස් තොග ලේඛනයේ තබා ඇත. මේ අනුව, SS:SP රෙජිස්ටර් යුගලය ප්‍රවේශ විය හැකි අට්ටි කොටුවක ලිපිනය විස්තර කරයි: SS තොගයේ ඛණ්ඩ ලිපිනය ගබඩා කරයි, සහ SP තොගයේ ගබඩා කර ඇති අවසාන දත්තවල ඕෆ්සෙට් ගබඩා කරයි (රූපය 4, a). ආරම්භක අවස්ථාවේ දී, ස්ටැක් පොයින්ටර් එස්පී අට්ටියේ පතුලට යටින් ඇති සෛලයකට යොමු කරන අතර එයට ඇතුළත් නොවන බව සලකන්න.

රූපය 4. ස්ටැක් සංවිධානය: a - ආරම්භක තත්වය, b - එක් මූලද්‍රව්‍යයක් පැටවීමෙන් පසු (මෙම උදාහරණයේ දී, AX ලේඛනයේ අන්තර්ගතය), c - දෙවන මූලද්‍රව්‍යය පැටවීමෙන් පසු (DS ලේඛනයේ අන්තර්ගතය), d - එකක් බෑමෙන් පසු මූලද්‍රව්‍ය, e - මූලද්‍රව්‍ය දෙකක් බාගැනීමෙන් පසු ඒවායේ මුල් තත්වයට ආපසු යන්න.

තොගයට පැටවීම සිදු කරනු ලබන්නේ තොගය (තල්ලු කිරීම) සමඟ වැඩ කිරීම සඳහා විශේෂ විධානයක් මගිනි. මෙම උපදෙස් ප්‍රථමයෙන් ස්ටැක් පොයින්ටරයේ අන්තර්ගතය 2 කින් අඩු කරන අතර පසුව SP හි ලිපිනයෙහි ඔපෙරාන්ඩ් තබයි. උදාහරණයක් ලෙස, අපට AX ලේඛනයේ අන්තර්ගතය තාවකාලිකව තොගයේ ගබඩා කිරීමට අවශ්‍ය නම්, අපි විධානය ක්‍රියාත්මක කළ යුතුය.

තොගය රූපයේ පෙන්වා ඇති තත්වයට යයි. 1.10, ආ. Stack pointer එක bytes දෙකක් (පහළ ලිපින දෙසට) ඉහලට මාරු කර ඇති අතර push command හි දක්වා ඇති operand මෙම ලිපිනයට ලියා ඇති බව පෙනේ. පහත stack loading command එක උදා.

රූපයේ පෙන්වා ඇති තත්වයට තොගය තබයි. 1.10, ඇ. අට්ටිය දැන් මූලද්‍රව්‍ය දෙකක් ගබඩා කරනු ඇති අතර, එස්පී ස්ටැක් පොයින්ටර් මගින් පෙන්වා ඇති ඉහළම එක පමණක් ප්‍රවේශ විය හැක. ටික වේලාවකට පසු අපට තොගයේ ගබඩා කර ඇති ලේඛනවල මුල් අන්තර්ගතය ප්‍රතිස්ථාපනය කිරීමට අවශ්‍ය නම්, අපි අට්ටියෙන් බෑම සඳහා පොප් (තල්ලු) විධාන ක්‍රියාත්මක කළ යුතුය:

පොප් ඩීඑස්
pop AX

තොගය කොපමණ විශාල විය යුතුද? එය වැඩසටහනේ කෙතරම් තීව්‍ර ලෙස භාවිතා කරන්නේද යන්න මත රඳා පවතී. උදාහරණයක් ලෙස, ඔබ බයිට් 10,000 ක අරාවක් තොගයේ ගබඩා කිරීමට අදහස් කරන්නේ නම්, අඩුම තරමින් තොගය මෙම ප්‍රමාණය විය යුතුය. Int 21h බාධා විධානය ක්‍රියාත්මක කිරීමේදී සමහර අවස්ථාවල දී තොගය ස්වයංක්‍රීයව පද්ධතිය විසින් භාවිතා කරන බව මතක තබා ගත යුතුය. මෙම විධානය සමඟ, ප්‍රොසෙසරය ප්‍රථමයෙන් ආපසු එන ලිපිනය තොගය මතට තල්ලු කරයි, පසුව DOS රෙජිස්ටර් වල අන්තර්ගතය සහ බාධා කළ වැඩසටහනට අදාළ අනෙකුත් තොරතුරු තොගය මතට තල්ලු කරයි. එබැවින්, වැඩසටහනක් කිසිසේත්ම තොගයක් භාවිතා නොකළද, එය තවමත් වැඩසටහනේ තිබිය යුතු අතර අවම වශයෙන් වචන දුසිම් කිහිපයක් ප්‍රමාණයෙන් තිබිය යුතුය. අපගේ පළමු උදාහරණයේදී, අපි අට්ටියට වචන 128 ක් වෙන් කළෙමු, එය නිසැකවම ප්‍රමාණවත් වේ.

^ එකලස් කිරීමේ වැඩසටහනක ව්‍යුහය

එකලස් කිරීමේ භාෂා වැඩසටහනක් යනු මතක කොටස් ලෙස හැඳින්වෙන මතක කොටස් එකතුවකි. වැඩසටහනක් එවැනි වාරණ කොටස් එකකින් හෝ වැඩි ගණනකින් සමන්විත විය හැක. සෑම කොටසකම භාෂා වාක්‍ය එකතුවක් අඩංගු වන අතර, ඒ සෑම එකක්ම වෙනම වැඩසටහන් කේත රේඛාවක් දරයි.

එකලස් කිරීමේ ප්‍රකාශ වර්ග හතරක් ඇත:

යන්ත්‍ර විධානවල සංකේතාත්මක ප්‍රතිසමයන් වන විධාන හෝ උපදෙස්. පරිවර්තන ක්‍රියාවලියේදී, එකලස් කිරීමේ උපදෙස් මයික්‍රොප්‍රොසෙසර් උපදෙස් කට්ටලයේ අනුරූප විධාන බවට පරිවර්තනය වේ;

macrocommands - වැඩසටහන් පෙළෙහි වාක්‍ය යම් ආකාරයකින් හැඩගස්වා, වෙනත් වාක්‍ය මගින් විකාශනය කිරීමේදී ප්‍රතිස්ථාපනය වේ;

විධාන, සමහර ක්‍රියා සිදු කිරීමට එකලස් කිරීමේ පරිවර්තකයාට උපදෙස් වේ. යන්ත්‍ර නිරූපණයේ දී විධානවලට සගයන් නොමැත;

රුසියානු හෝඩියේ අකුරු ඇතුළු ඕනෑම අක්ෂර අඩංගු විවරණ රේඛා. පරිවර්තකයා විසින් අදහස් නොසලකා හරිනු ලැබේ.

^ එකලස් කිරීමේ වාක්‍ය ඛණ්ඩය

වැඩසටහනක් සෑදෙන වාක්‍ය විධානයකට, සාර්ව, විධානයකට හෝ විවරණයකට අනුරූප වන වාක්‍ය ඛණ්ඩයක් විය හැක. එකලස් කිරීමේ පරිවර්තකයාට ඒවා හඳුනා ගැනීමට නම්, ඒවා ඇතැම් වාක්‍ය ඛණ්ඩ නීතිවලට අනුව සෑදිය යුතුය. මෙය සිදු කිරීම සඳහා, ව්‍යාකරණ රීති වැනි භාෂාවේ වාක්‍ය ඛණ්ඩය පිළිබඳ විධිමත් විස්තරයක් භාවිතා කිරීම වඩාත් සුදුසුය. මේ ආකාරයෙන් ක්‍රමලේඛන භාෂාවක් විස්තර කිරීමට වඩාත් පොදු ක්‍රම වන්නේ සින්ටැක්ස් රූපසටහන් සහ දිගු කළ Backus-Naur ආකෘති වේ. සදහා ප්රායෝගික භාවිතයසින්ටැක්ස් රූප සටහන් වඩාත් පහසු වේ. උදාහරණයක් ලෙස, එකලස් කිරීමේ භාෂා ප්‍රකාශවල වාක්‍ය ඛණ්ඩය පහත රූපවල දැක්වෙන වාක්‍ය ඛණ්ඩ රූප සටහන් භාවිතයෙන් විස්තර කළ හැක.

සහල්. 5. එකලස් වාක්‍ය ආකෘතිය

සහල්. 6. විධාන ආකෘතිය

සහල්. 7. විධාන සහ මැක්රෝ වල ආකෘතිය

මෙම පින්තූරවල:

ලේබල් නම - එය නම් කරන වැඩසටහනේ මූල කේතයේ වාක්‍යයේ පළමු බයිටයේ ලිපිනය වන හඳුනාගැනීමේ අගය;

නම - මෙම විධානය එකම නමේ වෙනත් විධාන වලින් වෙන්කර හඳුනා ගන්නා හඳුනාගැනීමක්. යම් විධානයක් එකලස් කරන්නා විසින් සැකසීමේ ප්‍රතිඵලයක් ලෙස, එම නමට ඇතැම් ලක්ෂණ පැවරිය හැක;

මෙහෙයුම් කේතයක් (OPC) සහ විධානයක් යනු අනුරූප යන්ත්‍ර උපදෙස්, සාර්ව උපදෙස් හෝ පරිවර්තක විධානය සඳහා සිහිවටන සංකේත වේ;

ඔපෙරන්ඩ් යනු ක්‍රියාවන් සිදු කරන වස්තූන් නම් කරන විධානයක, මැක්‍රෝ හෝ එකලස් කිරීමේ නියෝගයක කොටස් වේ. එකලස් කිරීමේ භාෂා ක්‍රියාදාමයන් සංඛ්‍යාත්මක සහ පෙළ නියතයන්, ලේබල් සහ විචල්‍ය හඳුනාගැනීම් සහිත ප්‍රකාශන මගින් ක්‍රියාකරු සලකුණු සහ සමහර වෙන් කළ වචන භාවිතා කරයි.

^ සින්ටැක්ස් රූප සටහන් භාවිතා කරන්නේ කෙසේද? එය ඉතා සරලයි: ඔබට අවශ්‍ය වන්නේ රූප සටහනේ ආදානය (වමේ) සිට එහි ප්‍රතිදානය දක්වා (දකුණු පසින්) මාර්ගය සොයා ගැනීම සහ අනුගමනය කිරීමයි. එවැනි මාර්ගයක් තිබේ නම්, එම වාක්‍යය හෝ ඉදිකිරීම් වාක්‍යානුකූලව නිවැරදි වේ. එවැනි මාර්ගයක් නොමැති නම්, සම්පාදකයා මෙම ඉදිකිරීම පිළිගන්නේ නැත. වාක්‍ය ඛණ්ඩ රූප සටහන් සමඟ වැඩ කරන විට, ඊතල මගින් දක්වා ඇති ගමන් දිශාවට අවධානය යොමු කරන්න, මන්දයත් මාර්ග අතර දකුණේ සිට වමට අනුගමනය කළ හැකි සමහරක් තිබිය හැකි බැවිනි. සාරාංශයක් ලෙස, සින්ටැක්ස් රූප සටහන් මඟින් වැඩසටහනේ ආදාන වාක්‍ය විග්‍රහ කිරීමේදී පරිවර්තකයාගේ ක්‍රියාකාරිත්වයේ තර්කනය පිළිබිඹු කරයි.

වැඩසටහන් පෙළ ලිවීමේදී පිළිගත හැකි අක්ෂර වන්නේ:

සෑම අකුරු: A-Z, a-z. මෙම අවස්ථාවේදී, ලොකු අකුරු සහ කුඩා අකුරු සමාන ලෙස සලකනු ලැබේ;

0 සිට 9 දක්වා සංඛ්යා;

සංඥා ?, @, $, _, &;

වෙන් කරන්නන්, . ()< > { } + / * % ! " " ? \ = # ^.

එකලස් භාෂා වාක්‍ය සෑදී ඇත්තේ පරිවර්තකයාට අර්ථවත් වන වලංගු භාෂා සංකේතවල වාක්‍යානුකූලව වෙන් කළ නොහැකි අනුපිළිවෙලක් වන ලෙක්සීම් වලින් ය.

ලෙක්සිම් යනු:

හඳුනාගැනීම් යනු මෙහෙයුම් කේත, විචල්‍ය නම් සහ ලේබල් නම් වැනි වැඩසටහන් වස්තු නම් කිරීමට භාවිතා කරන වලංගු අක්ෂර අනුපිළිවෙලකි. හඳුනාගැනීම් ලිවීමේ රීතිය පහත පරිදි වේ: හඳුනාගැනීමක් අක්ෂර එකක් හෝ වැඩි ගණනකින් සමන්විත විය හැක. සංකේත ලෙස ඔබට ලතින් හෝඩියේ අකුරු, අංක සහ සමහර විශේෂ අක්ෂර භාවිතා කළ හැකිය - _, ?, $, @. හඳුනාගැනීමක් ඉලක්කම් අක්ෂරයකින් ආරම්භ කළ නොහැක. පරිවර්තකයා පළමු 32 පමණක් පිළිගෙන ඉතිරිය නොසලකා හරින නමුත්, හඳුනාගැනීමේ දිග අක්ෂර 255 දක්වා විය හැකිය. ඔබට විකල්පය භාවිතයෙන් හැකි හඳුනාගැනීම් වල දිග සකස් කළ හැක විධාන රේඛාව mv ඊට අමතරව, විශාල සහ කුඩා අකුරු අතර වෙනස හඳුනා ගැනීමට හෝ ඒවායේ වෙනස නොසලකා හැරීමට පරිවර්තකයාට උපදෙස් දිය හැකිය (එය පෙරනිමියෙන් සිදු කෙරේ).

^Assembler විධාන.

Assembler විධාන මඟින් ඔබේ අවශ්‍යතා පරිගණකයට මාරු කිරීමේ හැකියාව හෙළි කරයි, තාර්කික සැසඳීම් සහ වැඩසටහන් සංවිධානය සඳහා වැඩසටහනක (චක්‍ර සහ සංක්‍රාන්ති) පාලනය මාරු කිරීමේ යාන්ත්‍රණයකි. කෙසේ වෙතත්, වැඩසටහන්ගත කළ හැකි කාර්යයන් කලාතුරකින් සරල වේ. බොහෝ වැඩසටහන් වල යම් අවශ්‍යතාවයක් ලබා ගන්නා තෙක් විධාන කිහිපයක් පුනරාවර්තනය වන ලූප මාලාවක් සහ ක්‍රියා කිහිපයකින් කුමන ක්‍රියා කළ යුතුද යන්න තීරණය කරන විවිධ චෙක්පත් අඩංගු වේ. උපදෙස් පොයින්ටරයේ ඕෆ්සෙට් අගය සෘජුවම වෙනස් කිරීමෙන් සමහර උපදෙස් වලට සාමාන්‍ය පියවර අනුපිළිවෙල වෙනස් කිරීමෙන් පාලනය මාරු කළ හැක. කලින් සඳහන් කළ පරිදි, විවිධ ප්‍රොසෙසර සඳහා විවිධ විධාන ඇත, නමුත් අපි 80186, 80286 සහ 80386 ප්‍රොසෙසර සඳහා විධාන කිහිපයක් දෙස බලමු.

යම් විධානයක් ක්‍රියාත්මක කිරීමෙන් පසු කොඩිවල තත්ත්වය විස්තර කිරීම සඳහා, අපි කොඩි කොඩි ලේඛනයේ ව්‍යුහය පිළිබිඹු කරන වගුවකින් තේරීමක් භාවිතා කරමු:

මෙම වගුවේ පහළ පේළිය විධානය ක්‍රියාත්මක කිරීමෙන් පසු කොඩි වල අගයන් පෙන්වයි. පහත සඳහන් අංක භාවිතා වේ:

1 - විධානය ක්‍රියාත්මක කිරීමෙන් පසු, ධජය සකසා ඇත (1 ට සමාන);

0 - විධානය ක්‍රියාත්මක කිරීමෙන් පසු, ධජය නැවත සකසනු ලැබේ (0 ට සමාන);

r - ධජයේ අගය විධානයේ ප්රතිඵලය මත රඳා පවතී;

විධානය ක්‍රියාත්මක කිරීමෙන් පසුව, ධජය අර්ථ දක්වා නැත;

අවකාශය - විධානය ක්රියාත්මක කිරීමෙන් පසුව, ධජය වෙනස් නොවේ;

සින්ටැක්ස් ප්‍රස්ථාරවල ඔපෙරන්ඩ් නියෝජනය කිරීමට පහත අංකනය භාවිතා වේ:

r8, r16, r32 - බයිට් ප්‍රමාණයේ, වචනයේ හෝ ද්විත්ව වචනයේ එක් ලේඛනයක ඔපෙරාන්ඩ්;

m8, m16, m32, m48 - මතක ඔපෙරන්ඩ් ප්‍රමාණය බයිටය, වචනය, ද්විත්ව වචනය හෝ බිටු 48;

i8, i16, i32 - ක්ෂණික මෙහෙයුම් ප්‍රමාණය බයිට්, වචනය හෝ ද්විත්ව වචනය;

a8, a16, a32 - කේත කොටසේ සාපේක්ෂ ලිපිනය (ඕෆ්සෙට්).

විධාන (අකාරාදී පිළිවෙලට):

*මෙම විධානයන් විස්තරාත්මකව විස්තර කර ඇත.

එකතු කරන්න
(ඊට අමතරව)

ඊට අමතරව

^ විධාන රූප සටහන:

ගමනාන්තය, මූලාශ්රය එකතු කරන්න

අරමුණ: බයිට්, වචනය හෝ ද්විත්ව වචන ප්‍රභව සහ ගමනාන්ත මෙහෙයුම් දෙකක් එකතු කිරීම.

වැඩ ඇල්ගොරිතම:

මූලාශ්රය සහ ගමනාන්ත මෙහෙයුම් එකතු කරන්න;

එකතු කිරීමේ ප්රතිඵලය ග්රාහකයාට ලියන්න;

කොඩි සකසන්න.

විධානය ක්‍රියාත්මක කිරීමෙන් පසු කොඩි තත්ත්වය:

අයදුම්පත:
එකතු කිරීමේ විධානය නිඛිල මෙහෙයුම් දෙකක් එකතු කිරීමට භාවිතා කරයි. එකතු කිරීමේ ප්රතිඵලය පළමු ඔපෙරන්ඩ් ලිපිනයෙහි තබා ඇත. එකතු කිරීමේ ප්‍රති result ලය ග්‍රාහක ඔපෙරාන්ඩ් සීමාවෙන් ඔබ්බට ගියහොත් (පිටාර ගැලීමක් සිදු වේ), එවිට cf ධජය විශ්ලේෂණය කිරීමෙන් සහ පසුව adc විධානය භාවිතා කිරීමෙන් මෙම තත්වය සැලකිල්ලට ගත යුතුය. උදාහරණයක් ලෙස, අපි ax ලේඛනයේ සහ ch මතක ප්‍රදේශයේ අගයන් එකතු කරමු. එකතු කරන විට, පිටාර ගැලීමේ හැකියාව සැලකිල්ලට ගන්න.

රෙජිස්ටර් ප්ලස් රෙජිස්ටර් හෝ මතකය:

|000000dw|modregr/rm|

AX ලේඛනය (AL) සහ ක්ෂණික අගය:

|0000010w|--data--|data if w=1|

ලියාපදිංචිය හෝ මතකය සහ ක්ෂණික අගය:

|100000sw|mod000r/m|--data--|දත්ත නම් BW=01|

අමතන්න
(අමතන්න)

ක්රියා පටිපාටියක් හෝ කාර්යයක් ඇමතීම

^ විධාන රූප සටහන:

අරමුණ:

නැවතුම් ලක්ෂ්‍යයේ ලිපිනය තොගයේ ගබඩා කිරීම සමඟ ආසන්න හෝ දුර ක්‍රියා පටිපාටියකට පාලනය මාරු කිරීම;

කාර්යයන් මාරු කිරීම.

වැඩ ඇල්ගොරිතම:
මෙහෙයුම් වර්ගය අනුව තීරණය වේ:

ලේබලය අසල - eip/ip විධාන දර්ශකයේ අන්තර්ගතය තොගය මතට තල්ලු කර ලේබලයට අනුරූප නව ලිපින අගය එකම ලේඛනයට පටවනු ලැබේ;

Far ලේබලය - eip/ip සහ cs විධාන දර්ශකයේ අන්තර්ගතය තොගය මතට තල්ලු කරනු ලැබේ. එවිට දුර ලේබලයට අනුරූප නව ලිපින අගයන් එකම ලේඛනවලට පටවනු ලැබේ;

R16, 32 හෝ m16, 32 - පාලනය මාරු කරන වත්මන් උපදෙස් කොටසෙහි ඕෆ්සෙට් අඩංගු රෙජිස්ටර් හෝ මතක සෛලයක් නිර්වචනය කරන්න. පාලනය මාරු කළ විට, eip/ip විධාන දර්ශකයේ අන්තර්ගතය තොගය මතට තල්ලු කරනු ලැබේ;

Memory pointer - හැඳින්වෙන ක්‍රියා පටිපාටියට බයිට් 4ක් හෝ 6ක් අඩංගු මතක ස්ථානයක් නිර්වචනය කරයි. එවැනි දර්ශකයක ව්යුහය 2+2 හෝ 2+4 බයිට් වේ. එවැනි දර්ශකයක අර්ථ නිරූපණය මයික්රොප්රොසෙසරයේ මෙහෙයුම් ආකාරය මත රඳා පවතී:

^ විධානය ක්‍රියාත්මක කිරීමෙන් පසු කොඩි තත්ත්වය (කාර්ය මාරු කිරීම හැර):

විධානය ක්‍රියාත්මක කිරීම කොඩි වලට බලපාන්නේ නැත

කාර්යයක් මාරු කළ විට, ධජ අගයන් මාරු කරනු ලබන කාර්යයේ TSS තත්ත්‍ව කොටසේ ඇති කොඩි ලේඛනය පිළිබඳ තොරතුරු අනුව වෙනස් වේ.
අයදුම්පත:
ඇමතුම් විධානය මඟින් ප්‍රතිලාභ ලක්ෂ්‍යයේ ලිපිනය සංරක්ෂණය කරන අතරම subroutine එකකට නම්‍යශීලී සහ බහුවිචල්‍ය පාලනයක් සංවිධානය කිරීමට ඔබට ඉඩ සලසයි.

වස්තු කේතය (ආකෘති හතරක්):

කොටසක සෘජු ඇමතීම:

|11101000|disp-low|diep-high|

කොටසක වක්‍ර ආමන්ත්‍රණය:

|11111111|mod010r/m|

කොටස් අතර වක්‍ර ආමන්ත්‍රණය:

|11111111|mod011r/m|

කොටස් අතර සෘජු ඇමතීම:

|10011010|offset-low|offset-high|seg-low|seg-high|

CMP
(මෙහෙයුම් සසඳන්න)

මෙහෙයුම් හා සංසන්දනය

^ විධාන රූප සටහන:

cmp operand1,operand2

අරමුණ: මෙහෙයුම් දෙකක් සංසන්දනය කිරීම.

වැඩ ඇල්ගොරිතම:

අඩු කිරීම සිදු කරන්න (operand1-operand2);

ප්‍රතිඵලය මත පදනම්ව, කොඩි සකසන්න, operand1 සහ operand2 වෙනස් නොකරන්න (එනම්, ප්‍රතිඵලය මතක නැත).

අයදුම්පත:
මෙම විධානයඔපෙරන්ඩ් වෙනස් නොකර අඩු කිරීමෙන් ඔපෙරන්ඩ් දෙකක් සංසන්දනය කිරීමට භාවිතා කරයි. විධානයේ ප්රතිඵල මත පදනම්ව, කොඩි සකස් කර ඇත. cmp විධානය කොන්දේසි සහිත ජම්ප් විධානයන් සහ setcc අගය විධානය අනුව සැකසූ බයිට් සමඟ භාවිතා වේ.

වස්තු කේතය (ආකෘති තුනක්):

රෙජිස්ටර් සමඟ ලියාපදිංචි වීම හෝ මතකය:

|001110dw|modregr/m|

AX (AL) ලේඛනය සමඟ ක්ෂණික අගය:

|0011110w|--data--|data if w=1|

ලේඛනය හෝ මතකය සමඟ ක්ෂණික අගය:

|100000sw|mod111r/m|--data--|data if sw=0|

DEC
(1 වන විට ක්‍රියාන්විතය අඩු කරන්න)

ඔපෙරාන්ඩ් එකකින් අඩු කිරීම

^ විධාන රූප සටහන:

දෙසැම්බර් operand

අරමුණ: මතකයේ ඇති ඔපෙරාන්ඩ් අගය 1 කින් අඩු කරන්න හෝ ලියාපදිංචි කරන්න.

වැඩ ඇල්ගොරිතම:
විධානය operand එකෙන් 1 අඩු කරයි. විධානය ක්‍රියාත්මක කිරීමෙන් පසු කොඩි තත්ත්වය:

අයදුම්පත:
මතකයේ ඇති බයිටයක, වචනයක, ද්විත්ව වචනයක අගය අඩු කිරීමට හෝ එකකින් ලියාපදිංචි වීමට dec උපදෙස් භාවිතා කරයි. කෙසේ වෙතත්, විධානය cf ධජයට බලපාන්නේ නැති බව සලකන්න.

ලියාපදිංචි කරන්න: |01001reg|

^ ලියාපදිංචිය හෝ මතකය: |1111111w|mod001r/m|

DIV
(අත්සන් නොකළ බෙදන්න)

අත්සන් නොකළ අංශය

කණ්ඩායමේ දළ සටහන:

div divider

අරමුණ: අත්සන් නොකළ ද්විමය අගයන් දෙකක් අතර බෙදීමේ මෙහෙයුමක් සිදු කරන්න.

^ මෙහෙයුම් ඇල්ගොරිතම:
විධානය සඳහා මෙහෙයුම් දෙකක් අවශ්‍ය වේ - ලාභාංශ සහ බෙදුම්කරු. ලාභාංශය ව්‍යංගයෙන් දක්වා ඇති අතර එහි ප්‍රමාණය භාජකයේ ප්‍රමාණය මත රඳා පවතී, එය විධානයේ දක්වා ඇත:

භාජකය ප්‍රමාණයෙන් බයිටයක් නම්, ලාභාංශය පොරොව ලේඛනයේ පිහිටා තිබිය යුතුය. මෙහෙයුමෙන් පසුව, කෝටන්ට් එක al හි ද ඉතිරිය ah හි ද තබනු ලැබේ;

භාජකය ප්‍රමාණයෙන් වචනයක් නම්, ලාභාංශය dx:ax යන රෙජිස්ටර් යුගලයේ පිහිටා තිබිය යුතු අතර, ලාභාංශයේ අඩු අනුපිළිවෙලෙහි කොටස පොරවෙහි පිහිටා ඇත. මෙහෙයුමෙන් පසු, කෝටන්ට් එක පොරවෙහි ද ඉතිරිය dx හි ද තබනු ලැබේ;

භාජකය ප්‍රමාණයෙන් ද්විත්ව වචනයක් නම්, ලාභාංශය edx:eax යන රෙජිස්ටර් යුගලයේ පිහිටා තිබිය යුතු අතර, ලාභාංශයේ අඩු අනුපිළිවෙල කොටස eax හි පිහිටා ඇත. මෙහෙයුමෙන් පසු, කෝටන්ට් එක eax හි ද ඉතිරිය edx හි ද තබනු ලැබේ.

^ විධානය ක්‍රියාත්මක කිරීමෙන් පසු කොඩි තත්ත්වය:

අයදුම්පත:
විධානය මඟින් ඔපෙරන්ඩ්වල පූර්ණ සංඛ්‍යා බෙදීමක් සිදු කරයි, බෙදීමේ ප්‍රතිඵලය කොටස් වශයෙන් සහ බෙදීමේ ඉතිරිය ලෙස නිපදවයි. බෙදීම් මෙහෙයුමක් සිදු කරන විට, ව්යතිරේකයක් සිදුවිය හැක: 0 - බෙදීමේ දෝෂය. මෙම තත්ත්වය අවස්ථා දෙකෙන් එකක සිදු වේ: බෙදුම්කරු 0 හෝ කෝටන්ට් එක eax/ax/al ලේඛනයට ගැළපීමට නොහැකි තරම් විශාලය.

වස්තු කේතය:

|1111011w|mod110r/m|

INT
(බාධා)

බාධා කිරීමේ සේවා දින චර්යාව ඇමතීම

^ විධාන රූප සටහන:

int interrupt_number

අරමුණ: විධානය මඟින් නියම කර ඇති බාධා අංකය සමඟ බාධා කිරීමේ සේවා චර්යාව අමතන්න.

^ මෙහෙයුම් ඇල්ගොරිතම:

කොඩි රෙජිස්ටර් කොඩි/කොඩි සහ ආපසු එන ලිපිනය තොගය මතට තල්ලු කරන්න. ආපසු ලිපිනයක් ලියන විට, segment Register cs හි අන්තර්ගතය පළමුව ලියා ඇත, පසුව විධාන දර්ශකයේ අන්තර්ගතය eip / ip;

if සහ tf ධජ ශුන්‍යයට නැවත සකසන්න;

නිශ්චිත අංකය සමඟ බාධා කිරීමේ සේවා වැඩසටහනට පාලනය මාරු කරන්න. පාලන හුවමාරු යාන්ත්‍රණය මයික්‍රොප්‍රොසෙසරයේ ක්‍රියාකාරී මාදිලිය මත රඳා පවතී.

^ විධානය ක්‍රියාත්මක කිරීමෙන් පසු කොඩි තත්ත්වය:

අයදුම්පත:
සින්ටැක්ස් වලින් ඔබට පෙනෙන පරිදි, මෙම විධානයේ ආකාර දෙකක් තිබේ:

int 3 - එහි තනි තනි මෙහෙයුම් කේතය 0cch ඇති අතර එක් බයිටයක් හිමි වේ. මෙම තත්වය ඕනෑම විධානයක පළමු බයිටය ප්‍රතිස්ථාපනය කිරීමෙන් බිඳීම් ලක්ෂ්‍ය සැකසීමට විවිධ මෘදුකාංග නිදොස්කරණයන්හි භාවිතා කිරීම ඉතා පහසු කරයි. මයික්‍රොප්‍රොසෙසරය, විධාන අනුපිළිවෙලෙහි මෙහෙයුම් කේතය 0cch සමඟ විධානයක් මුණගැසෙන අතර, මෘදුකාංග නිදොස්කරණය සමඟ සන්නිවේදනය කිරීමට සේවය කරන දෛශික අංක 3 සමඟ බාධා කිරීමේ සැකසුම් වැඩසටහන අමතයි.

විධානයේ දෙවන ආකාරය බයිට් දෙකක් ගනී, 0cdh හි opcode එකක් ඇති අතර 0-255 පරාසයේ දෛශික අංකයක් සමඟ බාධා කිරීමේ සේවා චර්යාවකට ඇමතුමක් ආරම්භ කිරීමට ඔබට ඉඩ සලසයි. පාලන මාරු කිරීමේ විශේෂාංග, සටහන් කර ඇති පරිදි, මයික්රොප්රොසෙසරයේ මෙහෙයුම් ආකාරය මත රඳා පවතී.

වස්තු කේතය (ආකෘති දෙකක්):

ලියාපදිංචි කරන්න: |01000reg|

^ ලියාපදිංචිය හෝ මතකය: |1111111w|mod000r/m|

ජේ.සී.සී.
JCXZ/JECXZ
(කොන්දේසි නම් පනින්න)

(CX=Zero/ ECX=Zero නම් පනින්න)

කොන්දේසිය සපුරා ඇත්නම් පනින්න

CX/ECX ශුන්‍ය නම් පනින්න

^ විධාන රූප සටහන:

jcc ලේබලය
jcxz ලේබලය
jecxz ලේබලය

අරමුණ: යම් කොන්දේසියක් මත වත්මන් විධාන කොටස තුළ සංක්රමණය.

^ විධාන ඇල්ගොරිතම (jcxz/jecxz හැර):
ඔප්කෝඩ් මත පදනම්ව කොඩිවල තත්ත්වය පරීක්ෂා කිරීම (එය පරීක්ෂා කරන තත්ත්වය පිළිබිඹු කරයි):

පරීක්ෂා කරනු ලබන කොන්දේසිය සත්‍ය නම්, ඔපෙරන්ඩ් මඟින් දක්වා ඇති කොටුව වෙත යන්න;

පරීක්ෂා කරන කොන්දේසිය අසත්‍ය නම්, පාලනය ඊළඟ විධානයට මාරු කරන්න.

jcxz/jecxz විධානය සඳහා ඇල්ගොරිතම:
ecx/cx ලේඛනයේ අන්තර්ගතය බිංදුවට සමාන වන කොන්දේසිය පරීක්ෂා කිරීම:

තත්ත්වය පරීක්ෂා කරන්නේ නම්

එකලස් කිරීමේ භාෂාවේ විධාන ව්‍යුහය යන්ත්‍ර විධාන මට්ටමින් ක්‍රමලේඛනය යනු පරිගණක ක්‍රමලේඛනය කළ හැකි අවම මට්ටමයි. යන්ත්‍ර විධාන පද්ධතිය යන්ත්‍ර උපකරණ වෙත උපදෙස් නිකුත් කිරීමෙන් අවශ්‍ය ක්‍රියාමාර්ග ක්‍රියාත්මක කිරීමට ප්‍රමාණවත් විය යුතුය. සෑම යන්ත්‍ර උපදෙසක්ම කොටස් දෙකකින් සමන්විත වේ: ක්‍රියාකාරී එකක්, එය "කළ යුතු දේ" තීරණය කරයි සහ ඔපෙරාන්ඩ්, සැකසුම් වස්තු තීරණය කරයි, එනම් "කළ යුතු දේ". එකලස් කිරීමේ භාෂාවෙන් ලියා ඇති මයික්‍රොප්‍රොසෙසර් යන්ත්‍ර උපදෙස්, පහත දැක්වෙන පෝරමය ඇති තනි පේළියකි: ලේබල් විධාන/විධාන ක්‍රියාකාරකම(ය); අදහස් ලේබලය, විධානය/විධානය සහ ඔපෙරාන්ඩ් අවම වශයෙන් එක් ඉඩක් හෝ ටැබ් අක්ෂරයකින් වෙන් කර ඇත. විධානයේ මෙහෙයුම් කොමා වලින් වෙන් කරනු ලැබේ.

එකලස් කිරීමේ භාෂා විධාන ව්‍යුහය එකලස් කිරීමේ විධානයක් පරිවර්තකයාට මයික්‍රොප්‍රොසෙසරය කළ යුතු ක්‍රියාව කියයි. එකලස් කිරීමේ විධාන යනු එකලස් කිරීමේ ක්‍රියාවලියට හෝ ප්‍රතිදාන ගොනුවේ ගුණාංගවලට බලපාන වැඩසටහන් පෙළෙහි දක්වා ඇති පරාමිති වේ. ඔපෙරාන්ඩ් දත්තවල ආරම්භක අගය (දත්ත කොටසෙහි) හෝ විධාන ක්‍රියාව සිදු කරන මූලද්‍රව්‍ය (කේත කොටසෙහි) නියම කරයි. උපදෙසකට ඔපෙරාන්ඩ් එකක් හෝ දෙකක් තිබිය හැකිය, නැතහොත් ඔපෙරාන්ඩ් නැත. ඔපෙරන්ඩ් ගණන උපදෙස් කේතය මගින් ව්‍යංගයෙන් දක්වා ඇත. විධානයක් හෝ විධානයක් ඊළඟ පේළියේ දිගටම කරගෙන යාමට අවශ්‍ය නම්, backslash අක්ෂරය භාවිතා වේ: "" . පෙරනිමියෙන්, එකලස් කරන්නා විධාන සහ විධාන ලිවීමේදී ඉහළ සහ කුඩා අකුරු අතර වෙනස හඳුනා නොගනී. විධාන සහ විධාන සඳහා උදාහරණ Count db 1 ; නම, විධානය, එක් operand mov eax, 0 ; විධානය, මෙහෙයුම් දෙකක්

හඳුනාගැනීම් යනු විචල්‍ය නම් සහ ලේබල් නාම දැක්වීමට භාවිතා කරන වලංගු අක්ෂර අනුපිළිවෙලකි. හඳුනාගැනීම පහත අක්ෂර වලින් එකක් හෝ වැඩි ගණනකින් සමන්විත විය හැක: ලතින් හෝඩියේ සියලුම අකුරු; 0 සිට 9 දක්වා සංඛ්යා; විශේෂ අක්ෂර: _, @, $, ? . ලේබලයේ පළමු අක්ෂරය ලෙස තිතක් භාවිතා කළ හැක. වෙන් කර ඇති එකලස් කිරීමේ නම් (විධාන, ක්‍රියාකරුවන්, විධාන නම්) හඳුනාගැනීම් ලෙස භාවිතා කළ නොහැක. හඳුනාගැනීමේ පළමු අක්ෂරය අකුරක් හෝ විශේෂ අක්ෂරයක් විය යුතුය. උපරිම දිගහඳුනාගැනීමේ අක්ෂර 255 ක් ඇත, නමුත් පරිවර්තකයා පළමු 32 පිළිගෙන ඉතිරිය නොසලකා හරියි. එකලස් කිරීමේ විධානයක් අඩංගු නොවන පේළියක ලියා ඇති සියලුම ලේබල ":" තීරුවකින් අවසන් විය යුතුය. ලේබලය, විධානය (විධානය) සහ ඔපෙරාන්ඩ් රේඛාවේ කිසියම් නිශ්චිත ස්ථානයක සිට ආරම්භ කිරීමට අවශ්‍ය නොවේ. වැඩසටහනේ වැඩි කියවීමේ හැකියාව සඳහා ඒවා තීරුවක ලිවීම රෙකමදාරු කරනු ලැබේ.

ලේබල් එකලස් කිරීමේ විධානයක් අඩංගු නොවන පේළියක ලියා ඇති සියලුම ලේබල් ":" කොලනයකින් අවසන් විය යුතුය. ලේබලය, විධානය (විධානය) සහ ඔපෙරාන්ඩ් රේඛාවේ කිසියම් නිශ්චිත ස්ථානයක සිට ආරම්භ කිරීමට අවශ්‍ය නොවේ. වැඩසටහනේ වැඩි කියවීමේ හැකියාව සඳහා ඒවා තීරුවක ලිවීම රෙකමදාරු කරනු ලැබේ.

අදහස් වැඩසටහනක අදහස් භාවිතා කිරීම එහි පැහැදිලි බව වැඩි දියුණු කරයි, විශේෂයෙන් විධාන කට්ටලයක අරමුණ අපැහැදිලි වේ. ප්‍රභව මොඩියුලයේ ඕනෑම රේඛාවකින් අදහස් දැක්වීම ආරම්භ වන්නේ අර්ධ කෝලයක් (;) සමඟිනි. " හි දකුණට ඇති සියලුම අක්ෂර; " පේළියේ අවසානය දක්වා අදහස් දැක්වීමක් ඇත. අදහස් දැක්වීමක අවකාශය ඇතුළුව ඕනෑම මුද්‍රණය කළ හැකි අක්ෂර අඩංගු විය හැක. විවරණයකට සම්පූර්ණ පේළිය පුරා පැතිරීමට හෝ එම පේළියේම විධානයක් අනුගමනය කිරීමට හැකිය.

එකලස් කිරීමේ භාෂා වැඩසටහන් ව්‍යුහය එකලස් කිරීමේ භාෂාවෙන් ලියා ඇති වැඩසටහනක් මොඩියුල ලෙස හැඳින්වෙන කොටස් කිහිපයකින් සමන්විත විය හැකි අතර, ඒ සෑම එකක්ම දත්ත, තොග සහ කේත කොටස් එකක් හෝ කිහිපයක් අර්ථ දැක්විය හැක. එකලස් කිරීමේ භාෂාවේ ඕනෑම සම්පූර්ණ වැඩසටහනක් එහි ක්‍රියාත්මක කිරීම ආරම්භ වන එක් ප්‍රධාන හෝ ප්‍රධාන මොඩියුලයක් ඇතුළත් විය යුතුය. මොඩියුලය අඩංගු විය හැක වැඩසටහන් කොටස්, සුදුසු විධාන භාවිතා කරමින් ප්‍රකාශ කරන ලද දත්ත සහ තොග කොටස්.

මතක ආකෘති කොටස් ප්‍රකාශ කිරීමට පෙර, ඔබ විධානයක් භාවිතයෙන් මතක ආකෘතිය සඳහන් කළ යුතුය. MODEL modifier memory_model, calling_convention, OS_type, stack_parameter එකලස් කිරීමේ භාෂාවේ මූලික මතක ආකෘති: මතක ආදර්ශ කේතය දත්ත ආමන්ත්‍රණය කිරීම මෙහෙයුම් පද්ධතියඅන්තර් සම්බන්ධිත කේතය සහ දත්ත කුඩා MS-DOS පිළිගත හැකි කුඩා MS-DOS, Windows MS-DOS අසල මාධ්‍යයක් නැත, Windows MS-DOS අසල සංයුක්ත නැත, Windows විශාල දුර MS-DOS නැත, Windows විශාල දුර MS-DOS නැත, වින්ඩෝස් 2000 අසල වින්ඩෝස් නැත, වින්ඩෝස් එක්ස්පී, එන්ටී අසල වින්ඩෝස් පිළිගත හැකි පැතලි,

මතක ආකෘති කුඩා ආකෘතිය ක්‍රියා කරන්නේ 16-bit MS-DOS යෙදුම්වල පමණි. මෙම ආකෘතියේ, සියලුම දත්ත සහ කේතය එක් භෞතික කොටසක පිහිටා ඇත. මෙම නඩුවේ වැඩසටහන් ගොනුවේ ප්රමාණය 64 KB නොඉක්මවයි. කුඩා ආකෘතිය එක් කේත කොටසකට සහ එක් දත්ත කොටසකට සහය දක්වයි. මෙම ආකෘතිය භාවිතා කරන විට දත්ත සහ කේතය ආසන්න ලෙස ආමන්ත්‍රණය කෙරේ. මධ්‍යම මාදිලිය බහු කේත කොටස් සහ එක් දත්ත කොටසකට සහය දක්වයි, කේත ඛණ්ඩවල සියලුම යොමු පෙරනිමියෙන් බොහෝ දුරට සලකනු ලැබේ, සහ දත්ත කොටසක යොමු කිරීම් ආසන්නයේ සලකනු ලැබේ. සංයුක්ත ආකෘතිය දුර දත්ත ලිපින (දුර) භාවිතා කරන දත්ත කොටස් කිහිපයකට සහ ආසන්න ලිපින (ආසන්න) භාවිතා කරන එක් කේත ඛණ්ඩයකට සහය දක්වයි. විශාල මාදිලිය බහු කේත කොටස් සහ බහු දත්ත කොටස් සඳහා සහය දක්වයි. පෙරනිමියෙන්, කේතය සහ දත්ත සඳහා වන සියලුම යොමු කිරීම් දුරින් සලකනු ලැබේ. විශාල ආකෘතිය විශාල මතක ආකෘතියට පාහේ සමාන වේ.

මතක ආකෘති පැතලි ආකෘතිය ඛණ්ඩනය නොකළ වැඩසටහන් වින්‍යාසයක් උපකල්පනය කරන අතර එය 32-bit මෙහෙයුම් පද්ධතිවල පමණක් භාවිතා වේ. මෙම ආකෘතිය කුඩා ආකෘතියට සමාන වන අතර දත්ත සහ කේතය තනි කොටසක පිහිටා ඇත, නමුත් එය 32-bit වේ. නියෝගයට පෙර පැතලි ආකෘතිය සඳහා වැඩසටහනක් සංවර්ධනය කිරීම. ආදර්ශ පැතලි විධාන වලින් එකක් තැබිය යුතුය: . 386, . 486,. 586 හෝ. 686. ප්‍රොසෙසර තේරීමේ විධානය තේරීම වැඩසටහන් ලිවීමේදී ලබා ගත හැකි උපදෙස් මාලාව තීරණය කරයි. ප්‍රොසෙසර තේරීමේ නියෝගයෙන් පසු p අකුරෙන් අදහස් වන්නේ ආරක්ෂිත මෙහෙයුම් ආකාරයයි. සියලුම ලිපින සහ දර්ශක 32-බිට් වීමත් සමඟ දත්ත සහ කේත ආමන්ත්‍රණය ආසන්නයි.

මතක ආකෘති. MODEL modifier memory_model, calling_convention, OS_type, stack_parameter කොටස් වර්ග නිර්වචනය කිරීමට විකරණකාරක පරාමිතිය භාවිතා කරන අතර පහත අගයන් ගත හැක: 16 භාවිතා කරන්න (තෝරාගත් මාදිලියේ කොටස් 16-bit ලෙස භාවිතා වේ) 32 භාවිතා කරන්න (තෝරාගත් මාදිලියේ කොටස් භාවිතා වේ. 32-bit ලෙස). ඉහළ මට්ටමේ භාෂා (C++, Pascal) ඇතුළුව වෙනත් භාෂාවලින් ක්‍රියා පටිපාටියක් ඇමතීමේ දී පරාමිති සම්මත කිරීමේ ක්‍රමය තීරණය කිරීමට calling_convention පරාමිතිය භාවිතා කරයි. පරාමිතියට පහත අගයන් ගත හැක: C, BASIC, FORTRAN, PASCAL, SYSCALL, STDCALL.

මතක ආකෘති. MODEL modifier memory_model, calling_convention, OS_type, stack_parameter OS_type පරාමිතිය පෙරනිමියෙන් OS_DOS වේ, සහ මේ මොහොතේමෙම පරාමිතිය සඳහා සහය දක්වන එකම අගය මෙයයි. stack_parameter පරාමිතිය සකසා ඇත: NEARSTACK (SS ලේඛනය DS ට සමාන වේ, දත්ත සහ අට්ටි ප්‍රදේශ එකම භෞතික කොටසක පිහිටා ඇත) FARSTACK (SS ලේඛනය DS ට සමාන නොවේ, දත්ත සහ අට්ටි ප්‍රදේශ විවිධ භෞතික අංශවල පිහිටා ඇත). පෙරනිමි අගය NEARSTACK වේ.

කිසිවක් නොකරන වැඩසටහනක උදාහරණයක්. 686 P. ආදර්ශ පැතලි, STDCALL. දත්ත. CODE START: RET END START RET - microprocessor විධානය. වැඩසටහන නිවැරදිව අවසන් වන බව සහතික කරයි. වැඩසටහනේ ඉතිරි කොටස පරිවර්තකයාගේ ක්‍රියාකාරිත්වය ගැන සැලකිලිමත් වේ. . 686 P - Pentium 6 (Pentium II) ආරක්ෂිත මාදිලියේ විධාන වලට අවසර ඇත. මෙම විධානය මඟින් ප්‍රොසෙසර ආකෘතිය දැක්වෙන සහය දක්වන එකලස් කිරීමේ උපදෙස් මාලාව තෝරා ගනී. . MODEL FLAT, stdcall - පැතලි මතක ආකෘතිය. මෙම මතක ආකෘතිය වින්ඩෝස් මෙහෙයුම් පද්ධතියේ භාවිතා වේ. stdcall - භාවිතා කරන ලද ඇමතුම් සම්මුතිය.

කිසිවක් නොකරන වැඩසටහනක උදාහරණයක්. 686 P. ආදර්ශ පැතලි, STDCALL. දත්ත. CODE START: RET END START. DATA යනු දත්ත අඩංගු වැඩසටහන් අංශයකි. මෙම වැඩසටහනතොගය භාවිතා නොකරයි, එබැවින් කොටස. STACK අතුරුදහන්. . CODE යනු කේතය අඩංගු වැඩසටහන් කොටසකි. START - ලේබලය. END START - වැඩසටහනේ අවසානය සහ වැඩසටහන් ක්‍රියාත්මක කිරීම START ලේබලයෙන් ආරම්භ විය යුතු බවට සම්පාදකයාට පණිවිඩයක්. සෑම වැඩසටහනකම අවසානය සලකුණු කිරීම සඳහා END විධානයක් අඩංගු විය යුතුය ප්රභව කේතයවැඩසටහන්. END විධානය අනුගමනය කරන සියලුම රේඛා නොසලකා හරිනු ලැබේ. END විධානයට පසුව සඳහන් කර ඇති ලේබලය පරිවර්තකයාට වැඩසටහන් ක්‍රියාත්මක කිරීම ආරම්භ වන ප්‍රධාන මොඩියුලයේ නම කියයි. වැඩසටහනේ එක් මොඩියුලයක් තිබේ නම්, END නියෝගයෙන් පසු ලේබලය මඟ හැරිය හැක.

එකලස් කිරීමේ භාෂා පරිවර්තක පරිවර්තක - ​​වැඩසටහන හෝ තාක්ෂණික ක්රම, එය එක් ක්‍රමලේඛන භාෂාවකින් නිරූපණය වන වැඩසටහනක් ඉලක්ක භාෂාවේ වැඩසටහනක් බවට පරිවර්තනය කරයි, එය වස්තු කේතය ලෙස හැඳින්වේ. යන්ත්‍ර උපදේශන සිහිවටනයට සහාය වීමට අමතරව, සෑම පරිවර්තකයෙකුටම තමන්ගේම විධාන සහ සාර්ව මෙවලම් කට්ටලයක් ඇත, බොහෝ විට වෙනත් කිසිවක් සමඟ නොගැලපේ. ප්‍රධාන එකලස් කිරීමේ භාෂා පරිවර්තක වර්ග: MASM (Microsoft Assembler), TASM (Borland Turbo Assembler), FASM (Flat Assembler) - Tomasz Gryshtar (පෝලන්ත), NASM (Netwide Assembler) විසින් ලියන ලද නිදහසේ බෙදා හරින ලද බහු-පාස් එකලස් කරන්නා - නොමිලේ Intel x architecture 86 සඳහා assembler, ජූලියන් හෝල් සමඟ සයිමන් ටැතම් විසින් නිර්මාණය කරන ලද අතර දැනට Source හි කුඩා සංවර්ධකයින් කණ්ඩායමක් විසින් සංවර්ධනය කරනු ලැබේ. ව්යාජය. ශුද්ධ.

Src="https://present5.com/presentation/-29367016_63610977/image-15.jpg" alt="Microsoft Visual Studio 2005 හි වැඩසටහනක් පරිවර්තනය කිරීම 1) ගොනුව->New- තේරීමෙන් ව්‍යාපෘතියක් සාදන්න > ව්යාපෘති මෙනුව සහ"> Трансляция программы в Microsoft Visual Studio 2005 1) Создать проект, выбрав меню File->New->Project и указав имя проекта (hello. prj) и тип проекта: Win 32 Project. В дополнительных опциях мастера проекта указать “Empty Project”.!}

Src="https://present5.com/presentation/-29367016_63610977/image-16.jpg" alt="Microsoft Visual Studio 2005 හි වැඩසටහන පරිවර්තනය කිරීම 2) ව්‍යාපෘති ගසෙහි (View->Solution Explorer) එකතු කරන්න"> Трансляция программы в Microsoft Visual Studio 2005 2) В дереве проекта (View->Solution Explorer) добавить файл, в котором будет содержаться текст программы: Source. Files->Add->New. Item.!}

වැඩසටහන Microsoft Visual Studio 2005 වෙත පරිවර්තනය කිරීම 3) C++ ගොනු වර්ගය තෝරන්න, නමුත් දිගුව සමඟ නම සඳහන් කරන්න. asm:

වැඩසටහන Microsoft Visual Studio 2005 වෙත පරිවර්තනය කිරීම 5) සම්පාදක පරාමිතීන් සකසන්න. ව්‍යාපෘති ගොනුවේ අභිරුචි ගොඩනැගීමේ රීති මෙනුව දකුණු-ක්ලික් කරන්න...

වැඩසටහන Microsoft Visual Studio 2005 වෙත පරිවර්තනය කර දිස්වන කවුළුවේ Microsoft Macro Assembler තෝරන්න.

Microsoft Visual Studio 2005 හි වැඩසටහන පරිවර්තනය කිරීම hello ගොනුවේ දකුණු බොත්තම සමඟ පරීක්ෂා කරන්න. ප්‍රොපටීස් මෙනුවේ asm ව්‍යාපෘති ගස සහ සාමාන්‍ය->මෙවලම: මයික්‍රොසොෆ්ට් මැක්‍රෝ එකලස් කරන්න.

Src="https://present5.com/presentation/-29367016_63610977/image-22.jpg" alt="Microsoft Visual Studio 2005 හි වැඩසටහන පරිවර්තනය කිරීම 6) Build->Build hello තේරීමෙන් ගොනුව සම්පාදනය කරන්න. prj."> Трансляция программы в Microsoft Visual Studio 2005 6) Откомпилировать файл, выбрав Build->Build hello. prj. 7) Запустить программу, нажав F 5 или выбрав меню Debug->Start Debugging.!}

වින්ඩෝස් ඕඑස් හි ක්‍රමලේඛනය වින්ඩෝස් ඕඑස් හි ක්‍රමලේඛනය පදනම් වී ඇත්තේ ඒපීඅයි ක්‍රියාකාරකම් (යෙදුම් වැඩසටහන් අතුරුමුහුණත, එනම් මෘදුකාංග යෙදුම් අතුරුමුහුණත) භාවිතය මත ය. ඔවුන්ගේ සංඛ්යාව 2000 දක්වා ළඟා වේ. වින්ඩෝස් වැඩසටහන බොහෝ දුරට එවැනි ඇමතුම් වලින් සමන්විත වේ. සමඟ සියලු අන්තර්ක්‍රියා බාහිර උපාංගසහ මෙහෙයුම් පද්ධති සම්පත්, රීතියක් ලෙස, එවැනි කාර්යයන් හරහා සිදු වේ. මෙහෙයුම් කාමරය වින්ඩෝස් පද්ධතියපැතලි මතක ආකෘතියක් භාවිතා කරයි. ඕනෑම මතක සෛලයක ලිපිනය එක් 32-බිට් ලේඛනයක අන්තර්ගතය මගින් තීරණය කරනු ලැබේ. වින්ඩෝස් සඳහා වැඩසටහන් ව්යුහයන් වර්ග 3 ක් ඇත: සංවාද (ප්රධාන කවුළුව සංවාදය), කොන්සෝලය හෝ කවුළු රහිත ව්යුහය, සම්භාව්ය ව්යුහය (කවුළු, රාමුව).

අමතන්න වින්ඩෝස් කාර්යයන් API උපකාරක ගොනුව තුළ, ඕනෑම API ශ්‍රිතයක් පෝරමයේ function_name වර්ගය (FA 1, FA 2, FA 3) වර්ගය - ප්‍රතිලාභ අගය වර්ගය තුළ ඉදිරිපත් කෙරේ; FAx - ඒවා දිස්වන අනුපිළිවෙලෙහි විධිමත් තර්ක ලැයිස්තුවක් උදාහරණයක් ලෙස, int Message. කොටුව(HWND h. Wnd, LPCTSTR lp. පෙළ, LPCTSTR lp. සිරස්තල, UINT u. වර්ගය); මෙම කාර්යයපණිවිඩයක් සහ පිටවීමේ බොත්තමක් (හෝ බොත්තම්) සහිත කවුළුවක් පෙන්වයි. පරාමිතිවල තේරුම: h. Wnd යනු පණිවිඩ කවුළුව දිස්වන කවුළුවේ විස්තරයකි, lp. පෙළ - කවුළුවේ දිස්වන පෙළ, lp. ශීර්ෂ පාඨය - කවුළුවේ මාතෘකාවේ පෙළ, u. වර්ගය - කවුළු වර්ගය; විශේෂයෙන්, ඔබට පිටවීමේ බොත්තම් ගණන තීරණය කළ හැකිය.

Windows API int Message කාර්යයන් ඇමතීම. කොටුව(HWND h. Wnd, LPCTSTR lp. පෙළ, LPCTSTR lp. සිරස්තල, UINT u. වර්ගය); සියලුම API ක්‍රියාකාරී පරාමිතීන් ඇත්ත වශයෙන්ම 32-bit පූර්ණ සංඛ්‍යා වේ: HWND යනු 32-bit පූර්ණ සංඛ්‍යාවකි, LPCTSTR යනු තන්තුවකට 32-bit දර්ශකයකි, UINT යනු 32-bit පූර්ණ සංඛ්‍යාවකි. ශ්‍රිතයේ නව අනුවාද වෙත යාමට "A" යන උපසර්ගය බොහෝ විට ශ්‍රිත නාමයට එකතු වේ.

Windows API int Message කාර්යයන් ඇමතීම. කොටුව(HWND h. Wnd, LPCTSTR lp. පෙළ, LPCTSTR lp. සිරස්තල, UINT u. වර්ගය); MASM භාවිතා කරන විට, ඔබ නමේ අවසානයට @N N එකතු කළ යුතුය - සම්මත විස්තාරක තොගයේ ඇති බයිට් ගණන. Win 32 API ශ්‍රිත සඳහා, මෙම සංඛ්‍යාව විස්තාරක ගණන ලෙස අර්ථ දැක්විය හැක n 4 න් ගුණ කළ විට (එක් එක් තර්කයේ බයිට්): N=4*n. ශ්‍රිතයක් ඇමතීමට, එකලස් කිරීමේ ඇමතුම් උපදෙස් භාවිතා කරන්න. මෙම අවස්ථාවෙහිදී, සියලුම ශ්‍රිත තර්ක එයට ගොඩකරය (PUSH විධානය) හරහා යවනු ලැබේ. තර්ක සම්මත කිරීමේ දිශාව: වමේ සිට දකුණට - පහළට ඉහළට. u යන තර්කය මුලින්ම තොගය මතට තල්ලු කරනු ලැබේ. ටයිප් කරන්න. නිශ්චිත කාර්යයට ඇමතුම මේ ආකාරයෙන් පෙනෙනු ඇත: ඇමතුම් පණිවිඩය. පෙට්ටිය. A@16

Windows API int Message කාර්යයන් ඇමතීම. කොටුව(HWND h. Wnd, LPCTSTR lp. පෙළ, LPCTSTR lp. සිරස්තල, UINT u. වර්ගය); ඕනෑම API ශ්‍රිතයක් ක්‍රියාත්මක කිරීමේ ප්‍රතිඵලය සාමාන්‍යයෙන් EAX ලේඛනයේ ආපසු ලැබෙන පූර්ණ සංඛ්‍යාවකි. OFFSET විධානය නියෝජනය කරන්නේ "ඛණ්ඩයක ඕෆ්සෙට්", හෝ, ඉහළ මට්ටමේ භාෂා පද වලට පරිවර්තනය කර, පේළියක ආරම්භයට "පොයින්ටර්" ය. SI හි #define වැනි EQU විධානය නියතයක් නිර්වචනය කරයි. EXTERN විධානය පරිවර්තකයාට පවසන්නේ ශ්‍රිතය හෝ හඳුනාගැනීම මෙම මොඩියුලයට බාහිර බවයි.

“හැමෝටම ආයුබෝවන්!” වැඩසටහනක උදාහරණයක් . 686 P. ආදර්ශ පැතලි, STDCALL. STACK 4096. දත්ත MB_OK EQU 0 STR 1 DB "මගේ පළමු වැඩසටහන", 0 STR 2 DB "හැමෝටම ආයුබෝවන්!", 0 HW DD ? EXTERN පණිවිඩය. පෙට්ටිය. A@16: ආසන්න. කේතය ආරම්භය: MB_OK තල්ලු කරන්න OFFSET STR 1 තල්ලු කරන්න OFFSET STR 2 PUSH HW ඇමතුම් පණිවිඩය. පෙට්ටිය. A@16 RET END START

INVOKE විධානය MASM භාෂා පරිවර්තකය ඔබට සාර්ව මෙවලමක් භාවිතයෙන් ක්‍රියාකාරී ඇමතුම් සරල කිරීමට ද ඉඩ සලසයි - INVOKE විධානය: INVOKE ශ්‍රිතය, පරාමිතිය1, පරාමිතිය2, ... ශ්‍රිත ඇමතුමට @16 එක් කිරීමට අවශ්‍ය නැත; පරාමිති හරියටම ලියා ඇත්තේ ඒවා ක්‍රියාකාරී විස්තරයේ ලබා දී ඇති අනුපිළිවෙලට ය. පරිවර්තකයේ සාර්ව මාර්ගයෙන්, පරාමිති තොගය මත තබා ඇත. INVOKE විධානය භාවිතා කිරීමට, ඔබට PROTO විධානය භාවිතා කරමින් ශ්‍රිත මූලාකෘතිය පිළිබඳ විස්තරයක් පෝරමයේ තිබිය යුතුය: පණිවිඩය. පෙට්ටිය. A ProTO: DWORD, : DWORD වැඩසටහනක් Win 32 API ශ්‍රිත බොහොමයක් භාවිතා කරන්නේ නම්, C: masm 32includeuser 32. inc ඇතුළත් විධානය භාවිතා කිරීම සුදුසුය.

මාතෘකාව 2.5 ප්‍රොසෙසර ක්‍රමලේඛනයේ මූලික කරුණු

වැඩසටහනේ දිග වැඩි වන විට, විවිධ මෙහෙයුම් වල කේත මතක තබා ගැනීම වඩ වඩාත් අපහසු වේ. මතකයන් මේ සම්බන්ධයෙන් යම් උපකාරයක් සපයයි.

සංකේතාත්මක විධාන කේතීකරණ භාෂාව ලෙස හැඳින්වේ එකලස් කරන්නා.

එකලස් කිරීමේ භාෂාවයනු සෑම උච්චාරණයක්ම හරියටම එක් යන්ත්‍ර විධානයකට අනුරූප වන භාෂාවකි.

එකලස් කිරීමඑකලස් කිරීමේ භාෂාවෙන් වැඩසටහනක් පරිවර්තනය කිරීම ලෙස හැඳින්වේ, එනම් යන්ත්‍ර කේත සමඟ මෙහෙයුම් සංකේතාත්මක නම් සහ සංකේතාත්මක ලිපින නිරපේක්ෂ හෝ සාපේක්ෂ සංඛ්‍යා සමඟ ප්‍රතිස්ථාපනය කිරීමෙන් යන්ත්‍ර භාෂාවෙන් වැඩසටහනක් සකස් කිරීම මෙන්ම පුස්තකාල වැඩසටහන් ඇතුළත් කිරීම සහ නිශ්චිත නියම කිරීම මගින් සංකේතාත්මක උපදෙස් අනුපිළිවෙල උත්පාදනය කිරීම ක්ෂුද්ර කණ්ඩායම්වල පරාමිතීන්. මෙම වැඩසටහන සාමාන්‍යයෙන් ROM හි පිහිටා ඇත හෝ සමහර බාහිර මාධ්‍ය වලින් RAM වෙත ඇතුල් වේ.

එකලස් කිරීමේ භාෂාවට ඉහළ මට්ටමේ භාෂාවලින් එය වෙන්කර හඳුනාගත හැකි විශේෂාංග කිහිපයක් තිබේ:

1. මෙය එකලස් කිරීමේ භාෂා ප්‍රකාශ සහ යන්ත්‍ර උපදෙස් අතර එකින් එක ලිපි හුවමාරුවකි.

2. එකලස් කිරීමේ භාෂා ක්‍රමලේඛකයෙකුට ඉලක්ක යන්ත්‍රයේ ඇති සියලුම වස්තු සහ උපදෙස් වෙත ප්‍රවේශය ඇත.

යන්ත්‍ර-නැඹුරු භාෂාවලින් ක්‍රමලේඛනයේ මූලික කරුණු අවබෝධ කර ගැනීම ප්‍රයෝජනවත් වේ:



පරිගණක ගෘහ නිර්මාණ ශිල්පය පිළිබඳ වඩා හොඳ අවබෝධයක් සහ පරිගණක වඩාත් දක්ෂ ලෙස භාවිතා කිරීම;

ව්යවහාරික ගැටළු විසඳීම සඳහා වැඩසටහන් සඳහා ඇල්ගොරිතමවල වඩාත් තාර්කික ව්යුහයන් සංවර්ධනය කිරීම;

මූලාශ්‍ර වැඩසටහන් නැති වූ විට (DEBUG වැඩසටහනේ දෝශ නිරාකරණයේ සඳහන් වැඩසටහන් ඇමතීමෙන් සහ එකලස් කිරීමේදී ඒවායේ සංදර්ශකය විසංයෝජනය කිරීමෙන්, ඕනෑම ඉහළ මට්ටමේ භාෂාවකින් සම්පාදනය කරන ලද .exe සහ .com දිගුව සමඟ ක්‍රියාත්මක කළ හැකි වැඩසටහන් බැලීම සහ නිවැරදි කිරීමේ හැකියාව භාෂාව);

වඩාත්ම තීරණාත්මක ගැටළු විසඳීම සඳහා වැඩසටහන් සම්පාදනය කිරීම (මැෂින්-නැඹුරු භාෂාවකින් ලියන ලද වැඩසටහනක් සාමාන්‍යයෙන් වඩාත් ඵලදායී වේ - ඉහළ මට්ටමේ භාෂාවලින් පරිවර්තනය කිරීමේ ප්‍රතිඵලයක් ලෙස ලබාගත් වැඩසටහන් වලින් සියයට 30-60 කින් කෙටි හා වේගවත්)

ප්‍රධාන වැඩසටහනට ඇතුළත් කර ඇති ක්‍රියා පටිපාටි භාවිතා කරන හෝ OS සේවා ක්‍රියා පටිපාටි භාවිතා කරන ඉහළ මට්ටමේ භාෂාවෙන් ක්‍රියාත්මක කළ නොහැකි අවස්ථාවක වෙනම කොටස් ආකාරයෙන් ක්‍රියාත්මක කිරීම.

එකලස් කිරීමේ භාෂාවේ වැඩසටහනක් ක්‍රියාත්මක කළ හැක්කේ එක් පරිගණක පවුලක පමණක් වන අතර ඉහළ මට්ටමේ භාෂාවකින් ලියන ලද වැඩසටහනක් විවිධ යන්ත්‍ර මත ක්‍රියාත්මක විය හැකිය.

එකලස් කිරීමේ භාෂා හෝඩිය ASCII අක්ෂර වලින් සෑදී ඇත.

සංඛ්‍යා යනු පූර්ණ සංඛ්‍යා පමණි. ඒ තියෙන්නේ:

ද්විමය සංඛ්යා B අකුරෙන් අවසන් වේ;

D අකුරෙන් අවසන් වන දශම සංඛ්‍යා;

ෂඩ් දශම සංඛ්‍යා H අකුරින් අවසන් වේ.

RAM, රෙජිස්ටර්, දත්ත ඉදිරිපත් කිරීම

යම් මන්ත්‍රීවරුන් මාලාවක් සඳහා, තනි ක්‍රමලේඛන භාෂාවක් භාවිතා වේ - එකලස් කිරීමේ භාෂාව.

එකලස් කිරීමේ භාෂාව යන්ත්‍ර කේත සහ ඉහළ මට්ටමේ භාෂා අතර අතරමැදි ස්ථානයක් ගනී. මෙම භාෂාවෙන් ක්‍රමලේඛනය කිරීම පහසුය. එකලස් කිරීමේ භාෂාවේ වැඩසටහනක් ඉහළ මට්ටමේ භාෂාවක වැඩසටහනකට වඩා නිශ්චිත යන්ත්‍රයක (වඩාත් නිවැරදිව, මන්ත්‍රීවරයෙකුගේ) හැකියාවන් වඩාත් කාර්යක්ෂමව භාවිතා කරයි (එය ක්‍රමලේඛකයෙකුට එකලස් කරන්නෙකුට වඩා සරල ය). MP KR580VM80 සඳහා එකලස් කිරීමේ භාෂාවේ උදාහරණය භාවිතා කරමින් යන්ත්‍ර-නැඹුරු භාෂාවලින් ක්‍රමලේඛනයේ මූලික මූලධර්ම දෙස බලමු. භාෂාවෙන් වැඩසටහන් කිරීමට සාමාන්‍ය ක්‍රමවේදයක් භාවිතා කරයි. වැඩසටහන් පටිගත කිරීම සඳහා විශේෂිත තාක්ෂණික ශිල්පීය ක්රම, ඉලක්කගත MP හි ගෘහ නිර්මාණ ශිල්පය සහ විධාන පද්ධතියේ ලක්ෂණ සමඟ සම්බන්ධ වේ.

මෘදුකාංග ආකෘතිය MP KR580VM80 මත පදනම් වූ මයික්රොප්රොසෙසර් පද්ධතිය

රූප සටහන 1 ට අනුකූලව MPS හි මෘදුකාංග ආකෘතිය

පාර්ලිමේන්තු මන්ත්‍රී වරාය මතකය

එස් Z ඒ.සී. පී සී

පින්තූරය 1

ක්‍රමලේඛකයාගේ දෘෂ්ටි කෝණයෙන්, MP KR580VM80 හි පහත වැඩසටහන්-ප්‍රවේශ විය හැකි ලේඛන ඇත.

– 8-bit accumulator ලේඛනය. එය මන්ත්‍රීවරයාගේ ප්‍රධාන ලේඛනයයි. ALU එකක සිදු කරන ඕනෑම මෙහෙයුමක් ඇකියුමියුලේටරය තුළ ක්‍රියාවට නැංවිය යුතු මෙහෙයුම් වලින් එකක් ඇතුළත් වේ. ALU හි මෙහෙයුමක ප්‍රතිඵලය සාමාන්‍යයෙන් A හි ගබඩා වේ.

බී, සී, ඩී, ඊ, එච්, එල්– 8-bit පොදු කාර්ය ලේඛන (GPR). අභ්යන්තර මතකයපා.ම. සැකසූ තොරතුරු ගබඩා කිරීම සඳහා නිර්මාණය කර ඇති අතර, මෙහෙයුමේ ප්රතිඵල. 16-bit වචන සැකසීමේදී, BC, DE, HL යන යුගල ලියාපදිංචි කරයි, සහ ද්විත්ව ලේඛනය පළමු අකුර ලෙස හැඳින්වේ - B, D, H. රෙජිස්ටර් යුගලයක, ඉහළම වන්නේ පළමු ලේඛනයයි. රෙජිස්ටර් H සහ L සතුව විශේෂ දේපලක් ඇත, දත්ත ගබඩා කිරීම සහ RAM සෛල 16-bit ලිපින ගබඩා කිරීම සඳහා භාවිතා වේ.

එෆ්එල්– කොඩි ලේඛනය (සලකුණු ලේඛනය) මන්ත්‍රීවරයා තුළ අංක ගණිතමය සහ තාර්කික මෙහෙයුම් සිදු කිරීමේ ප්‍රතිඵලයේ සලකුණු පහක් ගබඩා කර ඇති බිටු 8 ලේඛනය. පින්තූරයට අනුව FL ආකෘතිය

Bit C (CY - රැගෙන යාම) - රැගෙන යන්න, අංක ගණිත මෙහෙයුම් සිදු කරන විට බයිටයේ ඉහළ අනුපිළිවෙලින් රැගෙන යාමක් තිබුනේ නම් 1 ලෙස සකසන්න.

Bit P (parity) - සමානාත්මතාවය, ප්රතිඵලයේ බිටු වල ඇති එක සංඛ්යාව ඉරට්ටේ නම් 1 ට සකසන්න.

ප්‍රත්‍යාවර්තක සංඛ්‍යාව යනු ප්‍රතිඵලයේ අඩු-ඇණවුම් ටෙට්‍රාඩ් වෙතින් රැගෙන යාමේ අගය ගබඩා කිරීම සඳහා නිර්මාණය කර ඇති අතිරේක රැගෙන යාමකි.

බිට් Z (ශුන්‍යය) - මෙහෙයුමේ ප්‍රතිඵලය 0 නම් 1 ලෙස සකසන්න.

Bit S (ලකුණ) - ප්‍රතිඵලය සෘණ නම් 1 ලෙසත්, ප්‍රතිඵලය ධනාත්මක නම් 0 ලෙසත් සකසා ඇත.

එස්.පී- ස්ටැක් පොයින්ටර්, 16-බිට් රෙජිස්ටර්, මතක සෛලයේ ලිපිනය ගබඩා කිරීම සඳහා නිර්මාණය කර ඇති අතර එහිදී අවසන් බයිටය ලියා ඇත.

රුපියල්- ක්‍රමලේඛ කවුන්ටරය (වැඩසටහන් කවුන්ටරය), ක්‍රියාත්මක කිරීමට නියමිත ඊළඟ උපදෙස් වල ලිපිනය ගබඩා කිරීම සඳහා නිර්මාණය කර ඇති 16-bit ලේඛනයක්. ඊළඟ උපදෙස් බයිටය ලබා ගත් වහාම වැඩසටහන් කවුන්ටරයේ අන්තර්ගතය ස්වයංක්‍රීයව 1 කින් වැඩි වේ.

0000Н - 07FF ලිපිනයේ ආරම්භක මතක ප්‍රදේශයේ ඇත පාලන වැඩසටහනසහ ආදර්ශන වැඩසටහන්. මෙය ROM කලාපයයි.

0800 – 0AFF - අධ්‍යයනය යටතේ පවතින වැඩසටහන් පටිගත කිරීම සඳහා ලිපින කලාපය. (RAM).

0В00 - 0ВВ0 - දත්ත ලිවීම සඳහා ලිපින ප්රදේශය. (RAM).

0ВВ0 - තොගයේ ආරම්භක ලිපිනය. (RAM).

තොගයක් යනු දත්ත හෝ ලිපින තාවකාලිකව ගබඩා කිරීම සඳහා විෙශේෂෙයන් සංවිධානය කරන ලද RAM ප්‍රදේශයකි. අට්ටියට ලියා ඇති අවසාන අංකය මුලින්ම පොප් කර ඇත. ස්ටැක් පොයින්ටරය තොරතුරු ලියා ඇති අවසාන අට්ටි කොටුවේ ලිපිනය ගබඩා කරයි. උපසිරැසියක් ඇමතූ විට, ප්‍රධාන වැඩසටහන වෙත ආපසු යන ලිපිනය ස්වයංක්‍රීයව තොගයේ ගබඩා වේ. රීතියක් ලෙස, එක් එක් උපසිරැසි ආරම්භයේ දී එය ක්‍රියාත්මක කිරීමට සම්බන්ධ සියලුම රෙජිස්ටර් වල අන්තර්ගතය තොගයේ සුරකින අතර, උපසිරැසි අවසානයේ ඒවා තොගයෙන් ප්‍රතිස්ථාපනය වේ.

එකලස් කිරීමේ භාෂාවේ දත්ත ආකෘතිය සහ විධාන ව්යුහය

MP KR580VM80 හි මතකය යනු බයිට් ලෙස හැඳින්වෙන බිටු 8ක වචන මාලාවකි.සෑම බයිටයකටම තමන්ගේම 16-බිට් ලිපිනයක් ඇත, එය මතක සෛල අනුපිළිවෙලෙහි එහි පිහිටීම තීරණය කරයි. මන්ත්‍රීවරයාට බයිට් 65536 ක මතකයක් ඇමතීමට හැකිය, එය ROM සහ RAM යන දෙකෙහිම අඩංගු විය හැක.

දත්ත ආකෘතිය

දත්ත 8-bit වචන ලෙස මතකයේ ගබඩා කර ඇත:

D7 D6 D5 D4 D3 D2 D1 D0

අවම සැලකිය යුතු බිට් බිට් 0 වේ, වඩාත්ම වැදගත් බිට් බිට් 7 වේ.

විධානයක් එහි ආකෘතියෙන් සංලක්ෂිත වේ, එනම්, ඒ සඳහා වෙන් කර ඇති බිටු ගණන, ඒවා බයිටයෙන් බයිටයෙන් යම් ක්‍රියාකාරී ක්ෂේත්‍රවලට බෙදා ඇත.

විධාන ආකෘතිය

MP KR580VM80 විධාන වලට බයිට් එකක්, දෙකක් හෝ තුනක් ඇත. බහු බයිට් විධාන යාබද භාෂාවලින් තැබිය යුතුය. විධාන ආකෘතිය ක්රියාත්මක වන මෙහෙයුමේ විශේෂතා මත රඳා පවතී.

විධානයේ පළමු බයිටයේ සිහිවටන ආකාරයෙන් ලියා ඇති මෙහෙයුම් කේතය අඩංගු වේ.

එය විධාන ආකෘතිය සහ එය ක්‍රියාත්මක කිරීමේදී මන්ත්‍රීවරයා විසින් දත්ත මත සිදු කළ යුතු ක්‍රියා සහ ආමන්ත්‍රණ ක්‍රමය තීරණය කරන අතර දත්තවල පිහිටීම පිළිබඳ තොරතුරු ද අඩංගු විය හැකිය.

දෙවන සහ තුන්වන බයිට වල මෙහෙයුම් සිදු කරන දත්ත හෝ දත්ත ඇති ස්ථානය දැක්වෙන ලිපිනයන් අඩංගු විය හැක. ක්රියාවන් සිදු කරන දත්ත ඔපෙරන්ඩ් ලෙස හැඳින්වේ.

රූප සටහන 2 අනුව තනි බයිට් විධාන ආකෘතිය

රූපය 4

එකලස් කිරීමේ භාෂා විධාන වලදී, මෙහෙයුම් කේතය ඉංග්‍රීසි වචන ලිවීමේ කෙටි ආකාරයක් ඇත - සිහිවටන අංකනය. සිහිවටන (ග්‍රීක මතකයෙන් - කටපාඩම් කිරීමේ කලාව) ඔවුන්ගේ ක්‍රියාකාරී අරමුණ අනුව විධාන මතක තබා ගැනීම පහසු කරයි.

ක්‍රියාත්මක කිරීමට පෙර, ප්‍රභව වැඩසටහන Assembler නම් පරිවර්තන වැඩසටහනක් භාවිතයෙන් කේත සංයෝජන භාෂාවට පරිවර්තනය කරනු ලැබේ - යන්ත්‍ර භාෂාව, මෙම ස්වරූපයෙන් එය MP ගේ මතකයේ තබා ඇති අතර පසුව විධානය ක්‍රියාත්මක කිරීමේදී භාවිතා වේ.


ආමන්ත්‍රණ ක්‍රම

සියලුම මෙහෙයුම් කේත (ආදාන සහ ප්‍රතිදානය) කොතැනක හෝ පිහිටා තිබිය යුතුය. ඒවා මන්ත්‍රීවරයාගේ අභ්‍යන්තර ලේඛනවල ස්ථානගත කළ හැකිය (වඩාත් පහසු සහ ඉක්මන් විකල්පය) ඔවුන් තුළ ස්ථානගත කළ හැකිය පද්ධති මතකය(වඩාත් පොදු විකල්පය). අවසාන වශයෙන්, ඒවා I/O උපාංගවල (දුර්ලභම අවස්ථාව) ස්ථානගත කළ හැක. ඔපෙරන්ඩ් වල පිහිටීම උපදෙස් කේතය මගින් තීරණය වේ. පවතිනවා විවිධ ක්රම, උපදෙස් කේතය මඟින් ආදාන ඔපෙරාන්ඩ් ගත යුත්තේ කොතැනටද සහ ප්‍රතිදාන ඔපෙරාන්ඩ් තැබිය යුත්තේ කොතැනටද යන්න තීරණය කළ හැක. මෙම ක්‍රම ආමන්ත්‍රණ ක්‍රම ලෙස හැඳින්වේ.

MP KR580VM80 සඳහා, පහත සඳහන් ආමන්ත්‍රණ ක්‍රම පවතී:

සෘජු;

ලියාපදිංචි කරන්න;

වක්ර;

ගොඩගැසී ඇත.

සෘජු ආමන්ත්‍රණය කිරීම උපකල්පනය කරන්නේ (ආදාන) ඔපෙරාන්ඩ් උපදෙස් කේතයට පසුව වහාම මතකයේ පිහිටා ඇති බවයි. ඔපෙරන්ඩ් සාමාන්‍යයෙන් නියතයක් වන අතර එය කොතැනකට හෝ යැවිය යුතු, යම් දෙයකට එකතු කළ යුතු යනාදී වශයෙන්, දත්ත විධානයේ දෙවන හෝ දෙවන සහ තෙවන බයිට් වල අඩංගු වේ, විධානයේ දෙවන බයිටයේ දත්ත වල අඩු බයිටය පිහිටා ඇත. සහ තුන්වන විධාන බයිටයේ ඉහළ බයිට්.

කෙලින්ම (එනම් නිරපේක්ෂ) ආමන්ත්‍රණය උපකල්පනය කරන්නේ ඔපෙරාන්ඩ් (ආදාන හෝ ප්‍රතිදානය) ලිපිනයෙහි මතකයේ පිහිටා ඇති බවයි, එහි කේතය උපදෙස් කේතයට පසු වහාම වැඩසටහන තුළ පිහිටා ඇත. බයිට් තුනේ විධාන වල භාවිතා වේ.

ලියාපදිංචි කරන්න ආමන්ත්‍රණය කිරීමෙන් ඔපෙරාන්ඩ් (ආදාන හෝ ප්‍රතිදානය) මන්ත්‍රීවරයාගේ අභ්‍යන්තර ලේඛනයේ ඇති බව උපකල්පනය කරයි. තනි බයිට් විධාන වල භාවිතා වේ

වක්ර (ව්‍යංග) ඇමතීමෙන් උපකල්පනය කරන්නේ මන්ත්‍රීවරයාගේ අභ්‍යන්තර ලේඛනයේ ඔපෙරාන්ඩ් නොව එහි ලිපිනය මතකයේ ඇති බවයි.

ගොඩගැසීම addressing උපකල්පනය කරන්නේ විධානයේ ලිපිනයක් නොමැති බවයි. 16-bit SP ලේඛනයේ (ස්ටැක් පොයින්ටර්) අන්තර්ගතය භාවිතා කරමින් මතක සෛල ඇමතීම.

විධාන පද්ධතිය

MP විධාන පද්ධතිය යනු මන්ත්‍රීවරයාට කළ හැකි මූලික ක්‍රියා වල සම්පූර්ණ ලැයිස්තුවකි. මෙම විධාන මගින් පාලනය වන MP විසින් මූලික ගණිතමය සහ තාර්කික මෙහෙයුම්, දත්ත හුවමාරුව, අගයන් දෙකක් සංසන්දනය කිරීම වැනි සරල ක්‍රියා සිදු කරයි. MP KR580VM80 හි විධාන ගණන 78 කි (වෙනස් කිරීම් 244 සැලකිල්ලට ගනිමින්).

පහත දැක්වෙන විධාන කණ්ඩායම් වෙන්කර හඳුනාගත හැකිය:

දත්ත සම්ප්රේෂණය;

අංක ගණිතය;

මොළ ටීසර්;

පැනීමේ විධාන;

ආදාන/ප්‍රතිදානය, පාලනය සහ ස්ටැක් විධාන.


විධාන විස්තර කිරීමේදී සහ වැඩසටහන් රචනා කිරීමේදී භාවිතා කරන සංකේත සහ කෙටි යෙදුම්

සංකේතය අඩු
ADDR 16-බිට් ලිපිනය
දත්ත 8-bit දත්ත
දත්ත 16 16-bit දත්ත
වරාය 8-bit I/O උපාංග ලිපිනය
බයිට් 2 විධානයේ දෙවන බයිටය
බයිට් 3 තුන්වන බයිට් විධානය
R, R1, R2 රෙජිස්ටර් වලින් එකක්: A, B, C, D, E, H, L
ආර්.පී. රෙජිස්ටර් යුගල වලින් එකක්: B - යුගලය BC සඳහන් කරයි; D - DE යුගලයක් නියම කරයි; H - HL යුගලය නියම කරයි
RH යුගලයේ පළමු ලියාපදිංචිය
ආර්.එල්. යුගලයේ දෙවන ලේඛනය
Λ තාර්කික ගුණ කිරීම
වී තාර්කික එකතු කිරීම
එකතු කිරීමේ මොඩියුලය දෙක
එම් HL රෙජිස්ටර් යුගලයේ අන්තර්ගතය සඳහන් කරන මතක කොටුවක්, එනම් M = (HL)



ඉහල