එකලස් කිරීමේ භාෂා විධාන ව්‍යුහයේ අඩංගු වන්නේ: එකලස් කිරීමේ භාෂා මට්ටමේ ක්‍රමලේඛනයේ විධාන ව්‍යුහය. එකලස් කිරීමේ භාෂාවේ දත්ත ආකෘතිය සහ විධාන ව්යුහය

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

දේශන සැලැස්ම

1. මෙහෙයුම් ප්රධාන කණ්ඩායම්.

පෙන්ටියම්.

1. මෙහෙයුම් ප්රධාන කණ්ඩායම්

මයික්‍රොප්‍රොසෙසරයන් පහත සඳහන් ප්‍රධාන මෙහෙයුම් කණ්ඩායම් ක්‍රියාත්මක කරන විධාන මාලාවක් ක්‍රියාත්මක කරයි:

මෙහෙයුම් ඉදිරියට යැවීම

අංක ගණිත මෙහෙයුම්,

තාර්කික මෙහෙයුම්

මාරු මෙහෙයුම්

සංසන්දනය සහ පරීක්ෂණ මෙහෙයුම්

බිට් මෙහෙයුම්

වැඩසටහන් කළමනාකරණ මෙහෙයුම්;

ප්රොසෙසර පාලන මෙහෙයුම්.

2. ප්‍රොසෙසර විධානවල සිහිවටන කේත පෙන්ටියම්

විධාන විස්තර කිරීමේදී, ඒවායේ සිහිවටන තනතුරු (mnemonic codes) සාමාන්‍යයෙන් භාවිතා වේ, ඒවා එකලස් කිරීමේ භාෂාවෙන් ක්‍රමලේඛනය කිරීමේදී විධානය නියම කිරීමට භාවිතා කරයි. Assembler හි විවිධ අනුවාද සඳහා, සමහර විධානවල සිහිවටන කේත වෙනස් විය හැක. උදාහරණයක් ලෙස, subroutine ඇමතීමට විධානය සඳහා, සිහිවටන කේතය භාවිතා වේඅමතන්න හෝ JSR ("පනින්න උප චර්යාව") කෙසේ වෙතත්, ප්‍රධාන මයික්‍රොප්‍රොසෙසර වර්ග සඳහා බොහෝ විධාන සඳහා සිහිවටන කේත සමාන වේ හෝ තරමක් වෙනස් වේ, මන්ද ඒවා ක්‍රියාත්මක වන ක්‍රියාව නිර්වචනය කරන අනුරූප ඉංග්‍රීසි වචනවල කෙටි යෙදුම් වේ. ප්‍රොසෙසර සඳහා භාවිතා කරන ලද සිහිවටන කේත විධානය දෙස බලමුපෙන්ටියම්.

විධාන යොමු කිරීම. මෙම කණ්ඩායමේ ප්රධාන කණ්ඩායම කණ්ඩායමයිMOV , රෙජිස්ටර් දෙකක් අතර හෝ රෙජිස්ටර් සහ මතක සෛලයක් අතර දත්ත හුවමාරුව සපයයි. සමහර මයික්‍රොප්‍රොසෙසර මතක සෛල දෙකක් අතර මාරු කිරීම් මෙන්ම, මතකයෙන් රෙජිස්ටර් කිහිපයක අන්තර්ගතය තොග වශයෙන් මාරු කිරීම ක්‍රියාත්මක කරයි. උදාහරණයක් ලෙස, 68 පවුලේ මයික්රොප්රොසෙසර් Motorola xxx විධානය ක්රියාත්මක කරන්නචලනය කරන්න , එක් මතක සෛලයකින් තවත් මතක සෛලයකට මාරු කිරීම සහ විධානය ලබා දීමMOVEM , එය මතකයට ලියන හෝ නිශ්චිත රෙජිස්ටර් කට්ටලයක (රෙජිස්ටර් 16 දක්වා) අන්තර්ගතය මතකයෙන් පූරණය කරයි. කණ්ඩායමXCHG ප්‍රොසෙසර රෙජිස්ටර් දෙකක හෝ රෙජිස්ටර් සහ මතක සෛලයක අන්තර්ගතය අන්‍යෝන්‍යව හුවමාරු කරයි.

ආදාන විධාන තුල සහ ප්රතිදානය පිටතට ප්‍රොසෙසර ලේඛනයකින් දත්ත බාහිර උපාංගයකට යැවීම හෝ බාහිර උපාංගයකින් ලේඛනයකට දත්ත ලබා ගැනීම ක්‍රියාත්මක කරන්න. මෙම විධාන මඟින් දත්ත මාරු කරන අතුරුමුහුණත් උපාංගයේ (ආදාන/ප්‍රතිදාන වරාය) අංකය සඳහන් කරයි. බොහෝ මයික්‍රොප්‍රොසෙසර වලට බාහිර උපාංග වෙත ප්‍රවේශ වීම සඳහා විශේෂ විධාන නොමැති බව සලකන්න. මෙම අවස්ථාවේදී, පද්ධතියේ දත්ත ආදානය සහ ප්රතිදානය සිදු කරනු ලබන්නේ විධානය භාවිතා කරමිනිMOV , අවශ්ය අතුරු මුහුණත් උපාංගයේ ලිපිනය සඳහන් කරයි. මේ අනුව, බාහිර උපාංගය මතක සෛලයක් ලෙස ආමන්ත්‍රණය කර ඇති අතර, පද්ධතියට සම්බන්ධ අතුරුමුහුණත් උපාංග (වරාය) වල ලිපින පිහිටා ඇති ලිපින අවකාශයේ යම් කොටසක් වෙන් කරනු ලැබේ.

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

ගුණ කිරීමේ සහ බෙදීමේ මෙහෙයුම් අත්සන් කළ අංක මත සිදු කළ හැක (විධානමම MUL, මම DIV ) හෝ අත්සන් නොකළ (විධාන MUL, DIV ) ඔපෙරාන්ඩ් වලින් එකක් සෑම විටම ලේඛනයක පිහිටා ඇත, දෙවැන්න ලේඛනයක, මතක සෛලයක හෝ ක්ෂණික ක්‍රියාවක් විය හැකිය. මෙහෙයුමේ ප්රතිඵලය ලේඛනයේ පිහිටා ඇත. ගුණ කරන විට (විධානMUL , IMUL ) ප්‍රතිඵලය ද්විත්ව බිටු වේ, ඒ සඳහා රෙජිස්ටර් දෙකක් භාවිතා වේ. බෙදීමේදී (විධානDIV , IDIV ) ලාභාංශයක් ලෙස, ද්විත්ව-බිට් ඔපෙරන්ඩ් භාවිතා කරනු ලැබේ, රෙජිස්ටර් දෙකක තබා, එහි ප්‍රතිඵලයක් ලෙස, කෝටන්ට් සහ ඉතිරිය රෙජිස්ටර් දෙකකට ලියා ඇත.

තාර්කික මෙහෙයුම් විධාන . සියලුම මයික්‍රොප්‍රොසෙසරයන් පාහේ තාර්කික මෙහෙයුම් සිදු කරයි AND, OR, Exclusive OR, ඒවා විධාන භාවිතා කරමින් එකම මෙහෙයුම් බිටු මත සිදු කෙරේ. සහ, හෝ, x හෝ . රෙජිස්ටර් දෙකක අන්තර්ගතය, රෙජිස්ටර් සහ මතක ස්ථානයක් හෝ ක්ෂණික ක්‍රියාවක් භාවිතයෙන් මෙහෙයුම් සිදු කෙරේ. කණ්ඩායම නැත ඔපෙරන්ඩ් එකේ එක් එක් බිටු වල අගය ප්‍රතිලෝම කරයි.

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

සංසන්දනය සහ පරීක්ෂණ විධාන . Operands සංසන්දනය කිරීම සාමාන්‍යයෙන් විධානය භාවිතයෙන් සිදු කෙරේCMP , එය ඔපෙරන්ඩ් අඩු කර විශේෂාංග අගයන් සකසයි N, Z, V, Cලබාගත් ප්රතිඵලය අනුව තත්ව ලේඛනයේ. මෙම අවස්ථාවෙහිදී, අඩුකිරීමේ ප්රතිඵලය සුරැකෙන්නේ නැත, සහ ඔපෙරන්ඩ් වල අගයන් වෙනස් නොවේ. ලබාගත් විශේෂාංග අගයන් පසුව විශ්ලේෂණය කිරීමෙන් අපට සාපේක්ෂ අගය තීරණය කිරීමට ඉඩ ලබා දේ (>,<, =) операндов со знаком или без знака. Использование различных способов адресации позволяет производит сравнение содержимого двух регистров, регистра и ячейки памяти, непосредственно заданного операнда с содержимым регистра или ячейки памяти.

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

බිට් මෙහෙයුම් උපදෙස් . මෙම විධානයන් ගුණාංගයේ අගය සකසයිසීපරීක්ෂා කරන ලද බිටු අගයට අනුකූලව තත්ව ලේඛනයේbn ආමන්ත්‍රණය කරන ලද ක්‍රියාවෙහි. සමහර මයික්‍රොප්‍රොසෙසරවල, බිට් පරීක්‍ෂණයේ ප්‍රතිඵලය මත පදනම්ව, ගුණාංගය සකසා ඇතZ. පරීක්ෂණ බිට් අංකයnවිධානයේ දක්වා ඇති ලේඛනයේ අන්තර්ගතය මගින් හෝ ක්ෂණික ක්‍රියාව මගින් නිශ්චිතව දක්වා ඇත.

මෙම සමූහයේ විධාන මඟින් පරීක්‍ෂා කරන බිට් වෙනස් කිරීම සඳහා විවිධ විකල්ප ක්‍රියාත්මක කරයි බීටී මෙම බිට් එකේ අගය නොවෙනස්ව තබයි.Command බී ටී එස් පශ්චාත් පරීක්ෂණය අගය සකසයි bn=1, සහ විධානය බී ටී සී - අර්ථය bn=0.කණ්ඩායම බී ටී සී එය පරීක්ෂා කිරීමෙන් පසු bit bn අගය ප්‍රතිලෝම කරයි.

වැඩසටහන් කළමනාකරණ මෙහෙයුම්. වැඩසටහන පාලනය කිරීම සඳහා, විධාන විශාල සංඛ්යාවක් භාවිතා කරනු ලැබේ, ඒවා අතර:

- කොන්දේසි විරහිත පාලන හුවමාරු විධාන;

- කොන්දේසි පැනීමේ විධාන;

- වැඩසටහන් චක්ර සංවිධානය කිරීම සඳහා කණ්ඩායම්;

- බාධා විධාන;

- ගුණාංග වෙනස් කිරීම සඳහා විධාන.

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

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

විශේෂාංග පාලන විධාන ලිවීම සපයයි - විශේෂාංග ගබඩා කර ඇති තත්ව ලේඛනයේ අන්තර්ගතය කියවීම මෙන්ම තනි විශේෂාංගවල අගයන් වෙනස් කිරීම. උදාහරණයක් ලෙස, Pentium ප්‍රොසෙසරය විධාන ක්‍රියාත්මක කරයි LAHF සහ SAHF , තත්ව ලේඛනයෙන් සලකුණු අඩංගු අඩු බයිටය පූරණය කරන EFLAGලේඛනයේ අඩු බයිටයකට EAXසහ අඩු බයිටය පෑඩ් කිරීම EFLAGSරෙජිස්ටර් එකෙන් ඊ ඒx.. කණ්ඩායම් CLC, STC CF=0, CF=1, සහ විධානය මාරු කිරීමේ ලකුණෙහි අගයන් සැකසීම සිදු කරන්න CMCමෙම ගුණාංගයේ අගය ප්‍රතිලෝම වීමට හේතු වේ.කොන්දේසි සහිත සංක්‍රාන්ති වලදී ක්‍රමලේඛ ක්‍රියාත්මක කිරීමේ ප්‍රවාහය ගුණාංග මගින් තීරණය කරන බැවින්, සාමාන්‍යයෙන් වැඩසටහන පාලනය කිරීම සඳහා ගුණාංග වෙනස් කිරීමේ විධාන භාවිතා කරයි.

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

විශේෂ කණ්ඩායම් CLI, STI බාධා කිරීම් ඉල්ලීම් සඳහා සේවා සැපයීම තහනම් කිරීම සහ සක්‍රීය කිරීම. ප්රොසෙසර වලපෙන්ටියම් මේ සඳහා පාලන බිට් (කොඩිය) භාවිතා වේනම්ලේඛනයේ EFLAGS.

බොහෝ නවීන මයික්‍රොප්‍රොසෙසර හඳුනාගැනීමේ විධානයක් නිකුත් කරන අතර එමඟින් පරිශීලකයාට හෝ වෙනත් උපාංග ලබා දී ඇති පද්ධතියක භාවිතා කරන ප්‍රොසෙසර වර්ගය පිළිබඳ තොරතුරු ලබා ගැනීමට ඉඩ සලසයි. ප්රොසෙසර වල Pentuimමේ සඳහා වන විධානය වේ CPUID , එම කාලය තුළ ප්‍රොසෙසරය පිළිබඳ අවශ්‍ය දත්ත රෙජිස්ටර් වලට ඇතුල් වේ EAXEBXECXEDXපසුව පරිශීලකයාට හෝ මෙහෙයුම් පද්ධතියට කියවිය හැක.

ප්‍රොසෙසරය විසින් ක්‍රියාත්මක කරන ලද මෙහෙයුම් මාතයන් සහ සකසන ලද දත්ත වර්ග මත පදනම්ව, ක්‍රියාත්මක කරන ලද විධාන කට්ටලය සැලකිය යුතු ලෙස පුළුල් කළ හැකිය.

සමහර ප්‍රොසෙසර ද්විමය-දශම සංඛ්‍යා සමඟ අංක ගණිත මෙහෙයුම් සිදු කරයි හෝ එවැනි සංඛ්‍යා සැකසීමේදී ප්‍රතිඵලය නිවැරදි කිරීමට විශේෂ උපදෙස් ක්‍රියාත්මක කරයි. බොහෝ ඉහළ කාර්ය සාධන ප්‍රොසෙසර ඇතුළත් වේ FPU - අංක සැකසුම් ඒකකය c "ඉපිලුම් ලක්ෂය".

නවීන ප්‍රොසෙසර ගණනාවක් පූර්ණ සංඛ්‍යා හෝ සංඛ්‍යා කිහිපයක කණ්ඩායම් සැකසීම ක්‍රියාත්මක කරයි c මූලධර්මය අනුව එක් විධානයක් භාවිතා කරමින් "floating point" SIMD ("තනි උපදෙස් - බහු දත්ත" ”) - “එක් විධානයක් - දත්ත ගොඩක්.” වීඩියෝ සහ ශ්‍රව්‍ය දත්ත සමඟ වැඩ කරන විට බහු ඔපෙරන්ඩ් වල මෙහෙයුම් එකවර ක්‍රියාත්මක කිරීම ප්‍රොසෙසරයේ ක්‍රියාකාරිත්වය සැලකිය යුතු ලෙස වැඩි දියුණු කරයි. එවැනි මෙහෙයුම් රූප, ශ්රව්ය සංඥා සහ අනෙකුත් යෙදුම් සැකසීම සඳහා බහුලව භාවිතා වේ. මෙම මෙහෙයුම් සිදු කිරීම සඳහා, විවිධ වර්ගයේ ප්‍රොසෙසර වල අනුරූප උපදෙස් මාලාව ක්‍රියාත්මක කරන ප්‍රොසෙසර තුළට විශේෂ කොටස් හඳුන්වා දී ඇත.පෙන්ටියම්, ඇත්ලෝන්) නම ලැබුණාMMX (“ මිල්ටි- මාධ්ය දිගුව ”) - බහුමාධ්‍ය දිගුව,SSE("ප්‍රවාහ SIMD දිගුව") - ප්‍රවාහ SIMD - දිගුව, “3 ඩීදිගු කිරීම- ත්රිමාණ ප්රසාරණය.

සමාගමේ ප්‍රොසෙසරවල ලාක්ෂණික ලක්ෂණයකිඉන්ටෙල් , 80286 ආකෘතියෙන් පටන් ගෙන, මතකයට ප්‍රවේශ වීමේදී ප්‍රමුඛතා පාලනය වේ, එය ප්‍රොසෙසරය ආරක්ෂිත අථත්‍ය ලිපින මාදිලියේ ක්‍රියාත්මක වන විට සපයනු ලැබේ - “ආරක්ෂිත මාදිලිය ” (ආරක්ෂිත මාදිලිය). මෙම මාදිලිය ක්‍රියාත්මක කිරීම සඳහා, සම්මත කරන ලද ප්‍රමුඛතා ප්‍රවේශ ඇල්ගොරිතමයට අනුකූලව මතක ආරක්ෂණය සංවිධානය කිරීමට සේවය කරන විශේෂ විධාන කණ්ඩායම් භාවිතා කරනු ලැබේ.

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

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

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

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

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

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

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

මතක ආකෘති කුඩා ආකෘතිය ක්‍රියා කරන්නේ 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 ඇතුළත් විධානය භාවිතා කිරීම සුදුසුය.

එකලස් භාෂාවෙන් ව්යුහයන්

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

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

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

එකලස් කිරීමේ භාෂාවේ භාවිතය වැඩි දියුණු කිරීම සඳහා, මෙම දත්ත වර්ගය ද එයට හඳුන්වා දෙන ලදී.

A-priory ව්යුහය යනු විවිධ වර්ගවල ස්ථාවර මූලද්‍රව්‍ය ගණනකින් සමන්විත දත්ත වර්ගයකි.

වැඩසටහනක ව්යුහයන් භාවිතා කිරීම සඳහා, ඔබ පියවර තුනක් සිදු කළ යුතුය:

    සකසන්න ව්යුහය සැකිල්ල .

    සාරාංශයක් ලෙස, මෙයින් අදහස් කරන්නේ නව දත්ත වර්ගයක් නිර්වචනය කිරීමයි, එය පසුව මෙම වර්ගයේ විචල්‍යයන් අර්ථ දැක්වීමට භාවිතා කළ හැකිය.

    නිර්වචනය කරන්න ව්යුහය උදාහරණය .

    මෙම අදියරේදී නිශ්චිත විචල්‍යයක් පූර්ව නිශ්චිත (සැකිල්ලක් භාවිතා කරමින්) ව්‍යුහයක් සමඟ ආරම්භ කිරීම ඇතුළත් වේ.

    සංවිධානය කරනවා ව්යුහය මූලද්රව්ය වෙත ප්රවේශ වීම .

අතර වෙනස කුමක්දැයි ඔබ මුල සිටම තේරුම් ගැනීම ඉතා වැදගත් වේ විස්තරවැඩසටහනේ ව්යුහයන් සහ එහි අර්ථ දැක්වීම.

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

මෙම අච්චුව පරිවර්තකයාට ක්ෂේත්‍රවල පිහිටීම සහ ඒවායේ පෙරනිමි අගය පිළිබඳ තොරතුරු ලෙස පමණක් සැලකිය හැකිය.

නිර්වචනය කරන්න ව්‍යුහය යනු පරිවර්තකයාට මතකය වෙන් කිරීමට සහ මෙම මතක ප්‍රදේශයට සංකේතාත්මක නමක් පැවරීමට උපදෙස් දීමයි.

ව්‍යුහයක් වැඩසටහනක විස්තර කළ හැක්කේ එක් වරක් පමණි, නමුත් ඕනෑම වාර ගණනක් අර්ථ දැක්විය හැක.

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

ව්‍යුහ සැකිලි විස්තරයට පහත සින්ටැක්ස් ඇත:

ව්යුහය_නම STRUC

ව්යුහය_නම ENDS

මෙතන දත්ත විස්තර විධාන අනුපිළිවෙලකි db, dw, dd, dqසහ dt.

ඔවුන්ගේ ඔපෙරන්ඩ් ක්ෂේත්රවල විශාලත්වය සහ, අවශ්ය නම්, ආරම්භක අගයන් තීරණය කරයි. ව්‍යුහය නිර්වචනය කිරීමේදී මෙම අගයන් අනුරූප ක්ෂේත්‍ර ආරම්භ කරනු ඇත.

අච්චුව විස්තර කිරීමේදී අප දැනටමත් සටහන් කර ඇති පරිදි, මෙය පරිවර්තකයා සඳහා තොරතුරු පමණක් බැවින් මතකය වෙන් නොකෙරේ.

ස්ථානයවැඩසටහනේ ඇති අච්චුව අත්තනෝමතික විය හැකි නමුත්, එක්-පාස් පරිවර්තකයාගේ තර්කනය අනුගමනය කරමින්, එය ලබා දී ඇති ව්‍යුහයේ වර්ගය සමඟ විචල්‍යය අර්ථ දක්වා ඇති ස්ථානයට පෙර පිහිටා තිබිය යුතුය. එනම්, දත්ත කොටසක කිසියම් ව්‍යුහයක වර්ගයක් සහිත විචල්‍යයක් විස්තර කිරීමේදී, එහි අච්චුව දත්ත කොටසේ ආරම්භයේ හෝ ඊට පෙර තැබිය යුතුය.

කිසියම් දෙපාර්තමේන්තුවක සේවකයින් පිළිබඳ දත්ත සමුදායක් ආකෘතිකරණය කිරීමේ උදාහරණය භාවිතා කරමින් ව්යුහයන් සමඟ වැඩ කිරීම සලකා බලමු.

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

පහත සැකිල්ල සමඟ මෙම දත්ත සමුදායේ වාර්තා ව්‍යුහය නිර්වචනය කරමු:

ව්යුහය වර්ගය සමඟ දත්ත නිර්වචනය කිරීම

වැඩසටහනක අච්චුවක් භාවිතයෙන් විස්තර කර ඇති ව්‍යුහයක් භාවිතා කිරීමට, ඔබ මෙම ව්‍යුහයේ වර්ගය සමඟ විචල්‍යයක් අර්ථ දැක්විය යුතුය. මේ සඳහා, පහත සඳහන් වාක්‍ය ඛණ්ඩ ඉදිකිරීම භාවිතා කරයි:

[විචල්‍ය නාමය] ව්‍යුහය_නම

    විචල්ය නාමය- මෙම ව්‍යුහයේ ආකාරයේ විචල්‍යයක හඳුනාගැනීම.

    විචල්‍ය නාමයක් සඳහන් කිරීම වෛකල්පිතය. ඔබ එය සඳහන් නොකරන්නේ නම්, සියලු දිග වල එකතුවට සමාන ප්‍රමාණයේ මතක ප්‍රදේශයක් ව්යුහය මූලද්රව්ය.

    අගයන් ලැයිස්තුව- කොමා වලින් වෙන් කරන ලද කෝණ වරහන් තුළ කොටා ඇති ව්‍යුහ මූලද්‍රව්‍යවල ආරම්භක අගයන් ලැයිස්තුවක්.

    ඔහුගේ පැවරුම ද වෛකල්පිත ය.

    ලැයිස්තුව සම්පූර්ණයෙන් නිශ්චිතව දක්වා නොමැති නම්, මෙම විචල්‍යය සඳහා ව්‍යුහයේ සියලුම ක්ෂේත්‍ර නිශ්චිතව දක්වා ඇත්නම්, අච්චුවේ අගයන් සමඟ ආරම්භ කරනු ලැබේ.

    තනි ක්ෂේත්‍ර ආරම්භ කළ හැකි නමුත්, මෙම අවස්ථාවේදී නැතිවූ ක්ෂේත්‍ර කොමාවෙන් වෙන් කළ යුතුය. ව්‍යුහ සැකිල්ලේ ඇති අගයන් සමඟ අතහැර දැමූ ක්ෂේත්‍ර ආරම්භ කෙරේ. දී ඇති ව්‍යුහයක වර්ගය සමඟ නව විචල්‍යයක් නිර්වචනය කිරීමේදී, එහි අච්චුවේ ඇති සියලුම ක්ෂේත්‍ර අගයන් සමඟ අපි එකඟ වන්නේ නම් (එනම්, පෙරනිමියෙන් දක්වා ඇති ඒවා), එවිට අපට කෝණ වරහන් ලිවිය යුතුය.

    උදා: ජයග්රාහී කම්කරුවා.

උදාහරණයක් ලෙස, ඉහත විස්තර කර ඇති ව්‍යුහයේ වර්ගය සමඟ විචල්‍ය කිහිපයක් නිර්වචනය කරමු.

ව්යුහය සමඟ වැඩ කිරීම සඳහා ක්රම

ඕනෑම ක්‍රමලේඛන භාෂාවකට ව්‍යුහගත වර්ගයක් හඳුන්වා දීමේ අදහස වන්නේ විවිධ වර්ගවල විචල්‍යයන් එක් වස්තුවකට ඒකාබද්ධ කිරීමයි.

ව්‍යුහයේ නිශ්චිත අවස්ථාවක් තුළ මෙම විචල්‍යයන් වෙත ප්‍රවේශ වීමේ මාධ්‍යයක් භාෂාවට තිබිය යුතුය. විධානයක කිසියම් ව්‍යුහයක ක්ෂේත්‍රයක් වෙත යොමු කිරීම සඳහා, විශේෂ ක්‍රියාකරුවෙකු භාවිතා කරයි - සංකේතය ". "(තිත්). එය පහත සින්ටැක්ස් හි භාවිතා වේ:

    ලිපිනය_ප්‍රකාශනය- පහත දක්වා ඇති වාක්‍ය ඛණ්ඩ රීතිවලට අනුකූලව යම් ව්‍යුහාත්මක වර්ගයක හෝ වරහන් තුළ ප්‍රකාශනයක විචල්‍යයක් හඳුනාගැනීම (රූපය 1);

    ව්යුහය_ක්ෂේත්ර_නම- ව්‍යුහ සැකිල්ලෙන් ක්ෂේත්‍ර නාමය.

    මෙය, ඇත්ත වශයෙන්ම, ලිපිනයක් හෝ ඒ වෙනුවට, ව්යුහයේ ආරම්භයේ සිට ක්ෂේත්රයේ ඕෆ්සෙට් වේ.

එබැවින් ක්රියාකරු " . "(dot) ප්රකාශනය ඇගයීමට ලක් කරයි

සහල්. 5. ව්‍යුහ ක්ෂේත්‍ර ප්‍රවේශ ක්‍රියාකරු තුළ ලිපින ප්‍රකාශනයක වාක්‍ය ඛණ්ඩය

අප විසින් නිර්වචනය කර ඇති ව්යුහයේ උදාහරණය භාවිතා කරමින් අපි නිරූපණය කරමු. සේවකයා ව්යුහයන් සමඟ වැඩ කිරීම සඳහා සමහර තාක්ෂණික ක්රම.

උදාහරණයක් ලෙස, උපුටා ගන්න පොරවවයස සමඟ ක්ෂේත්‍ර අගයන්. මෙම චරිත ක්ෂේත්‍රයේ අන්තර්ගතය ලේඛනයේ තැබීමෙන් පසු වැඩ කරන පුද්ගලයෙකුගේ වයස අවුරුදු 99 ට වඩා වැඩි වනු ඇතැයි සිතිය නොහැක. පොරවඑය විධානය සමඟ ද්විමය නිරූපණයට පරිවර්තනය කිරීම පහසු වනු ඇත aad.

දත්ත ගබඩා කිරීමේ මූලධර්මය නිසා ප්රවේශම් වන්න "අඩු ලිපිනයේ අඩු බයිට්"වයසේ ඉහළම ඉලක්කම් තැන්පත් කරනු ලැබේ අල්, සහ බාලයා - තුළ අහ්.

ගැලපීම් කිරීමට, විධානය භාවිතා කරන්න xchg al,ah:

mov ax, word ptr sotr1.age ;in al age sotr1

හෝ ඔබට එය මේ ආකාරයට කළ හැකිය:

ව්යුහයන් මාලාවක් සමඟ තවදුරටත් වැඩ කිරීම ඒක මාන අරාවක් මෙන් ම සිදු කරනු ලැබේ. මෙහිදී ප්රශ්න කිහිපයක් පැන නගී:

ප්‍රමාණයෙන් කුමක් කළ යුතුද සහ අරා මූලද්‍රව්‍ය සුචිගත කිරීම සංවිධානය කරන්නේ කෙසේද?

වැඩසටහනේ නිර්වචනය කර ඇති අනෙකුත් හඳුනාගැනීම් වලට සමානව, පරිවර්තකයා ව්‍යුහයේ නමට සහ ව්‍යුහයේ වර්ගය සමඟ විචල්‍යයේ නමට වර්ග ගුණාංගයක් පවරයි. මෙම ගුණාංගයේ අගය මෙම ව්‍යුහයේ ක්ෂේත්‍ර විසින් අල්ලාගෙන සිටින බයිට් වල ප්‍රමාණයයි. ක්රියාකරු භාවිතයෙන් ඔබට මෙම අගය ලබා ගත හැක වර්ගය.

ව්‍යුහයේ ප්‍රමාණය දැනගත් පසු, ව්‍යුහ සමූහයක් තුළ සුචිගත කිරීම සංවිධානය කිරීම විශේෂයෙන් අපහසු නොවේ.

උදා:

ක්ෂේත්‍රයක් එක් ව්‍යුහයකින් තවත් ව්‍යුහයක අනුරූප ක්ෂේත්‍රයට පිටපත් කරන්නේ කෙසේද? නැතහොත් සම්පූර්ණ ව්යුහය පිටපත් කරන්නේ කෙසේද? අපි ක්ෂේත්‍රය පිටපත් කරමු නම්ක්ෂේත්රයේ තුන්වන සේවකයා නම්පස්වන සේවකයා:

mas_sotr සේවක 10 dup()

mov bx, offset mas_sotr

mov si,(වර්ගය සේවකයා)*2 ;si=77*2

mov di,(වර්ගය සේවකයා)*4 ;si=77*4

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

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

ආහාර පිළියෙළ කිරීමේදී හෝ නිෂ්පාදන තැබීමේදී (වැඩසටහන් දත්ත) මේසයේ වැඩ කරන ප්‍රදේශය (RAM) හැකිතාක් කාර්යක්ෂමව භාවිතා කිරීමට “ගෘහ සේවිකාවගේ” ආශාව මගින් භාෂාවේ පහත දත්ත වර්ග දෙකක් තිබීම පැහැදිලි කළ හැකිය. )

විධාන අරමුණ අනුව වෙන්කර හඳුනාගත හැකිය (IBM PC එකලස් කිරීමේ විධානවල සිහිවටන මෙහෙයුම් කේත සඳහා උදාහරණ වරහන් තුළ දක්වා ඇත):

l ගණිතමය මෙහෙයුම් සිදු කිරීම (ADD සහ ADC - රැගෙන යාම සමඟ එකතු කිරීම සහ එකතු කිරීම, SUB සහ SBB - ණය ගැනීම සමඟ අඩු කිරීම සහ අඩු කිරීම, MUL සහ IMUL - අත්සන් නොකළ සහ අත්සන් කළ ගුණ කිරීම, DIV සහ IDIV - අත්සන් නොකළ සහ අත්සන් කළ බෙදීම, CMP - සැසඳීම් ආදිය);

l තාර්කික මෙහෙයුම් සිදු කිරීම (OR, AND, NOT, XOR, TEST, ආදිය);

l දත්ත හුවමාරුව (MOV - ඉදිරියට, XCHG - හුවමාරුව, IN - මයික්රොප්රොසෙසරයට ඇතුල් කරන්න, OUT - මයික්රොප්රොසෙසරයෙන් ප්රතිදානය, ආදිය);

l පාලනය මාරු කිරීම (වැඩසටහන් ශාඛා: JMP - කොන්දේසි විරහිත පැනීම, CALL - ක්රියා පටිපාටිය ඇමතුම, RET - ක්රියා පටිපාටියෙන් ආපසු යාම, J* - කොන්දේසි සහිත පැනීම, LOOP - ලූප් පාලනය, ආදිය);

l සැකසුම් අක්ෂර නූල් (MOVS - මාරු කිරීම්, CMPS - සැසඳීම්, LODS - loads, SCAS - ස්කෑන්. මෙම විධානයන් සාමාන්‍යයෙන් උපසර්ගය (පුනරාවර්තන modifier) ​​REP සමඟ භාවිතා වේ;

l වැඩසටහන් බාධා කිරීම් (INT - මෘදුකාංග බාධා කිරීම්, INTO - පිටාර ගැලීම මත කොන්දේසි සහිත බාධා කිරීම්, IRET - බාධාවෙන් ආපසු);

l මයික්‍රොප්‍රොසෙසර් පාලනය (ST* සහ CL* - කොඩි සැකසීම සහ නැවත සැකසීම, HLT - නැවැත්වීම, WAIT - බලා සිටීම, NOP - idling, ආදිය).

සමග සම්පූර්ණ ලැයිස්තුවඑකලස් කිරීමේ විධාන වැඩ වලදී සොයාගත හැකිය.

දත්ත හුවමාරු විධාන

l MOV dst, src - දත්ත හුවමාරුව (චලනය - src සිට dst වෙත යවන්න).

මාරු කිරීම්: එක් බයිටයක් (src සහ dst byte ආකෘතියෙන් තිබේ නම්) හෝ එක් වචනයක් (src සහ dst වචන ආකෘතියේ නම්) රෙජිස්ටර් අතර හෝ රෙජිස්ටර් සහ මතකය අතර, සහ රෙජිස්ටර් හෝ මතකය වෙත සෘජු අගයක් ලියයි.

dst සහ src ඔපෙරන්ඩ් එකම ආකෘතියක් තිබිය යුතුය - byte හෝ word.

Src පහත ​​ආකාරයේ විය හැක: r (ලියාපදිංචිය) - ලියාපදිංචිය, m (මතකය) - මතකය, i (සම්බාධනය) - ක්ෂණික අගය. Dst වර්ගය r, m විය හැක. ඔබට පහත operands එක විධානයකින් භාවිතා කල නොහැක: rsegm එකට i සමග; m වර්ගයේ ඔපෙරන්ඩ් දෙකක් සහ rsegm වර්ගයේ ඔපෙරන්ඩ් දෙකක්). i operand සරල ප්‍රකාශනයක් ද විය හැකිය:

mov AX, (152 + 101B) / 15

ප්රකාශන ඇගයීම සිදු කරනු ලබන්නේ පරිවර්තනය අතරතුර පමණි. කොඩි වෙනස් නොකරයි.

l PUSH src - වචනයක් තොගය මතට තල්ලු කිරීම (තල්ලු - හරහා තල්ලු කරන්න; src වෙතින් තොගය මතට තල්ලු කරන්න). src හි අන්තර්ගතය - ඕනෑම 16-බිට් ලේඛනයක් (කොටස් ලේඛනය ඇතුළුව) හෝ 16-බිට් වචනයක් අඩංගු මතක සෛල දෙකක් - තොගයේ ඉහළට තබයි. කොඩි වෙනස් නොවේ;

l POP dst - අට්ටියෙන් වචනයක් පොප් කරන්න (pop - pop; තොගයේ සිට dst දක්වා ගණන් කරන්න). අට්ටියේ ඉහලින් වචනයක් ඉවත් කර එය dst - ඕනෑම 16-bit ලේඛනයක් (කොටස් ලේඛනය ඇතුළුව) හෝ මතක සෛල දෙකක තබයි. කොඩි වෙනස් නොවේ.

යන්ත්‍ර උපදෙස් මට්ටමේ ක්‍රමලේඛනය යනු වැඩසටහන් ලිවිය හැකි අවම මට්ටමයි. පරිගණක දෘඪාංග වෙත උපදෙස් නිකුත් කිරීම මගින් අවශ්ය ක්රියාවන් ක්රියාත්මක කිරීම සඳහා යන්ත්ර උපදෙස් පද්ධතිය ප්රමාණවත් විය යුතුය.

සෑම යන්ත්‍ර විධානයක්ම කොටස් දෙකකින් සමන්විත වේ:

  • මෙහෙයුම් - "කළ යුතු දේ" තීරණය කිරීම;
  • operand - සැකසුම් වස්තු නිර්වචනය කිරීම, "කළ යුතු දේ."

එකලස් කිරීමේ භාෂාවෙන් ලියා ඇති මයික්‍රොප්‍රොසෙසර් යන්ත්‍ර විධානය පහත සඳහන් වාක්‍ය ඛණ්ඩය සහිත එක් පේළියකි:

විධාන / විධාන ලේබලය operand(s) ;comments

මෙම අවස්ථාවෙහිදී, රේඛාවේ අවශ්ය ක්ෂේත්රය විධානයක් හෝ විධානයක් වේ.

ලේබලය, විධාන/විධානය, සහ මෙහෙයුම් (ඇත්නම්) අවම වශයෙන් එක් ඉඩක් හෝ ටැබ් අක්ෂරයකින් වෙන් කරනු ලැබේ.

විධානයක් හෝ විධානයක් ඊළඟ පේළියේ දිගටම කරගෙන යාමට අවශ්‍ය නම්, backslash අක්ෂරය භාවිතා වේ: \.

පෙරනිමියෙන්, එකලස් කිරීමේ භාෂාව විධාන හෝ විධාන ලිවීමේදී ලොකු අකුරු සහ කුඩා අකුරු අතර වෙනස හඳුනා නොගනී.

කේත රේඛා උදාහරණ:

db 1 ගණන් කරන්න ;නම, විධානය, එක ක්‍රියාවක්
mov eax,0 ;විධානය, මෙහෙයුම් දෙකක්
cbw; කණ්ඩායම

ටැග්

ලේබලය එකලස් කිරීමේ භාෂාවෙන් පහත සංකේත අඩංගු විය හැක:

  • ලතින් හෝඩියේ සියලුම අකුරු;
  • 0 සිට 9 දක්වා සංඛ්යා;
  • විශේෂ අක්ෂර: _, @, $, ?.

ලේබලයක පළමු අක්ෂරය ලෙස කාලපරිච්ඡේදයක් භාවිතා කළ හැකි නමුත් සමහර සම්පාදකයින් මෙම අක්ෂරය භාවිතා කිරීම නිර්දේශ නොකරයි. වෙන් කර ඇති එකලස් කිරීමේ නම් (විධාන, ක්‍රියාකරුවන්, විධාන නම්) ලේබල ලෙස භාවිතා කළ නොහැක.

ලේබලයේ පළමු අක්ෂරය අකුරක් හෝ විශේෂ අක්ෂරයක් විය යුතුය (නමුත් අංකයක් නොවේ). උපරිම ලේබල දිග අක්ෂර 31 කි. එකලස් කිරීමේ විධානයක් අඩංගු නොවන රේඛාවක ලියා ඇති සියලුම ලේබල මහා බඩවැලකින් අවසන් විය යුතුය: .

කණ්ඩායම්

කණ්ඩායම පරිවර්තකයාට මයික්‍රොප්‍රොසෙසරය කළ යුතු ක්‍රියාව කියයි. දත්ත කොටසක, විධානයක් (හෝ විධානයක්) ක්ෂේත්‍රයක්, වැඩ ඉඩක් හෝ නියතයක් නිර්වචනය කරයි. කේත කොටසක, විධානයක් චලනය (mov) හෝ එකතු කිරීම (එකතු කිරීම) වැනි ක්‍රියාවක් නියම කරයි.

විධාන

එකලස් කිරීම සහ ලැයිස්තුගත කිරීමේ ක්රියාවලිය පාලනය කිරීමට ඔබට ඉඩ සලසන ක්රියාකරුවන් ගණනාවක් ඇත. මෙම ක්රියාකරුවන් කැඳවනු ලැබේ නියෝග . ඒවා ක්‍රියා කරන්නේ වැඩසටහන එකලස් කිරීමේ ක්‍රියාවලියේදී පමණක් වන අතර, විධාන මෙන් නොව, යන්ත්‍ර කේතය උත්පාදනය නොකරයි.

මෙහෙයුම්

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

  • ඔපෙරන්ඩ් රෙට් නැත ;ආපසු
  • One operand inc ecx ; ecx වැඩි කරන්න
  • ඔපෙරන්ඩ් දෙකක් eax,12 එකතු කරයි; eax වෙත 12 එකතු කරන්න

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

ක්‍රියාදාමයන් විය හැක

  • හඳුනාගැනීම්;
  • තනි හෝ ද්විත්ව උද්ධෘත වලින් කොටා ඇති අක්ෂර මාලාව;
  • ද්විමය, අෂ්ටක, දශම හෝ ෂඩ් දශම සංඛ්‍යා පද්ධතිවල පූර්ණ සංඛ්‍යා.
හඳුනාගැනීම්

හඳුනාගැනීම් - මෙහෙයුම් කේත, විචල්‍ය නම් සහ ලේබල් නම් වැනි වැඩසටහන් වස්තු දැක්වීමට භාවිතා කරන වලංගු අක්ෂර අනුපිළිවෙල.

හඳුනාගැනීම් පටිගත කිරීම සඳහා නීති.

  • හැඳුනුම්කාරකය අක්ෂර එකකින් හෝ වැඩි ගණනකින් සමන්විත විය හැක.
  • සංකේත ලෙස ඔබට ලතින් හෝඩියේ අකුරු, අංක සහ සමහර විශේෂ අක්ෂර භාවිතා කළ හැකිය: _, ?, $, @.
  • හඳුනාගැනීමක් ඉලක්කම් අක්ෂරයකින් ආරම්භ කළ නොහැක.
  • හඳුනාගැනීමේ දිග අක්ෂර 255 දක්වා විය හැක.
  • පරිවර්තකයා හඳුනාගැනීමේ පළමු අක්ෂර 32 පිළිගන්නා අතර ඉතිරිය නොසලකා හරියි.
අදහස්

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

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

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

එකලස් කිරීමේ භාෂාවෙන් "කිසිවක් නොකරන්න" වැඩසටහනක උදාහරණයක්:

686P
.ආදර්ශ පැතලි, STDCALL
.දත්ත
.කේතය
ආරම්භය:

RET
END START

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




ඉහල