ԻՆԹԵԼ x86 ԱՍԵՄԲԼԵՐ
ԱՐԱ ԱՌԱՔԵԼՅԱՆ | ՇՈՒՇԱՆԻԿ ԲԱՂԴԱՍԱՐՅԱՆ
ԿԱՐԻՆԵ ԳԱԼՍՏՅԱՆ | ՎԱՐԴԱՆ ԶԱՔԱՐՅԱՆ
ԳԵՎՈՐԳ ՄԱՐՏԻՐՈՍՅԱՆ | ԶԱՎԵՆ ՆԱԶԱՐՅԱՆ
ԳԱԳԻԿ ՍԱՐԴԱՐՅԱՆ
ԻՆԹԵԼ x86
ԱՍԵՄԲԼԵՐ
Ի Ր Ա Կ Ա Ն
Ռ Ե Ժ Ի Մ
Ո Ւ Ս Ո Ւ Մ Ն ԱՄ Ե ԹՈ Դ ԱԿ ԱՆ
ՁԵ ՌՆ ԱՐ Կ
ԵՐԵՎԱՆԻ ՊԵՏԱԿԱՆ ՀԱՄԱԼՍԱՐԱՆ
Ա. Հ. Առաքելյան, Շ. Ա. Բաղդասարյան, Կ. Գ. Գալստյան, Վ. Ա. Զաքարյան, Գ. Ա. Մարտիրոսյան, Զ. Ա. Նազարյան, Գ. Ռ. Սարդարյան
ԻՆԹԵԼ 286
ԱՍԵՄԲԼԵՐ
(իրական ռեժիմ)
ՈՒՍՈՒՄՆԱՄԵԹՈԴԱԿԱՆ ՁԵՌՆԱՐԿ
ԵՐԵՎԱՆ
ԵՊՀ ՀՐԱՏԱՐԱԿՉՈՒԹՅՈՒՆ
ՀՏԴ 004 (07) ԳՄԴ 32.81 ց7 Ի 510 Հրատարակության է երաշխավորել ԵՊՀ ինֆորմատիկայի և կիրառական մաթեմատիկայի ֆակուլտետի գիտական խորհուրդը
Ա. Հ. Առաքելյան, Շ. Ա. Բաղդասարյան, Կ. Գ. Գալստյան, Վ. Ա. Զաքարյան, Գ. Ա. Մարտիրոսյան, Զ. Ա. Նազարյան, Գ. Ռ. Սարդարյան Ի 510
ԻՆԹԵԼ 286 ԱՍԵՄԲԼԵՐ (իրական ռեժիմ): Ուսումնամեթոդական ձեռնարկ: -Եր., ԵՊՀ հրատ., 2016, 268 էջ: Ձեռնարկն անդրադառնում է Ինթել 286 ասեմբլերի (իրական ռեժիմ) հիմնական հրամաններին, տվյալների ներկայացմանը, ասեմբլերով ծրագրավորման հիմնարար գաղափարներին: Պարունակում է մեծ թվով օրինակներ։ Ինքնուրույն աշխատանքի նպատակով յուրաքանչյուր բաժին համալրված է խնդիրներով և վարժություններով։ Նախատեսված է «ԷՀՄ ճարտարապետություն և ասեմբլեր լեզու» առարկայի ուսումնասիրության համար։
ՀՏԴ 004 (07) ԳՄԴ 32.81 ց7
1Տ8N 978-5-8084-2148-6
Օ ԵՊՀ հրատ., 2016 Օ Հեղ. խումբ., 2016
ԲՈՎԱՆԴԱԿՈՒԹՅՈՒՆ
ՆԵՐԱԾՈՒԹՅՈՒՆ ..................................................................................... 7 ԷՀՄ ՃԱՐՏԱՐԱՊԵՏՈՒԹՅՈՒՆ ............................................................... 8 ԻՆԹԵԼ 286 ՊՐՈՑԵՍՈՐԻ ՏՎՅԱԼՆԵՐԻ ՏԻՊԵՐԸ ............................ 10 Թվային տվյալների տիպեր (Nսո6r1օ Daէa T7ք6Տ) ........................... 10 Ամբողջ թվեր (1ոէ6ջ6rՏ) ........................................................................ 12 Սահող կետով տվյալների տիպեր (F1օaէ1ոջ-Pօ1ոէ Daէa T7ք6Տ) ........ 12 Ցուցչային տիպ (Pօ1ոէ6r Daէa T7ք6) ................................................... 13 Բիթային դաշտ (81է F161մ Daէa T7ք6) ................................................. 13 Տողեր (Տէr1ոջ Daէa T7ք6) ..................................................................... 14 8ՇD փաթեթավորված և ոչ փաթեթավորված թվեր ........................ 14 Տվյալների ներկայացումը ասեմբլեր ծրագրում ................................ 15 Խնդիրներ և վարժություններ .............................................................. 16
ԻՆԹԵԼ 286 ՊՐՈՑԵՍՈՐԻ ՌԵԳԻՍՏՐՆԵՐԻ ՀԱՎԱՔԱԾՈՒՆ ........... 19
Ընդհանուր օգտագործման ռեգիստրներ .......................................... 20 Սեգմենտային ռեգիստրներ ................................................................ 22 Ղեկավարման և վիճակի դրոշներ ...................................................... 23
ՀԻՇՈՂՈՒԹՅԱՆ ԿԱԶՄԱԿԵՐՊՈՒՄԸ ԻՐԱԿԱՆ ՌԵԺԻՄՈՒՄ ......... 26
ՀԱՍՑԵԱՎՈՐՄԱՆ ԵՂԱՆԱԿՆԵՐԸ....................................................... 29 Ռեգիստրային հասցեավորում ....................................................... 29 Անմիջական հասցեավորում .......................................................... 29 Ուղղակի հասցեավորում................................................................. 31 Անուղղակի ռեգիստրային հասցեավորում ................................... 32 «Բազա - տեղաշարժ» անուղղակի հասցեավորում ................... 34 «(Ինդեքս " մասշտաբ) - տեղաշարժ» անուղղակի հասցեավորում ................................................................................. 35 «Բազա - ինդեքս - տեղաշարժ» անուղղակի հասցեավորում.... 36 «Բազա - ինդեքս " մասշտաբ - տեղաշարժ» (բազաինդեքսային հասցեավորում մասշտաբով) անուղղակի հասցեավորում .......... 36 ԱՍԵՄԲԼԵՐ ԼԵԶՈՒ ................................................................................. 37 Ասեմբլեր ծրագրի ընդհանուր կառուցվածքը .................................... 38 Ասեմբլեր ծրագրի թարգմանությունը ................................................. 42 ՄԵՔԵՆԱՅԱԿԱՆ ՀՐԱՄԱՆԻ ՖՈՐՄԱՏԸ .............................................. 51 Խնդիրների լուծման օրինակներ.................................................... 54
Խնդիրներ և վարժություններ ......................................................... 58
ԻՆԹԵԼ 286 ՊՐՈՑԵՍՈՐԻ ՀՐԱՄԱՆՆԵՐԻ ՀԱՄԱԿԱՐԳԸ:
ՈՒՆԻՎԵՐՍԱԼ ՀՐԱՄԱՆՆԵՐ ................................................................ 59 Ընդհանուր օգտագործման հրամաններ ........................................... 59 Տվյալների տեղափոխության հրամաններ ........................................ 60 Խնդիրներ և վարժություններ ......................................................... 77 Երկուական թվաբանության հրամաններ ......................................... 78 Խնդիրների լուծման օրինակներ.................................................... 93 Խնդիրներ և վարժություններ ......................................................... 94 Տասական թվաբանության հրամաններ ............................................ 99 Խնդիրների լուծման օրինակներ.................................................. 106 Խնդիրներ և վարժություններ ....................................................... 109 Տրամաբանական հրամաններ ........................................................ 109 Խնդիրների լուծման օրինակներ.................................................. 115 Խնդիրներ և վարժություններ ....................................................... 117 Տեղաշարժի և պտույտի հրամաններ ............................................... 118 Տեղաշարժի հրամաններ............................................................... 119 Ցիկլիկ տեղաշարժի (պտույտի) հրամաններ ............................ 123 Կրկնակի տեղաշարժի հրամաններ (386-) ................................ 126 Խնդիրների լուծման օրինակներ.................................................. 127 Խնդիրներ և վարժություններ ....................................................... 131 Բիթային և բայթային հրամաններ ................................................... 133 Ղեկավարությունը փոխանցող հրամաններ ................................... 142 Խնդիրների լուծման օրինակներ.................................................. 154 Խնդիրներ և վարժություններ ....................................................... 157 Տողային հրամաններ......................................................................... 159 Խնդիրների լուծման օրինակներ.................................................. 169 Խնդիրներ և վարժություններ ....................................................... 173 Դրոշների մշակման հրամաններ ..................................................... 176 Այլ հրամաններ .................................................................................. 178 ՀՐԱՄԱՆԱԳՐԵՐ .................................................................................... 179 Անունների սահմանման հրամանագրեր ......................................... 180 Սեգմենտի հրամանագիր .................................................................. 182 ՕRՕՍP հրամանագիր ....................................................................... 184 ՃՏՏՍԽԷ հրամանագիր .................................................................... 185
Հիշողության մոդելի և սեգմենտի սահմանման պարզեցված հրամանագրեր .................................................................................. 185 Պրոցեսորի հրամանագրեր ............................................................... 189 Պայմանական թարգմանության հրամանագրեր ........................... 190 Սխալի գեներացման հրամանագիր (.ԷRR) .................................... 192 1NՇԼՍDԷ հրամանագիր ................................................................... 192 PՍ8Լ1Շ, ԷՃTԷRN/ԷՃTRN հրամանագրեր .................................... 193 ՊՐՈՑԵԴՈՒՐԱ....................................................................................... 195 Պրոցեդուրայի նկարագրություն ...................................................... 195 Պրոցեդուրայի կանչ .......................................................................... 199 Վերադարձ պրոցեդուրայից հիմնական ծրագիր ........................... 200 Պարամետրերի փոխանցում պրոցեդուրային ................................ 201 Անդրադարձ (ռեկուրսիվ) պրոցեդուրաներ ..................................... 209 Խնդիրների լուծման օրինակներ.................................................. 211 Խնդիրներ և վարժություններ ....................................................... 219 ՄԱԿՐՈ .................................................................................................... 222 Մակրոնկարագրություն .................................................................... 222 Մակրոկանչ ........................................................................................ 222 Կրկնման հրամանագրեր ................................................................. 224 Խնդիրներ և վարժություններ ....................................................... 227 ԸՆԴՀԱՏՈՒՄ.......................................................................................... 231 1NT 21հ ընդհատման մի քանի ֆունկցիաներ ................................. 231 Խնդիրների լուծման օրինակներ.................................................. 234 Խնդիրներ և վարժություններ ....................................................... 236
ՀԱՎԵԼՎԱԾ 1 ՏՎՅԱԼՆԵՐԻ ՆԵՐԿԱՅԱՑՈՒՄԸ ԷՀՄ-ՈՒՄ ............. 237
Թվարկության դիրքային համակարգեր .......................................... 237 Թվերի թարգմանությունը P–ական համակարգից Օ–ական համակարգի ...................................................................................... 238 Ամբողջ թվերի թարգմանություն ................................................... 238 Կոտորակային թվերի թարգմանություն ...................................... 241 Երկուական թվերի գումարում և հանում .......................................... 243 Առանց նշանի ամբողջ թվերի ներկայացումը ԷՀՄ-ում ................. 244 Նշանով ամբողջ թվերի ներկայացումը ԷՀՄ-ում ........................... 245 Բիթ, բայթ, բառ, կրկնակի բառ ......................................................... 248 Երկուական կոդավորված 10-ական (8ՇD) թվերի ներկայացումը 249
Իրական թվերի ներկայացումը ( 1ԷԷԷ ստանդարտ) ...................... 250 Սիմվոլային տվյալների ներկայացումը .......................................... 254 Խնդիրներ և վարժություններ ....................................................... 255
ՀԱՎԵԼՎԱԾ 2 ԾԱՆՈԹՈՒԹՅՈՒՆ MՏ-ԾՕՏ ԾEBՍՇ ԾՐԱԳՐԻՆ .. 256
Խնդիրներ և վարժություններ ....................................................... 265 ԳՐԱԿԱՆՈՒԹՅՈՒՆ.............................................................................. 266
ՆԵՐԱԾՈՒԹՅՈՒՆ
Ձեռնարկում ներկայացված է ԵՊՀ ինֆորմատիկայի և կիրառական մաթեմատիկայի ֆակուլտետի «ԷՀՄ ճարտարապետություն և ասեմբլեր լեզու-1» դասընթացը։ Դասընթացի նպատակն է ներկայացնել ԷՀՄ-ի կառուցվածքը, տվյալների ներկայացումը, հրամանների համակարգը, ընդհատումների համակարգը Ինթել 286 (1ոէ61 286) պրոցեսորների համար, ինչպես նաև ասեմբլեր ցածր մակարդակի լեզուն։ Ներկայացված են ասեմբլեր ծրագրերի օրինակներ Ինթել 286 պրոցեսորների համար DՕՏ միջավայրում։ Ձեռնարկը համալրված է տարբեր թեմաներին վերաբերող խնդիրներով, վարժություններով:
ԷՀՄ ՃԱՐՏԱՐԱՊԵՏՈՒԹՅՈՒՆ
«ԷՀՄ ճարտարապետություն» (Շօոքսէ6r Ճrօհ1է6օէսr6) տերմինը առաջին անգամ կիրառվել է 18Խ ֆիրմայի աշխատակիցների կողմից 1959 թվականին: Ներկայումս տարբեր էլեկտրոնային բառարաններում այն մեկնաբանվում է տարբեր կերպ։ Այսպիսով՝ ԷՀՄ ճարտարապետություն տերմինը չունի մեկ սահմանում։ Ներկայացնենք մի քանի սահմանումներ։ Սահմանում 1. ԷՀՄ ճարտարապետությունը սահմանվում է որպես. ԷՀՄ-ի կառուցվածքային սխեման, ԷՀՄ-ի կառուցվածքային սխեմայի տարրերին դիմելու եղանակները, ԷՀՄ-ի միջերեսի (ինտերֆեյս) կազմակերպումը և կարգաթիվը (լայնություն), ռեգիստրների հավաքածուն և նրանց դիմելու եղանակը, հիշողության կազմակերպումը և հասցեավորման եղանակները, ԷՀՄ-ի տվյալների ֆորմատները և ներկայացման եղանակները, ԷՀՄ-ի մեքենայական հրամանների հավաքածուն, մեքենայական հրամանների ֆորմատները, ընդհատումները: Սահմանում 2. ԷՀՄ ճարտարապետություն ասելով՝ կհասկանանք. 1. մեքենայի ֆունկցիոնալ բլոկներն իրենց կապերով, 2. տվյալների ներկայացումը մեքենայում (ֆորմատները), 3. լեզուն (հրամանների համակարգը), 4. ընդհատումների համակարգը:
ԷՀՄ-ի ֆունկցիոնալ բլոկներն են. պրոցեսորը կամ կենտրոնական պրոցեսորը (ՇPՍ/Շ6ոէra1 Prօօ6ՏՏ1ոջ Սո1է), հիմնական հիշասարքը կամ ֆիզիկական հիշողությունը (Pհ7Տ1օa1 Խ6ոօr7/Խa1ո Խ6ոօr7/R4M), ներածող-արտածող սարքերը (1ոքսէ/Օսէքսէ D6v1օ6Տ), արտաքին հիշասարքերը (Է2է6rոa1 Խ6ոօr7): Ֆունկցիոնալ բլոկները միմյանց հետ կարող են կապվել 2 եղանակով՝ մեկ ընդհանուր կապուղով (ԵսՏ, шина), շատ կապուղիներով: Սահմանում 2.-ի 2-4 կետերը կդիտարկենք Ինթել (1ոէ61) պրոցեսորների ընտանիքի օրինակով։
ԻՆԹԵԼ 286 ՊՐՈՑԵՍՈՐԻ ՏՎՅԱԼՆԵՐԻ ՏԻՊԵՐԸ
1Ճ-32 ճարտարապետության հիմնական տվյալների տիպերն են բայթը /87է6 (8 բիթ), բառը /Wօrմ (16 բիթ), կրկնակի բառը /DօսԵ16wօrմ (32 բիթ), քառակի բառը /Օսaմwօrմ (64 բիթ) և կրկնակի քառակի բառը /DօսԵ16 զսaմwօrմ (128 բիթ)։
Բայթ N
Բառ
Ավագ Կրտսեր բայթ բայթ
N-1 16 15
Կրկնակի բառ
N
Ավագ բառ Կրտսեր բառ N-2
Քառակի բառ
Ավագ կրկնակի բառ
Կրկնակի քառակի բառ
Կրտսեր կրկնակի բառ
N-4
N
32 31
64 63
Ավագ քառակի բառ
N
Կրտսեր քառակի բառ N-8
N
Նկար 1. Հիմնական տվյալների տիպեր
Թվային տվյալների տիպեր (Nսո6ոiՇ Ծaէa Tyք65) Չնայած բայթը, բառը, կրկնակի/քառակի բառը 1Ճ-32 ճարտարապետության հիմնական տիպերն են, սակայն որոշ հրամաններ պահանջում են տվյալների տիպերի լրացուցիչ մեկնաբանություն և թույլ են տալիս գործողություններ կատարել թվային տիպերի հետ (նշանով և առանց նշանի թվեր, սահող կետով թվեր)։
Բայթային առանց նշանի ամբողջ
Բառային առանց նշանի ամբողջ
Կրկնակի բառային առանց նշանի ամբողջ
Քառակի բառային առանց նշանի ամբողջ
Նշան
Բայթային նշանով ամբողջ
Նշան
Բառային նշանով ամբողջ Նշան
Կրկնակի բառային նշանով ամբողջ Նշան
31 30
Քառակի բառային նշանով ամբողջ 63 62
Նշան
Սովորական ճշտությամբ սահող կետով 31 30 23 22
Նշան
Կրկնակի ճշտությամբ սահող կետով Նշան
63 62 52 51 ամբողջ բիթ
Աշխատանքային կամ կրկնակի ընդլայնված ճշտությամբ սահող կետով 79 78
64 63 62
Նկար 2. Թվային տվյալների տիպեր
Ամբողջ թվեր (1ոէ6ջ6ո5) 1Ճ-32 սահմանում է երկու տիպի ամբողջ թվեր՝ նշանով և առանց նշանի։ Առանց նշանի ամբողջ թվերը սովորական երկուական թվեր են՝ 0-ից մինչև առավելագույն դրական թիվը, որը կարող է ներկայացվել օպերանդում։ Նշանով ամբողջ թվերը երկուական թվերի լրացուցիչ կոդն են և կարող են օգտագործվել և՛ դրական, և՛ բացասական ամբողջ թվերի ներկայացման համար։ Որոշ հրամաններ (ՃDD, ՏՍ8 հրամաններ) գործողություններ են կատարում և՛ առանց նշանի, և՛ նշանով ամբողջ թվերի հետ, իսկ այլ հրամաններ (1ԽՍԼ, ԽՍԼ, 1D1Օ, D1Օ) գործողություններ են կատարում միայն մի տիպի թվերի հետ։
Սահող կետով տվյալների տիպեր (F1օaէiոջ-Pօiոէ Ծaէa Tyք65) Իրական թվերը ներկայացվում են 1ԷԷԷ-754 ստանդարտով (տե՛ս հավելվածը) : Տվյալի տիպը (Ծaէa Tyք6) Սովորական ճշտություն (Տ1ոջ16 Pr6օ1Տ1օո) Կրկնակի ճշտություն (DօսԵ16 Pr6օ1Տ1օո) Կրկնակի ընդլայնված ճշտություն (DօսԵ16 Է2է6ոմ6մ Pr6օ1Տ1օո)
Երկարություն (Լ6ոջէհ)
Ճշտություն (Pո6Շi5iօո Biէ5)
Մոտավոր նորմալիզացված միջակայք (Ճքքոօ2iոaէ6 Nօոոa1i26մ Raոջ6) Երկուական Տասական (Biոaոy) (Ծ6Շiոa1)
-16382
16383
1.18210 38 3.40210
2.23210 308 1.79210
3.37210 – 1.18210
Նկար 3. Սահող կետով տվյալների տիպերի երկարությունը, ճշտությունը և միջակայքը
Ցուցչային տիպ (Pօiոէ6ո Ծaէa Tyք6) Ցուցիչները հիշողության հասցեներ են։ 1Ճ-32 ճարտարապետությունը սահմանում է երկու տիպի ցուցիչ՝ մոտիկ (ո6ar) և հեռու (far): Մոտիկ ցուցիչը սեգմենտի ներսում 32-բիթանոց (16-բիթանոց հասցեավորման դեպքում` 16-բիթանոց) շեղումն է (օffՏ6է): Այն անվանում են նաև արդյունավետ կամ էֆեկտիվ հասցե (6ff6օէ1v6 aմմr6ՏՏ)։ Այս ցուցիչն օգտագործվում է հիշողության հարթ և սեգմենտային մոդելներում հիշողությանը դիմելիս, երբ սեգմենտի արժեքը որոշվում է ոչ բացահայտ։ Հեռու ցուցիչը տրամաբանական հասցե է՝ կազմված սեգմենտի 16-բիթանոց ընտրիչից (Տ616օէօr) և 32-բիթանոց (16-բիթանոց հասցեավորման դեպքում` 16-բիթանոց) շեղումից։ Այն օգտագործվում է հիշողության սեգմենտային մոդելում, երբ սեգմենտի արժեքը տրվում է բացահայտ։ Մոտիկ ցուցիչ Շեղում Հեռու ցուցիչ կամ տրամաբանական հասցե Սեգմենտի ընտրիչ
Շեղում 32 31
Նկար 4. Ցուցչային տիպեր
Բիթային դաշտ (Biէ Fi61մ Ծaէa Tyք6) Բիթային դաշտը բիթերի հաջորդականություն է։ Այն կարող է գտնվել հիշողության բայթի ցանկացած դիրքից սկսած և ունենալ առավելագույնը 32 բիթ երկարություն, ամենաշատը` 4 բայթում։
Տողեր (Տէոiոջ Ծaէa Tyք6) Տողերը բիթերի, բայթերի, բառերի կամ կրկնակի բառերի հաջորդականություն են։ Բիթային տողը կարող է սկսվել ցանկացած բայթի ցանկացած դիրքից և պարունակել մինչև 232 - 1 բիթ։ Բայթային տողը կարող է կազմված լինել բայթերից, բառերից կամ կրկնակի բառերից և ունենալ մինչև 4ԳԲ երկարություն։
BԸԾ փաթեթավորված և ոչ փաթեթավորված թվեր 8ՇD ամբողջ
8ՇD
Փաթեթավորված 8ՇD ամբողջ 8ՇD
8ՇD
80-բիթանոց փաթեթավորված 8ՇD տասական ամբողջ
Նշան
Ճ 79 78
D17 D16 D15 D14 D13 D12 D11 D10
D9
D8
D7
D6
D5
D4
D3
D2
D1
72 71
D0
4 բիթը - 1 8ՇD թվանշանի Նկար 5. Երկուական կոդավորված տասական թվեր /5ԸD (5ոnւry c04e4 Decոmւl)
Երկուական կոդավորված տասական թվեր (5ԸD թվեր ) Լինում են երկու տեսակ՝ փաթեթավորված և ոչ փաթեթավորված։ Ոչ փաթեթավորված տասական թիվն առանց նշանի տասական թվի (0-9 միջակայք) երկուական 4-բիթանոց ներկայացումն է մեկ բայթում։ Փաթեթավորված տասական թիվը մեկ բայթում 2 հատ տասական թվի (0-9 միջակայք) երկուական 4-բիթանոց ներկայացումն է:
Տվյալների ներկայացումը ասեմբլեր ծրագրում Տվյալներն ասեմբլեր ծրագրում ներկայացվում են տվյալների հրամանագրերի (դիրեկտիվներ/մ1r6օէ1v6Տ) միջոցով, որոնց տեսքն է. Անուն Ծ* Հսկզբնական արժեքների ցուցակ» Որտեղ՝ անվան դաշտը պարտադիր չէ, *-ը կարող է ընդունել 8 (Ե7է6), W (wօrմ), D (մօսԵ16wօrմ), Օ (զսaմwօrմ), T(է6ո Ե7է6), F (far) արժեքներ՝ համապատասխանաբար բայթ, բառ (2 բայթ), կրկնակի բառ (4 բայթ), քառակի բառ (8 բայթ), 10 բայթ և 6 բայթ սահմանելու համար, Հսկզբնական արժեքների ցուցակ»-ը ներկայացնում է սկըզբնական արժեքներ` անջատված ստորակետերով։ Սկզբնական արժեքը ներկայացնում է թվային (ամբողջ կամ իրական) կամ սիմվոլային արժեք։ Թվային ամբողջ արժեքը կարող է տրվել 10-ական, 16-ական (հ/է վերջավորությամբ), 8-ական (զ/Օ վերջավորությամբ), 2-ական (Ե/8 վերջավորությամբ) հիմքով։ Սկզբնական արժեքը պետք է պատկանի սահմանված տիպի թույլատրելի արժեքների բազմությանը, այլապես թարգանիչն այն կդիտարկի որպես սխալ։ Սիմվոլային տողը պարփակվում է չակերտների` “ ” կամ ապաթարցների`‘ ’ մեջ։ Կարելի է սկզբնական արժեքի փոխարեն օգտագործել՝ 2 նշանը, որը նշանակում է, որ սկզբնական արժեքը որոշված չէ, Հքանակ» DՍP (Հսկզբնական արժեքների ցուցակ») գործողությունը, որը նշանակում է Հսկզբնական արժեքների ցուցակ»-ը՝ Հքանակ» անգամ կրկնած։
Օրինակ` Ճ D8 2
: սահմանված է Ճ բայթային փոփոխա: կանը, որի սկզբնական արժեքը որոշ: ված չէ, 8 D8 5 : սահմանված է 8 բայթային փոփոխա: կանը՝ 5 սկզբնական արժեքով, Շ DW 0F123հ : սահմանված է Շ բառային փոփոխա: կան՝ F123հ 16-ական արժեքով, D D8 “է611օ” : սահմանված է D սիմվոլային զանգ: ված՝ “է611օ” արժեքով, Է DD 13.4 : սահմանված է Է կրկնակի բառային : փոփոխականը՝ 13.4 իրական թվային : արժեքով, F DW 45, 1018, 2, 10է : սահմանված է F բառային զանգված՝ : բաղկացած 4 տարրից՝ 45, 5 (1018), : որոշված չէ (2), 16 (10է) արժեքներով, Օ DD 10 DՍP (0) : սահմանված է 10 կրկնակի բառերից : կազմված Օ զանգված՝ սկզբնարժեքա: վորված զրոյով։
Խնդիրներ և վարժություններ 1. Յուրաքանչյուր հրամանագրի համար գրել համարժեք այլ ներկայացում, որտեղ փոփոխականի սկզբնարժեքը տրված կլինի 16ական տեսքով. ա) Ճ D8 17 բ) 8 D8 15 գ) Օ D8 255 դ) Օ D8 150
ե) D D8 −17
զ) Է D8 −1
է) J D8 −106
ը) 7 D8 −128 թ) 1 DW 17
ժ) Ճ DW −17
ի) Լ DW −1
լ) Խ DW 256
2. Յուրաքանչյուր հրամանագրի համար գրել 2 համարժեք այլ ներկայացում, որտեղ փոփոխականի արժեքը տրված կլինի 10-ական տեսքով, մի դեպքում՝ առանց նշանի, իսկ մյուս դեպքում՝ նշանով. ա) Ճ D8 0Ճհ դ) Օ D8 80հ է) J DW 7Fհ
բ) 8 D8 0Ճ5հ ե) D D8 101Ե ը) 7 DW 80հ
գ) Օ D8 7Fհ
զ) Է DW 0FFFԷհ
3. Տրված է հետևյալ նկարագրությունը. Ճ DW 1020հ 8 DD 10203040հ 16-ական տեսքով նշել հետևյալ հասցեներով բայթերի արժեքները՝ Ճ, Ճ-1, 8, 8-1, 8-2 և 8-3: 4. Յուրաքանչյուր հրամանագրի համար գրել 2 համարժեք այլ ներկայացում, որտեղ փոփոխականի արժեքը տրված կլինի երկուական կոդավորված տասական թվի (8ՇD) տեսքով, մի դեպքում՝ փաթեթավորված, իսկ մյուս դեպքում՝ ոչ փաթեթավորված. ա) Ճ D8 12
բ) 8 D8 15հ
գ) Շ D8 01011011Ե
դ) D DW 0Ճ4հ
ե) Է DW 130
զ) F DW 7892
է) Օ DD 725
ը) է DD 123456
թ) 1 DD 1Ճ5հ
5. Նկարագրել 10 բայթից բաղկացած Ճ զանգված՝ հետևյալ սկըզբնական արժեքներով. ա) տարրերը չունեն սկզբնական արժեք, բ) տարրերն ունեն 0 սկզբնական արժեք, գ) առաջին 5 տարրերը 1-եր են, մնացած 5 տարրերը՝ 0-ներ, դ) տարրերն առաջին 10 բնական զույգ թվերն են (2, 4, 6....), ե) առաջին 3 տարրերը պարզ թվեր են՝ 7, 11, 13, հաջորդ 4-ը սկզբնական արժեք չունեն, մնացած տարրերը 0-ներ են:
6. Տրված է հետևյալ նկարագրությունը. Ճ D8 12հ, 25հ, 60, 48 8 D8 5, -7, 10, 32 Շ D8 120, 85, 79, 46h Նշել Ճ, 8 և Շ զանգվածների տարրերի արժեքները 16-ական համակարգով հետևյալ գործողություններից հետո. Ճ|2| - 10, Ճ|6| - 25, Ճ|9| - 4, 8|1| - 12, 8|7| - 44հ, Շ|2| - 10, Շ|-2| - 20, Շ|-5| - 33հ: 7. Տրված է հետևյալ նկարագրությունը. Ճ D8 250, 12, 64հ, 89 8 DW 3552հ, -27, -79, 3215 Շ DD 256, 486915հ, 791241հ, -732 Նշել Ճ, 8 և Շ զանգվածների տարրերի արժեքները 16-ական համակարգով հետևյալ գործողություններից հետո. Ճ|4| - 10, Ճ|1| - 25, Ճ|12| - 29հ, 8|-1| - 65հ, 8|6| - 47, 8|8| - 5, Շ|1| - 0Ճհ, Շ|4| - 57հ, Շ|-5| - 42հ:
ԻՆԹԵԼ 286 ՊՐՈՑԵՍՈՐԻ ՌԵԳԻՍՏՐՆԵՐԻ
ՀԱՎԱՔԱԾՈՒՆ
Ռեգիստրը պրոցեսորի փոքրածավալ հիշողություն է, որն ապահովում է տվյալներին արագ դիմելու հնարավորություն։ Ինթել 286 միկրոպրոցեսորի (կամ պարզապես պրոցեսորի1) ծրագրային մոդելը (ծրագրավորողին հասանելի) պարունակում է 32 ռեգիստր։ Այն կարելի է բաժանել 2 խմբի. 1. 16 հատ օգտագործողի ռեգիստրներ, 2. 16 հատ համակարգային ռեգիստրներ: Դիտարկենք օգտագործողի ռեգիստրները, որոնց մեծ մասն ունեն ֆունկցիոնալ նշանակություն։ 8086-ում կային 14 հատ 2-բայթանոց ռեգիստրներ: 80186-ում ավելացան ևս 2 ռեգիստր՝ FՏ և ՕՏ: 80386-ում ռեգիստրներից 10-ը դարձել են 4-բայթանոց, և դրանց անվանումը սկսվում է ‘Է’ տառով: Օգտագործողի ռեգիստրներն իրենց հերթին կարելի է բաժանել 3 ենթախմբի. 1. 8 հատ 32-բիթանոց ընդհանուր օգտագործման ռեգիստրներ (Օ6ո6ra1-PսrքօՏ6 r6ջ1Տէ6rՏ), որոնք օգտագործվում են տվյալներ և հասցեներ պահելու համար։ Դրանք են՝ ԷՃՃ/ՃՃ/Ճէ/ՃԼ, ԷՇՃ/ՇՃ/Շէ/ՇԼ, ԷDՃ/DՃ/Dէ/DԼ, Է8Ճ/8Ճ/8է/8Լ, ԷՏP/ՏP, Է8P/8P, ԷՏ1/Տ1, ԷD1/D1: 2. 6 հատ 16-բիթանոց սեգմենտային ռեգիստրներ՝ ՇՏ, DՏ, ՏՏ, ԷՏ, FՏ, ՕՏ: 3. 32-բիթանոց դրոշների ռեգիստրը՝ ԷFԼՃՕՏ (կրտսեր 16 բիթը՝ FԼՃՕՏ) և հրամանի ցուցիչը՝ Է1P (կրտսեր 16 բիթը՝ 1P): Այժմ ավելի մանրամասն դիտարկենք նշված ռեգիստրները։
Մեկ միկրոսխեմայի կամ մի քանի միկրոսխեմաների խմբի տեսքով իրականացված պրոցեսորը կոչվում է միկրոպրոցեսոր: Ներկայումս միկրոպրոցեսոր չհանդիսացող պրոցեսորների շատ քիչ քանակի պատճառով միկրոպրոցեսոր և պրոցեսոր տերմինները գործնականում համարժեք են:
Ընդհանուր օգտագործման ռեգիստրներ
16 15
8 7
ԷՃՃ ՃՃ Ճէ
ՃԼ
ԷՇՃ ՇՃ Շէ
ՇԼ
ԷDՃ DՃ Dէ
DԼ
Է8Ճ 8Ճ 8է
8Լ
ԷՏP ՏP Է8P 8P ԷՏ1 Տ1 ԷD1 D1
16 15
Նկար 1. Ընդհանուր օգտագործման ռեգիստրներ
Ընդհանուր օգտագործման 32-բիթանոց ռեգիստրները հնարավորություն են տալիս դիմելու իրենց կրտսեր մասերին (օրինակ՝ ԷՃՃ-ի կրտսեր մասերն են ՃՃ-ը, Ճէ-ը, ՃԼ-ը): Ավագ 16 բիթերին ուղղակիորեն հնարավոր չէ դիմել։
Քանի որ այդ ռեգիստրները ֆիզիկապես գտնվում են ԹՏՍ-ի (թվաբանական-տրամաբանական սարքի) մեջ, դրանց նաև անվանում են ԹՏՍ-ի ռեգիստրներ։ Բացի ընդհանուր օգտագործումից՝ առանձին ռեգիստրներ հանդես են գալիս նաև որոշակի ֆունկցիոնալ նշանակությամբ: ԷՃՃ/ՃՃ/Ճէ/ՃԼ (Ճօօսոս1aէօr r6ջ1Տէ6r) – կուտակիչ։ Օգտագործվում է միջանկյալ տվյալներ պահելու համար։ Որոշ հրամաններում օգտագործվում է ոչ բացահայտ։ Է8Ճ/8Ճ/8է/8Լ (8aՏ6 r6ջ1Տէ6r) – բազային ռեգիստր։ Օգտագործվում է հիշողության մեջ գտնվող օբյեկտի բազային հասցեն պահելու համար։ Որոշ հրամաններում օգտագործվում է ոչ բացահայտ։ ԷՇՃ/ՇՃ/Շէ/ՇԼ (Շօսոէ r6ջ1Տէ6r) – հաշվիչի ռեգիստր։ Օգտագործվում է հրամանի կամ հրամանների խմբի կրկնության համար։ Հաճախ օգտագործվում է ոչ բացահայտ (օրինակ` ԼՕՕP հրամանում)։ ԷDՃ/DՃ/Dէ/DԼ (Daէa r6ջ1Տէ6r) – տվյալների ռեգիստր։ Հիշվում են միջանկյալ տվյալներ։ Որոշ հրամաններում օգտագործվում է ոչ բացահայտ։ ԷՏ1/Տ1 (Տօսrօ6 1ոմ62 r6ջ1Տէ6r) – աղբյուրի ինդեքսային ռեգիստր։ Ոչ բացահայտ օգտագործվում է տողային հրամաններում՝ պարունակելով ընթացիկ 32, 16, 8-բիթանոց տարրի հասցեն։ ԷD1/D1 (D6Տէ1ոaէ1օո 1ոմ62 r6ջ1Տէ6r) – ընդունիչի ինդեքսային ռեգիստր։ Նման է ԷՏ1/Տ1-ին։ ԷՏP/ՏP (Տէaօk Pօ1ոէ6r r6ջ1Տէ6r) – պահունակի ցուցիչի ռեգիստր։ Պարունակում է պահունակ սեգմենտի մեջ պահունակի գագաթի ցուցիչը (հասցեն): Է8P/8P (8aՏ6 Pօ1ոէ6r r6ջ1Տէ6r) – պահունակի կադրի բազային ցուցիչի ռեգիստր։ Օգտագործվում է պահունակի ներսի տվյալներին դիմելու համար։
Որոշ հրամանների համար ամրագրված ռեգիստների օգտագործումը հնարավորություն է տալիս ավելի կոմպակտ ներկայացնելու դրանց մեքենայական կոդերը։
Սեգմենտային ռեգիստրներ Սեգմենտային ռեգիստրներն են ՇՏ, ՏՏ, DՏ, ԷՏ, FՏ, ՕՏ-ը: Այս ռեգիստրների ներկայությունը պայմանավորված է Ինթել միկրոպրոցեսորի օպերատիվ հիշողության կազմակերպման և օգտագործման հանգամանքով։ Միկրոպրոցեսորն ապարատային միջոցներով ապահովում է ծրագրի կառուցվածքային կազմակերպումը՝ բաղկացած սեգմենտներից։ Հիշողության նման կազմակերպումն անվանում են հիշողության կազմակերպման սեգմենտային մոդել։ Որևէ կոնկրետ պահին ծրագրին հասանելի սեգմենտները նշելու համար օգտագործվում են սեգմենտային ռեգիստրներ։ Միկրոպրոցեսորն օգտագործում է հետևյալ երեք տիպի սեգմենտները: 1. Կոդ (հրամանների) սեգմենտ, որը պարունակում է ծրագրի հրամանները։ Այս սեգմենտին դիմելու համար օգտագործվում է ՇՏ (օօմ6 Տ6ջո6ոէ) ռեգիստրը։ 2. Տվյալների սեգմենտ, որը պարունակում է ծրագրի կողմից մշակվող տվյալները։ Այս սեգմենտին դիմելու համար օգտագործվում է DՏ (մaէa Տ6ջո6ոէ) ռեգիստրը։ Ենթադրվում է, որ ոչ բացահայտ մեքենայական հրամանների մշակած տվյալները գտնվում են այն տվյալների սեգմենտում, որի հասցեն գտնվում է DՏ (Daէa Տ6ջո6ոէ) սեգմենտային ռեգիստրում։ Եթե ծրագրին մեկ տվյալների սեգմենտը չի բավարարում, այն կարող է օգտագործել ևս երեք լրացուցիչ տվյալների սեգմենտներ։ Լրացուցիչ տվյալների սեգմենտի հասցեն բացահայտ կերպով (բացի տողային հրամաններում օգտագործվող ԷՏ սեգմենտային ռեգիստրից) նշվում է հրամանի մեջ սեգմենտային ռեգիստրի վերաբեռնման
նախդիրի միջոցով։ Լրացուցիչ տվյալների սեգմենտների հասցեները պահվում են ԷՏ, ՕՏ, FՏ սեգմենտային ռեգիստրներում։ 3. Պահունակ սեգմենտ, որը հիշողության տիրույթ է և նույնպես օգտագործվում է տվյալների պահպանման համար։ Պահունակի հետ աշխատանքը միկրոպրոցեսորն իրականացնում է հետևյալ սկզբունքով. այս տիրույթում գրանցված վերջին տարրն ընտրվում է առաջինը (Լ1FՕ – “ԼaՏէ 1ոքսէ, F1rՏէ Օսէքսէ” սկզբունք): Այս սեգմենտին դիմելու համար օգտագործվում է ՏՏ (Տէaօk Տ6ջո6ոէ) սեգմենտային ռեգիստրը։
Ղեկավարման և վիճակի դրոշներ Այժմ մանրամասն դիտարկենք ԷFԼՃՕՏ (80386-) դրոշների 32բիթանոց ռեգիստրը, որի առանձին բիթերն ունեն որոշակի ֆունկցիոնալ նշանակություն, և կոչվում են դրոշներ։ Այս ռեգիստրի կրտսեր մասը՝ 16-բիթանոց FԼՃՕՏ ռեգիստրը, 18086-ի համար է։ ԷFԼՃՕՏ դրոշների ռեգիստրն ունի հետևյալ տեսքը. ՕՕ ՃՕ R N Օ ՕD 1 T Տ 7 Ճ P Շ 0 0 0 0 0 0 0 0 0 0 1 1 D T P F F F F F F F F F ՇԽF P F Լ 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5
4 3 2 1 0
Նկար 2. ԵFԼ14Տ դրոշների ռեգիստր
Չի օգտագործվում 1D (1D F1aջ), Օ1P (Օ1rէսa1 1ոէ6rrսքէ P6ոմ1ոջ), Օ1F (Օ1rէսa1 1ոէ6rrսքէ F1aջ), ՃՇ (Ճ11ջոո6ոէ Շհ6օk), ՕԽ (Օ1rէսa1-8086 Խօմ6), RF (R6Տսո6 F1aջ), NT (N6Տէ6մ TaՏk), 1ՕPԼ (1/Օ Pr1v116ջ6 Լ6v61) դրոշները կոչվում են համակարգային դրոշներ և ներմուծվել են 80386-ից սկսած:
Իրական ռեժիմում օգտագործվում են միայն ՇF, PF, ՃF, 7F, Տ7, 1F, TF, DF և ՕF դրոշները՝ 18086-ի դրոշները: Ավելի մանրամասն դիտարկենք այդ դրոշները։ ԸF (բիթ 0)՝ Ըaոոy F1aջ – փոխանցման դրոշ: Եթե գումարման ժամանակ ավագ բիթից 1 է փոխանցվում դուրս, կամ հանման ժամանակ դրսից ավագ բիթը պարտք է վերցնում, ապա ՇF-ը ընդունում է 1 արժեք, հակառակ դեպքում՝ 0: Այս դրոշն ունի գերհագեցման իմաստ առանց նշանի թվերի համար։ PF (բիթ 2)՝ Paոiէy F1aջ – զույգության դրոշ: Եթե գործողության արդյունքի կրտսեր բայթի մեջ 1-երի քանակը զույգ է, ապա PF - 1, հակառակ դեպքում` 0: ՃF (բիթ 4)՝ Ճս2i1iaոy Ըaոոy F1aջ – լրացուցիչ փոխանցման դրոշ: Եթե գումարման ժամանակ 3-ից 4-րդ բիթ փոխանցում է կատարվում կամ հանման ժամանակ 4-ից 3-րդ բիթ պարտք է վերցվում, ապա ՃF - 1, հակառակ դեպքում` 0: Այս դրոշն օգտագործվում է 10ական թվաբանության հրամաններում: ZF (բիթ 6)՝ Z6ոօ F1aջ – զրոյի դրոշ: Եթե գործողության արդյունքը 0 է, ապա 7F - 1, հակառակ դեպքում` 0: ՏF (բիթ 7)՝ Տiջո F1aջ – նշանի դրոշ: Այս բիթն իրենից ներկայացնում է գործողության արդյունքի ավագ բիթի արժեքը։ Եթե գործողության արդյունքը բացասական է՝ ՏF - 1, հակառակ դեպքում` ՏF - 0: TF (բիթ 8)՝ TոaՇ6 F1aջ – կանգառի դրոշ: Եթե TF - 1, ապա պրոցեսորն աշխատում է քայլային ռեժիմում, այսինքն՝ ծրագրի յուրաքանչյուր հրամանի կատարումից հետո պրոցեսորի աշխատանքը կանգնում է, և իրականացվում է 1ոէ 1 հրամանը, հակառակ դեպքում հերթով կատարվում են ծրագրի բոլոր հրամանները մինչև ծրագրի ավարտը: Այս դրոշն օգտագործվում է ճշգրտման ծրագրերի աշխատանքի ժամանակ (օր.՝ մ6Եսջ.626): 1F (բիթ 9)՝ 1ոէ6ոոսքէ Eոaե16 F1aջ – ընդհատումը թույլատրող դրոշ: Եթե 1F - 0, ապա պրոցեսորն անտեսում է արտաքին սարքերից եկած ընդհատումները:
ԾF (բիթ 10)՝ Ծiո6Շէiօո F1aջ - ուղղության դրոշ: Այս դրոշն օգտագործվում է տողային հրամանների հետ աշխատելիս: Եթե DF - 0, ապա տողային հրամաններն իրականացվում են հասցեների աճման կարգով, իսկ եթե DF - 1` հասցեների նվազման կարգով: ՕF (բիթ 11)՝ Օv6ո11օw 11aջ - գերհագեցման դրոշ: Եթե նշանով թվերի գործողության (գումարում/հանում) արդյունքը չի պատկանում արդյունքի համար նախատեսված թույլատրելի արժեքների բազմությանը, ապա ՕF - 1, հակառակ դեպքում`ՕF - 0։ DF դրոշը կոչվում է ղեկավարող դրոշ, 1F և TF դրոշները կոչվում են համակարգային դրոշներ, իսկ ՇF, PF, ՃF, 7F, ՏF, ՕF դրոշները` վիճակի կամ թվաբանական դրոշներ: Օրինակ դիտարկենք 1-բայթանոց 255 և 1 թվերի գումարման արդյունքում թվաբանական դրոշների ընդունած արժեքները: 255 - 11111111Ե 1 - 00000001Ե 1111 1111 0000 0001 1 0000 0000 ՇF - 1, քանի որ տեղի է ունեցել փոխանցում։ ՃF - 1, քանի որ տեղի է ունեցել 3-ից 4-րդ բիթ փոխանցում։ ՏF - 0, քանի որ նշանի բիթը 0 է։ 7F - 1, քանի որ գործողության արդյունքը զրո է։ PF - 1, քանի որ գումարման արդյունքում ստացված մեկերի քանակը զույգ է (0)։ ՕF - 0, քանի որ գերհագեցում տեղի չի ունեցել (որպես նշանով թվեր՝ -1-ին գումարվել է 1 և արդյունքում ստացվել է 0):
ՀԻՇՈՂՈՒԹՅԱՆ ԿԱԶՄԱԿԵՐՊՈՒՄԸ
ԻՐԱԿԱՆ ՌԵԺԻՄՈՒՄ
1Ճ-32 պրոցեսորներն աշխատում են իրական (r6a1), պաշտպանված (քrօէ6օէ6մ) և համակարգը ղեկավարող ռեժիմով (Տ7Տէ6ո Խaոaջ6ո6ոէ Խօմ6-ՏԽԽ)։ Իրական ռեժիմը համակարգի գործարկման ռեժիմն է, որտեղ պրոցեսորն աշխատում է որպես արագագործ 8086։ Իրական ռեժիմը բնութագրվում է 1ՄԲ հասցեային տարածությամբ, հիշողության ցանկացած տիրույթի, մուտք/ելքի հասցեների և արտաքին սարքերի հետ ուղղակի աշխատելու անսահմանափակ հնարավորություններով։ Իրական ռեժիմը չի ապահովում հիշողության պաշտպանություն, բազմախնդրայնություն կամ կոդի արտոնության մակարդակներ։ Ամենաներքին մակարդակով հիշողությունը կարելի է դիտարկել որպես բիթերի (Ե1է/Ե1ոar7 մ1ջ1է) զանգված։ Սովորաբար հիշողությունը կազմակերպում են որպես բջիջների (կամ բայթերի) հաջորդականություն։ Բջիջը մեկ կամ մեկից ավելի կարգավորված բիթերի համախումբ է, որն ունի հասցե։ 8 հաջորդական բիթերին անվանում են բայթ։ Երբ բջջի պարունակությունը 8 բիթ է՝ 1 բայթ, ապա ասում են, որ օգտագործվում է բայթային հասցեավորում։ Պատմականորեն բայթի չափը կախված է եղել ապարատուրայից, և գոյություն չի ունեցել ստանդարտ, որը կպարտադրեր բայթի չափը։ Դե ֆակտո 8 բիթը դարձավ ստանդարտ, քանի որ այն երկուսի աստիճան է։ Հասցեների փոփոխման միջակայքը կախված է հասցեի կապուղու լայնությունից։ 1486-ի և P6ոէ1սո-ի համար այն գտնվում է 0-ից 232-1 միջակայքում (4ԳԲ)։ Հիշողության ղեկավարումը կատարվում է ապարատային միջոցներով, որը նշանակում է, որ ծրագիրը չի կարող ձևափոխել ֆիզիկական հասցեն հասցեի կապուղու միջոցով։ Դիտարկենք հիշողության կազմակերպումն իրական ռեժիմում։
Ինթել պրոցեսորներն իրական ռեժիմում օգտագործում են հիշողության կազմակերպման սեգմենտային եղանակը։ Սեգմենտային հասցեավորման դեպքում հիշողությունը բաժանվում է տիրույթների (իրական ռեժիմում՝ առավելագույն չափը 64ԿԲ)` սեգմենտների, և յուրաքանչյուր բայթի հասցե ձևավորվում է երկու բաղադրիչներով՝ հիմք:շեղում (տրամաբանական հասցե), որտեղ հիմքը (ԵaՏ6) ցույց է տալիս սեգմենտի սկզբի հասցեն, իսկ շեղումը (օffՏ6է)՝ սեգմենտի սկզբի նկատմամբ տվյալ բայթի շեղումը: Իրական ռեժիմում հիմքի և շեղման արժեքները 16-բիթանոց են (պաշտպանված ռեժիմում սեգմենտի սկզբի հասցեն որոշվում է ընտրիչի (Տ616օէօr) միջոցով, իսկ շեղումը 32-բիթանի է)։ 16-բիթանոց ծրագրում (իրական ռեժիմ) հիմքի արժեքը տրվում է սեգմենտային ռեգիստրով, իսկ շեղումը (արդյունավետ հասցե-6ff6օէ1v6 aմմr6ՏՏ) կարող է տրվել ուղղակիորեն կամ անուղղակի արդյունավետ հասցեի բաղադրիչների միջոցով։ Հիմքի արժեքը կարող է ծրագրում բացահայտ տրված չլինել։ Իրական ռեժիմում պրոցեսորը ծրագրում հիմք:շեղում տեսքով տրված տրամաբանական հասցեն ձևափոխում է 20-բիթանոց ֆիզիկական հասցեի հետևյալ եղանակով. Ֆիզիկական_հասցե20 = հիմք * 16 - շեղում
Նկար 1. Տրամաբանական հասցեից ֆիզիկական հասցեի ստացումը իրական ռեժիմում
Իրական ռեժիմում ֆիզիկական հասցեն 20-բիթանոց է, հասցեային տարածությունը հասնում է մինչև 220 բայթ կամ 1,048,576 բայթ (1ՄԲ), հասցեային տարածությունը տրվում է 00000հ-ից 0FFFFFհ միջակայքում։ Օրինակ՝ 7522է:F139է տրամաբանական հասցեին իրական ռեժիմում կհամապատասխանի հետևյալ ֆիզիկական հասցեն. 75220է - F139է - 84359է Իրական ռեժիմում մեծածավալ տվյալների հետ աշխատելը հանգեցնում է խնդիրների, քանի որ շեղումը չի կարող գերազանցել 16 բիթը, և սեգմենտի չափը ահմանափակվում է 64ԿԲ-ով։
ՀԱՍՑԵԱՎՈՐՄԱՆ ԵՂԱՆԱԿՆԵՐԸ
1Ճ-32 օպերանդները կարող են գտնվել. ռեգիստրում, հիշողության մեջ, անմիջապես հրամանում (անմիջական օպերանդ), մուտքի/ելքի կայանում: Գործողության արդյունքը կարող է գրանցվել. ռեգիստրում, հիշողության մեջ, մուտք/ելքի կայանում: Հասցեավորման եղանակ (Ճմմո655iոջ ոօմ6) ասելով՝ կհասկանանք օպերանդի տրման եղանակը։ 1Ճ-32 կան հասցեավորման հետևյալ եղանակները:
Ռեգիստրային հասցեավորում Այս հասցեավորման դեպքում օպերանդները ռեգիստրներ են:
ԽՕՕ ՃՃ, 8Ճ
: ռեգիստրային հասցեավորում
Անմիջական հասցեավորում Անմիջական հասցեավորում օգտագործվում է երկրորդ օպերանդի համար։ Այն ներկայացնում է անմիջական արժեք, որը գրանցվում է մեքենայական հրամանում։ ԽՕՕ ՇՃ, 123
Եթե օպերանդը գտնվում է հիշողության մեջ, ապա այն կարող է տրվել ուղղակի կամ ոչ ուղղակի։ Արդյունավետ հասցեի (Էff6օէ1v6 Ճմմr6ՏՏ/ԷՃ) կամ շեղման (ՕffՏ6է) ձևավորմանը մասնակցում են հետևյալ բաղադրիչները. բազա (ԵaՏ6), ինդեքս (1ոմ62), մասշտաբ (Տօa16), տեղաշարժ (D1Տք1aօ6ո6ոէ)։ Հիշեցնենք, որ հիշողության սեգմենտային կազմակերպման ժամանակ հասցեն տրվում է սեգմենտ/ընտրիչ (Տ616օէօr) և շեղում (կամ արդյունավետ հասցե) զույգի միջոցով։ 16-բիթանոց հասցեավորման դեպքում արդյունավետ հասցեն բազա - ինդեքս - տեղաշարժ. Բազա Ինդեքս Տեղաշարժ +
+
Նկար 1. Շեղման (կամ արդյունավետ հասցեի) հաշվարկ 16-բիթանոց հասցեավորման դեպքում
Այստեղ որպես բազա կարող են հանդես գալ միայն 8Ճ կամ 8P ռեգիստրները, իսկ որպես ինդեքս` Տ1 կամ D1-ն։ 32-բիթանոց հասցեավորման դեպքում որպես բազա կարող են հանդես գալ ԷՃՃ, Է8Ճ, ԷՇՃ, ԷDՃ, ԷՏ1, ԷD1, ԷՏP, Է8P ռեգիստրները, իսկ որպես ինդեքս` ԷՃՃ, Է8Ճ, ԷՇՃ, ԷDՃ, ԷՏ1, ԷD1, Է8P ռեգիստրները: Բազա
Ինդեքս
ԷՃՃ Է8Ճ ԷՇՃ ԷDՃ ԷՏ1 ԷD1 ԷՏP Է8P
-
ԷՃՃ Է8Ճ ԷՇՃ ԷDՃ ԷՏ1 ԷD1 Է8P
Մասշտաբ
Տեղաշարժ
NՕNԷ
8-բիթ
*
-
16-բիթ 32-բիթ
Նկար 2. Շեղման (կամ արդյունավետ հասցեի) հաշվարկ 32-բիթանոց հասցեավորման դեպքում
Հիմնականում լռությամբ սեգմենտային ռեգիստր է համարվում DՏ-ը, բայց այն դեպքում, երբ որպես բազա օգտագործվում են 8P/Է8P կամ ԷՏP ռեգիստրները, որպես սեգմենտային ռեգիստր լռությամբ վերցվում է ՏՏ-ը։
Ուղղակի հասցեավորում Արդյունավետ հասցեի ձևավորմանը մասնակցում է միայն տեղաշարժը (մ1Տք1aօ6ո6ոէ), որը գրանցվում է մեքենայական հրամանում:
հրաման գործողություն
հիշող. հասցե հիշողություն օպերանդ
Օրինակ ԽՕՕ ՃՃ, DՏ:|1234հ|
1235հ 1234հ
AX
DS
Անուղղակի ռեգիստրային հասցեավորում Այս հասցեավորման դեպքում արդյունավետ հասցեի ձևավորմանը մասնակցում է միայն բազան կամ ինդեքսը: Օրինակ
ԽՕՕ ՃԼ, |8Ճ|
ՃՆ
8X
-
DՏ
Օրինակ
ԽՕՕ ՃԼ, |8P|
ՃՆ
-
ՏՏ
Օրինակ
ԽՕՕ ԷՃՃ, |ԷՇՃ|
ԽՕՕ ՃՃ, |Տ1|
: ԷՃՃ - DWՕRD PTR DՏ:|ԷՇՃ|
: ՃՃ - WՕRD PTR DՏ:|Տ1|
«Բազա - տեղաշարժ» անուղղակի հասցեավորում Այս հասցեավորման դեպքում արդյունավետ հասցեի ձևավորմանը մասնակցում են բազան կամ ինդեքսը և տեղաշարժը (մ1Տք1aօ6ո6ոէ): Օրինակ
ԽՕՕ ՃԼ, |8Ճ - մ1Տք|
ՃՆ մi5ք1aՇ6ո6ոէ
8X
-
DՏ
Օրինակ
ԽՕՕ ՃԼ, |8P - մ1Տք|
ՃՆ մi5ք1aՇ6ո6ոէ BP
-
ՏՏ
Օրինակ ԽՕՕ ՃԼ, |8Ճ| - 4 ԽՕՕ ԷՃՃ, |ԷDՃ - 100|
Նկար 3. 16-բիթանոց հասցեավորման դեպքում «Բազա - տեղաշարժ» արդյունավետ հասցեով ֆիզիկական հասցեի ձևավորումը
Այս հասցեավորումն օգտագործվում է. զանգվածի հետ աշխատելիս, որտեղ տեղաշարժը ցույց է տալիս զանգվածի սկիզբը, իսկ բազայի միջոցով որպես ինդեքս ընտրվում է զանգվածի տարրը (օգտագործվում է, երբ տարրի չափը 2, 4, 8 չէ), գրառման դաշտին դիմելու համար, որտեղ բազան ցույց է տալիս գրառման սկիզբը, իսկ տեղաշարժը` դաշտի սկիզբը։
«(Ինդեքս * մասշտաբ) - տեղաշարժ» անուղղակի հասցեավորում Այս հասցեավորման դեպքում արդյունավետ հասցեից մասնակցում են կա՛մ ինդեքսային ռեգիստրը, կա՛մ ինդեքսային ռեգիստրն ու տեղաշարժը: Մասշտաբն օգտագործվում է 386-երից սկսած։ Օրինակ
ԽՕՕ ԷՃՃ, Ճ|Է8Ճ " 4|
: որտեղ Ճ DD 6, 89,… Այս հասցեավորման եղանակն առաջարկում է արդյունավետ եղանակ` ստատիկ զանգվածի տարրերի հետ աշխատելու համար, երբ տարրի չափը 2, 4 կամ 8 բայթ է։ Տեղաշարժը տեղայնացնում է զանգվածի սկիզբը, իսկ ինդեքսային ռեգիստրը ցույց է տալիս զանգվածի տարրի ինդեքսը։
«Բազա - ինդեքս - տեղաշարժ» անուղղակի հասցեավորում Օրինակ ԽՕՕ DՃ, |8Ճ - D1| ԽՕՕ DՃ, |D1||8Ճ| ԽՕՕ DՃ, |8Ճ||D1| ԽՕՕ DՃ, Ճ|8Ճ||Տ1| Առաջին 3 օրինակներում տեղաշարժը բացակայում է։
Նկար 4. 16-բիթանոց հասցեավորման դեպքում «Բազա - ինդեքս - տեղաշարժ» արդյունավետ հասցեով ֆիզիկական հասցեի ձևավորումը
Երկու ռեգիստրների միաժամանակյա օգտագործումը հնարավորություն է տալիս աշխատելու կա՛մ երկչափ զանգվածի (տեղաշարժը զանգվածի սկզբի հասցեն է), կա՛մ գրառումների զանգվածի (տեղաշարժը գրառման դաշտի շեղումն է) հետ։
«Բազա - ինդեքս * մասշտաբ - տեղաշարժ» (բազաինդեքսային հասցեավորում մասշտաբով) անուղղակի հասցեավորում Օրինակ ԽՕՕ ՃԼ, 20|Է8Ճ " 2 - ԷՇՃ| : գրության ԽՕՕ ՃԼ, |20 - Է8Ճ " 2 - ԷՇՃ| : երեք ձևերը ԽՕՕ ՃԼ, |Է8Ճ " 2 - ԷՇՃ - 20| : համարժեք են։ Հասցեավորման բոլոր բաղադրիչների օգտագործումն արդյունավետ է երկչափ զանգվածի տարրերին դիմելու համար, երբ տարրի չափը 2, 4 կամ 8 բայթ է։
ԱՍԵՄԲԼԵՐ ԼԵԶՈՒ
Ասեմբլեր լեզուն ցածր մակարդակի լեզու է ԷՀՄ միկրոպրոցեսորների, միկրովերահսկիչ սարքերի և ծրագրավորվող այլ սարքերի համար։ Այն մեքենայական հրամանի սիմվոլիկ ներկայացումն է և հատկորոշվում է ԷՀՄ ճարտարապետությամբ։ Ասեմբլեր անվանում են նաև ասեմբլերի թարգմանչին։ Բանավեճը՝ ասեմբլերի կիրառության օգտակարության վերաբերյալ, համեմատած բարձր մակարդակի լեզուների հետ, ներկայումս ևս շարունակվում է։ Ասեմբլեր լեզուն նախընտրում են օգտագործել հետևյալ իրավիճակներում. Ծրագիրն աշխատում է անմիջապես սարքերի հետ (օրինակ՝ դրայվերները, ընդհատումը մշակող ծրագրերը): Անհրաժեշտ է օգտագործել պրոցեսորի հրամաններ, որոնք հասանելի չեն բարձր մակարդակի լեզուների թարգմանիչներին (օօոք116r)։ Օրինակ՝ պտույտի հրամանները, որոնք օգտագործվում են կոդավորման ծրագրերում: Օպտիմիզացումն անհրաժեշտություն է (օրինակ՝ խաղերի ծրագրերում): Գոյություն չունի բարձր մակարդակի լեզու նոր կամ հատուկ պրոցեսորների համար: Անհրաժեշտ է փոփոխել գոյություն ունեցող երկուական կոդը, երբ նրա սկզբնաղբյուր բարձր մակարդակի լեզվով գրված ծրագիրը չկա: Անհրաժեշտ է գրել կոմպիլյատոր (օօոք116r), որը գեներացնելու է ասեմբլեր կոդ (նման աշխատանքի համար պահանջվում է ասեմբլերի լավ իմացություն): 286 ասեմբլեր լեզուն ունի երկու հիմնական շարահյուսություն` Ինթել շարահյուսություն և ՃT&T շարահյուսություն։ Ինթել շարահյուսությունը օգտագործվում է ԽՏ-DՕՏ և W1ոմօwՏ ՕՀ համար, իսկ ՃT&T շարահյուսությունը՝ Սո12 ՕՀ համար։ Արտաքին տեսքով այս երկու շարահյուսությունները տարբերվում են միմյանցից (օրինակ՝
ըստ Ինթել շարահյուսության գրված ‘ԽՕՕ ՃՃ,1’ հրամանը համարժեք է ըստ ՃT&T շարահյուսության գրված ‘ԽՕՕԼ $1, %ԷՃՃ’)։ Մենք կծանոթանանք Ինթել շարահյուսությանը։ Ասեմբլեր լեզուն մեծատառ-փոքրատառերի նկատմամբ ոչ զգայուն (օaՏ6-1ոՏ6ոՏ1է1v6) լեզու է։
Ասեմբլեր ծրագրի ընդհանուր կառուցվածքը Այս բաժնում կդիտարկենք 1Ճ-32 ճարտարապետության ասեմբլեր լեզվով գրված ծրագրի ընդհանուր կառուցվածքը: Կուսումնասիրենք նաև այդ ծրագրերի թարգմանությունը, կապերի խմբագրումը և իրականացումը: Ասեմբլեր ծրագիրը կազմված է նախադասություններից (Տէaէ6ո6ոէ), ընդ որում՝ յուրաքանչյուր տողում գրվում է միայն մեկ նախադասություն։ Կառուցվածքային առումով ասեմբլեր ծրագիրը սեգմենտների համախմբություն է՝ կազմված նախադասություններից։ Յուրաքանչյուր սեգմենտ ունի հետևյալ երեք տիպերից մեկը՝ կոդ (հրամաններ), տվյալներ կամ պահունակ: Ասեմբլեր լեզվի նախադասությունները լինում են չորս տեսակի՝ հրամաններ, հրամանագրեր, մակրոհրամաններ և մեկնաբանություններ: Հրամաններ – ասեմբլեր լեզվի հրամանը մեքենայական հրամանի սիմվոլիկ ներկայացումն է։ Ծրագրի թարգմանության ընթացքում ասեմբլերի հրամանները փոխարինվում են համապատասխան մեքենայական հրամաններով: Հրամանագրեր – հրամանագրերը հրահանգներ են թարգմանչի, խմբագրիչի և բեռնիչի համար: Դրանք չեն թարգմանվում մեքենայական հրամանների: Մակրոհրամաններ – մակրոհրամանները որոշակի ձևով սահմանված նախադասություններ են, որոնք թարգմանության առաջին փուլում փոխարինվում են ուրիշ նախադասություններով:
Մեկնաբանություններ – մեկնաբանությունները կարող են պարունակել կամայական սիմվոլներ: Դրանք անտեսվում են թարգմանչի կողմից: Մեկնաբանությունը նաև կարելի է դիտարկել որպես նախադասության մաս։ Ասեմբլեր հրամանի կառուցվածքը հետևյալն է` |նշիչ:| հրամանինհուշանուն |օպերանդ(ներ)| |; մեկնաբանություն| Քառակուսի փակագծեր պարունակող դաշտերը պարտադիր չեն: Նշիչը անուն է՝ բաղկացած տառերից, թվանշաններից և հատուկ սիմվոլներից՝ 2 . ( _ $ % (կոմպիլյատորից կախված)։ Անունը չի կարող սկսվել թվանշանով (եթե օգտագործված է կետ, այն չպետք է լինի առաջին սիմվոլը)։ Նշիչն օգտագործվում է ծրագրի հիշողության հասցեին սիմվոլիկ անուն տալու համար, որպեսզի հետագայում հնարավոր լինի ըստ անվան դիմում կատարել կոդի նշված հատվածին: Հրամանինհուշանունը նկարագրում է գործողությունը և ներկայացնում է գործողության կոդի սիմվոլիկ անվանումը (օրինակ՝ ՃDD, ԽՕՕ): Օպերանդները գործողությանը մասնակցող անդամներն են։ Ասեմբլեր հրամանը կարող է ունենալ 0-3 օպերանդ։ 2 օպերանդ ունեցող հրամանների համար սահմանված են որոշ սահմանափակումներ: Դրանք են. օպերանդները միաժամանակ չեն կարող լինել հիշողության հասցե (բացի տողային հրամաններից), առաջին օպերանդը չի կարող լինել անմիջական արժեք (բացի ՕՍT հրամանից), օպերանդները պետք է ունենան միևնույն չափը: Մեկնաբանությունը կամայական սիմվոլների համախմբություն է, որն անտեսվում է ասեմբլեր թարգմանչի կողմից։ Մեկնաբանությունը սկսվում է ‘:’ սիմվոլով (մակրոներում կարող է լինել ‘::') և շարունակվում է մինչև տողի վերջը կամ
սկսվում է ՇՕԽԽԷNT Հսիմվոլ» գրառումով և շարունակվում է մինչև որևէ տողում այդ Հսիմվոլ»-ին հանդիպելը։ Ծրագրավորման լավ ոճը ենթադրում է մեկնաբանությունների առկայություն ծրագրում։ ՏTԷՃ ՏԷՕԽԷNT քara Տէaօk ‘Տէaօk’ D8 256 մսք(2)
ՏTԷՃ ԷNDՏ
DՃTՃ ՏԷՕԽԷNT քara քսԵ11օ ‘մaէa’
ՇէՃR D8 'Ճ'
DՃTՃ ԷNDՏ
ՇՕD ՏԷՕԽԷNT քara քսԵ11օ ‘օօմ6’
ԽՃ1N PRՕՇ FՃR
ՃՏՏՍԽԷ ՇՏ:ՇՕD, DՏ:DՃTՃ, ՏՏ:ՏTԷՃ
PՍՏէ DՏ
ՃՕR ՃՃ, ՃՃ
PՍՏէ ՃՃ : մՏ-ի սկզբնարժեքավորում : տվյալների սեգմենտով
: սեգմենտների նկարագրում պարզեցված հրամանագրերով
ԽՕDԷԼ Տոa11
.ՏTՃՇՃ 256 .DՃTՃ
ՇէՃR D8 'Ճ'
.ՇՕDԷ ԽՃ1N: : մՏ-ի սկզբնարժեքավորում տվյալների : սեգմենտով
ԽՕՕ ՃՃ, (մaէa
ԽՕՕ DՏ, ՃՃ
: մ1-ում գտնվող սիմվոլի (‘Ճ’) : արտածում էկրանին
ԽՕՕ ՃՃ, DՃTՃ
ԽՕՕ DՏ, ՃՃ
ԽՕՕ Ճէ, 2
ԽՕՕ DԼ, ՇէՃR
1NT 21է
: մ1-ում գտնվող սիմվոլի(‘Ճ’) : արտածում էկրանին
ԽՕՕ Ճէ, 2
ԽՕՕ DԼ, ՇէՃR
1NT 21է
: վերադարձ DՕՏ
: վերադարձ DՕՏ
RԷT
ԽՃ1N ԷNDP
ՇՕD ԷNDՏ
ԷND ԽՃ1N : ծրագրի ավարտ / մուտքի կետ
ԽՕՕ Ճէ, 4Շէ 1NT 21է ԷND ԽՃ1N : ծրագրի ավարտ /
Նկար 1. Ասեմբլեր ծրագրի օրինակ
:մուտքի կետ
Նշված ծրագիրն էկրանին է արտածում ՇէՃR փոփոխականում գտնվող սիմվոլը։ Ներկայացված է նաև ծրագրի սեգմենտների նկարագրման պարզեցված հրամանագրերով տարբերակը: Ծրագիրը կազմված է պահունակի (Տէ6k սեգմենտ կամ .ՏTՃՇՃ տողը), տվյալների (մaէa սեգմենտ կամ .DՃTՃ և նրան հաջորդող տողը) և կոդ (օօմ սեգմենտ կամ .ՇՕDԷ) սեգմենտներից։ Օպերանդը կարող է տրվել արտահայտության տեսքով։ Ասեմբլեր արտահայտությունը օպերանդների և գործողությունների համախմբություն է։ Գործողությունները լինում են թվաբանական, տրամաբանական, համեմատության և այլն։ Օպերանդը կա՛մ հաստատուն է, կա՛մ սահմանված անուն է, կա՛մ՝ արդեն սահմանված արտահայտություն։ Արտահայտության արժեքը հաշվարկվում է թարգմանության ժամանակ։ Օրինակ՝ ԽՕՕ ՃԼ, 90 ԽՕD 7 ԽՕՕ ՃՃ, 1234հ ՃND 4321հ Գործողություն " / ԽՕD
Շարահյուսություն - Հարտ» - Հարտ» Հարտ» - Հարտ» Հարտ» - Հարտ» Հարտ» " Հարտ» Հարտ» / Հարտ» Հարտ» ԽՕD Հարտ»
Նկարագրություն Ունար մինուս Գումարում Հանում Բազմապատկում Ամբողջ բաժանում Մնացորդ
Նկար 2. Թվաբանական գործողությունների աղյուսակ Գործողություն
Շարահյուսություն
ՏէR
Հարտ» ՏէR Հհաշվիչ»
ՏէԼ
Հարտ» ՏէR Հհաշվիչ»
NՕT ՃND ՕR ՃՕR
NՕT Հարտ» Հարտ» ՃND Հարտ» Հարտ» ՕR Հարտ» Հարտ» ՃՕR Հարտ»
Նկարագրություն Բիթային աջ տեղաշարժ հաշվիչի չափով Բիթային ձախ տեղաշարժ հաշվիչի չափով Տրամաբանական ժխտում Տրամաբանական aոմ Տրամաբանական օr Տրամաբանական 2օr
Նկար 3. Տրամաբանական գործողությունների աղյուսակ
Գործողություն
Շարահյուսություն
ԷՕ
Հարտ» ԷՕ Հարտ»
NԷ
Հարտ» NԷ Հարտ»
ԼT
Հարտ» ԼT Հարտ»
ԼԷ
Հարտ» ԼԷ Հարտ»
ՕT
Հարտ» ՕT Հարտ»
ՕԷ
Հարտ» ՕԷ Հարտ»
Նկարագրություն Ճիշտ է (0FFհ), եթե հավասար են (6զսa1), սխալ՝ հակ. դեպքում Ճիշտ է (0FFհ), եթե հավասար չեն (ոօէ 6զսa1), սխալ՝ հակ. դեպքում Ճիշտ է (0FFհ), եթե փոքր է (16ՏՏ), սխալ՝ հակ. դեպքում Ճիշտ է (0FFհ), եթե փոքր է կամ հավասար (16ՏՏ օr 6զսa1), սխալ՝ հակ. դեպքում Ճիշտ է (0FFհ), եթե մեծ է (ջr6aէ6r), սխալ՝ հակ. դեպքում Ճիշտ է (0FFհ), եթե մեծ է կամ հավասար (ջr6aէ6r օr 6զսa1), սխալ՝ հակ. դեպքում
Նկար 4. Համեմատության գործողությունների աղյուսակ Գործողություն
Շարահյուսություն
ՏԷՕ
ՏԷՕ հասցե
Նկարագրություն Վերադարձնում է հասցեի սեգմենտ բաղադրիչը
ՕFFՏԷT
ՕFFՏԷT հասցե
Վերադարձնում է հասցեի շեղում բաղադրիչը
Tէ1Տ
Tէ1Տ
PTR
Հտիպ» PTR
Ստեղծում է օպերանդ, որի հասցեն հաշվիչի ընթացիկ արժեքն է Ստեղծում է արգումենտ, որի հասցեն տրված տիպի տրված արտահայտության արժեքն է
Նկար 5. Հասցեավորման գործողությունների աղյուսակ
Ասեմբլեր ծրագրի թարգմանությունը Այս բաժնում կուսումնասիրենք ասեմբլեր լեզվով գրված ծրագրի ստեղծման պրոցեսը: Կնկարագրենք ինչպես ասեմբլեր լեզվով գըրված ծրագիրը թարգմանել մեքենայական հրամանների, աշխատեցնել այն և ուղղել հայտնաբերված սխալները:
Մենք կդիտարկենք ասեմբլեր ծրագրի ստեղծումը ԽՏ-DՕՏ օպերացիոն համակարգում: Ներկայիս օպերացիոն համակարգերում հնարավորություն կա ԽՏ-DՕՏ օպերացիոն համակարգը աշխատեցնելու էմուլյատորների միջոցով: Մենք կօգտագործենք DՕՏ8օ2 էմուլյատորը: Ասեմբլեր ծրագրի թարգմանության, կապերի ստեղծման և սխալների ուղղման համար կօգտագործենք TՃՏԽ (TսrԵօ ՃՏՏ6ոԵ16r) փաթեթը: Այժմ, օգտագործելով DՕՏ8օ2 էմուլյատորը և TՃՏԽ փաթեթի որոշ ծրագրեր, գրենք ասեմբլեր ծրագիր և այն աշխատեցնենք: Ծրագրի ստեղծման պրոցեսը բաժանվում է չորս քայլի (Նկար 1):
Նկար 1. Ասեմբլեր ծրագրի ստեղծման պրոցեսի սխեմա
Որպես օրինակ` դիտարկենք ծրագիր, որը էկրան է դուրս բերում “է611օ Wօr1մ!” տողը: Որևէ տեքստային խմբագրիչով (օրինակ ոօէ6քaմ.626) գրենք ասեմբլեր ծրագրի տեքստ, որը կիրառություն ստեղծելուց հետո աշխատեցնելիս արտածում է “է611օ Wօr1մ!” տողը: Նշված ծրագրի տեքստը կլինի հետևյալը.
.MՕԾEԼ ՏMՃԼԼ
.ՏTՃԸK 100հ .ԾՃTՃ ո6ՏՏaջ6
D8
'է611օ Wօr1մ!', 13, 10, '$'
.ԸՕԾE ՏTՃRT:
ԽՕՕ ՃՃ, (DՃTՃ
: տվյալների սեգմենտի հասցեն : հիշվում է DՏ սեգմենտային : ռեգիստրում
ԽՕՕ DՏ, ՃՃ
ԽՕՕ DՃ, ՕFFՏԷT ո6ՏՏaջ6 : ո6ՏՏaջ6 տողի շեղումը հիշվում : է DՃ ռեգիստրում : ո6ՏՏaջ6 տողը էկրան է
ԽՕՕ Ճէ, 09հ
: արտածվում 1NT 21հ
ԽՕՕ ՃՃ, 4Շ00հ
1NT 21հ
ENԾ ՏTՃRT
: աշխատանքի/ ծրագրի ավարտը
Այս ֆայլն անվանենք է611օW.aՏո: 2-րդ քայլը կատարելու համար անհրաժեշտ է օպերացիոն համակարգի ֆայլային համակարգում ունենալ մի թղթապանակ, որում կլինեն է611օW.aՏո ֆայլը, TՃՏԽ փաթեթի TaՏո.626, T11ոk.626, Tմ.626, Rէո.626 ծրագրերը, և այդ թղթապանակը հասանելի կլինի DՕՏ8օ2 էմուլյատորին: Ենթադրենք, որ նշված ծրագրերը տեղադրված են D:\ՃՏո\Wօrk թղթապանակում: DՕՏ8օ2-ին այդ թղթապանակի հասանելիության համար անհրաժեշտ է այն կցել DՕՏ-ի ֆայլային համակարգին: Դա արվում է հետևյալ հրամանով.
ւouոt D D:\45ւ\Wo7k
Այս հրամանի աշխատանքից հետո DՕՏ-ի ֆայլային համակարգի D մասը ցույց կտա D:\ՃՏո\Wօrk թղթապանակի վրա: Այժմ D-ն դարձնենք ընթացիկ աշխատանքային թղթապանակ ‘մ:’ հրամանի միջոցով: Ինչպես նշված է Նկար 1-ում, ծրագրի տեքստից թարգմանություն անելու համար անհրաժեշտ է աշխատեցնել TaՏո.626 ծրագիրը: TaՏո.626-ն թարգմանիչ է, որը ասեմբլեր լեզվով գրված տեքստը թարգմանում է մեքենայական հրամանների: Թարգմանության ընթացքում ստեղծվում են օբյեկտային մոդուլի և ցանկության դեպքում նաև լիսթինգի ֆայլերը: Օբյեկտային մոդուլը պարունակում է մեքենայական հրամանները և լրացուցիչ տվյալներ T11ոk.626 ու Tմ.626 ծրագրերի համար: Լիսթինգի ֆայլը պարունակում է համարակալված մուտքային ասեմբլեր ծրագրի տեքստը՝ համալրված այլ տվյալներով (մեքենայական հրամաններ, սիմվոլային աղյուսակ, խմբերի և սեգմենտների մասին տեղեկատվություն): Եթե թարգմանության ընթացքում սխալներ են հայտնաբերվում, ապա լիսթինգի ֆայլում դրանց մասին նշվում է: Այժմ կատարենք 2-րդ քայլը է611օW.aՏո ասեմբլեր ծրագրի տեքստի համար: 1ճ5ւ.օxօ /zi /l HօlloW.ճ5ւ Այս հրամանի արդյունքում էկրանին հայտնվում է էaՏո.626-ի աշխատանքը նկարագրող տողերի հաջորդականություն: Եթե ծրագիրը սխալներ է պարունակում, ապա թարգմանիչն էկրանին դուրս է բերում “Faէa1 6rrօr”, “Էrrօr” կամ “Warո1ոջ” բառերով սկսվող տողեր: Վերը նշված հրամանում /1 պարամետրը նշանակում է, որ էaՏո.626-ն պետք է ստեղծի նաև լիսթինգի ֆայլը: է611օW.aՏո ֆայլի թարգմանության արդյունքում ստացված լիսթինգի ֆայլն ունի հետևյալ տեսքը.
TսrԵօ ՃՏՏ6ոԵ16r
Օ6rՏ1օո 4.1
11/07/15 13:54:37
Paջ6 1
է611օW.aՏո 13, 10, Տ6ջո6ոէ r6ջ1Տէ6r մ2 r6ջ1Տէ6r ո6ՏՏaջ6
.ոօմ61 Տոa11 .Տէaօk 100հ
0000 48 65 6Շ 6Շ 6F 20 6F 72 6Շ 64 21 0D 000F 0000 88 0000Տ
.մaէa 57- ո6ՏՏaջ6 մԵ
'է611օ
Wօr1մ!',
0Ճ-
.օօմ6 Տէarէ: ոօv a2, (մaէa
: Տէօr6 aմմr6ՏՏ օf մaէa Տ6ջո6ոէ 1ո DՏ
0003 8Է D8 0005 8Ճ 0000r
ոօv մՏ, a2 ոօv մ2, օffՏ6է ո6ՏՏaջ6 : Տէօr6 օffՏ6է օf ո6ՏՏaջ6 1ոէօ
0008 84 09
ոօv aհ, 09հ
000Ճ ՇD 21 000Շ 88 4Շ00 000F ՇD 21
1ոէ 21հ ոօv a2, 4օ00հ 1ոէ 21հ 6ոմ Տէarէ
:
Շօմ6
22DՃTԷ
22F1ԼԷNՃԽԷ
22T1ԽԷ
22ՕԷRՏ1ՕN
(3281T (ՇՕDԷ
(ՇՕDԷՏ17Է
(ՇPՍ (ՇՍRՏԷՕ (DՃTՃ
(DՃTՃՏ17Է
T7ք6 T62է T62է T62է NսոԵ6r 040Ճ T62է T62է T62է T62է T62է _TԷՃT T62է T62է
մ1Տք1a71ոջ
: Էոմ օf 626օսէaԵ16
Տ7ոԵօ1 TaԵ16 Տ7ոԵօ1 Naո6
fօr
Օa1ս6 "11/07/15" "է611օW " "19:57:22" _TԷՃT 0101է DՕRՕՍP
էհ6
(F1ԼԷNՃԽԷ
(1NTԷRFՃՇԷ
(ԽՕDԷԼ (ՏTՃՇՃ
(WՕRDՏ17Է
ԽԷՏՏՃՕԷ ՏTՃRT
T62է T62է 87է6
T62է էԷԼԼՕW T62է 000է DՕRՕՍP T62է DՕRՕՍP:0000 N6ar _TԷՃT:0000
ՕrօսքՏ & Տ6ջո6ոէՏ
81է Տ126 Ճ11ջո ՇօոԵ1ո6 Շ1aՏՏ
DՕRՕՍP ՏTՃՇՃ _DՃTՃ _TԷՃT
Օrօսք 16 0100 Para Տէaօk ՏTՃՇՃ 16 000F Wօrմ
PսԵ11օ DՃTՃ
16 000Շ Wօrմ
PսԵ11օ ՇՕDԷ
Լիսթինգի ֆայլը բաղկացած է հետևյալ մասերից. էջի վերնագիր, ֆայլի վերնագիր, սկզբնական կոդին համապատասխանող տողեր, հաղորդագրություն` սխալների մասին, սիմվոլների կամ խաչաձև հղումների աղյուսակ: Լիսթինգի ֆայլում սկզբնական կոդին համապատասխանող տողերն ունեն հետևյալ կառուցվածքը. տողի_համար 1 շեղում մեքենայական_կոդ ասեմբլեր_հրաման
Տողի_համար – լիսթինգի ֆայլում տողի համարն օգտագործվում է սխալները տեղայնացնելու համար: 1 - սյունը տվյալ օրինակում բացակայում է։ Այն նշում է ներառվող ֆայլի (1ոօ1սմ6 ֆայլ) կամ մակրոյի ներդրվածությունը։ Առաջին ներդրվող ֆայլը ստանում է 1 մակարդակ։ Եթե այդ ներդրվող ֆայլը ներառում է մեկ այլ ֆայլ, ապա այն կստանա 2 մակարդակ և այդպես շարունակ։ Մակարդակների նշման նույն մեխանիզմը կիրառվում է մակրոների ներդրվածությունը ցուցադրելու համար։
Շեղում – կոդ սեգմենտի սկզբի նկատմամբ հերթական հրամանի բայթերով արտահայտված շեղումը: Այս շեղումը նաև անվանում են հասցեի հաշվիչ: մեքենայական_կոդ – նույն տողի ասեմբլեր հրամանի մեքենայական ներկայացումն է: Սիմվոլների աղյուսակը (Տ7ոԵօ1 էaԵ16) ծրագրի բոլոր սիմվոլների ցուցակն է այբբենական կարգով։ Այն պարունակում է սիմվոլի անունը, տիպը, արժեքը։ Վերոհիշյալ լիսթինգի օրինակը սխալներ չի պարունակում։ Լիսթինգի ֆայլն օգտագործվում է ծրագրում սխալների հայտնաբերման համար: Սխալներն ուղղելուց հետո էaՏո.626-ի աշխատանքի արդյունք հանդիսացող օբյեկտային մոդուլը (է611օW.օԵյ ֆայլը) պարունակում է մեքենայական հրամաններ: Սակայն այն դեռ պատրաստ չէ աշխատանքի համար: Անհրաժեշտ է կատարել Նկար 1-ում պատկերված 3-րդ քայլը: Կապերի խմբագրիչը մուտքում ստանում է մեկ կամ մի քանի օբյեկտային մոդուլ և դրանք միավորում մեկ կիրառության մեջ: T11ոk.626 ծրագրի մուտքային պարամետրերի բազմությունը տեսնելու համար բավական է այն կանչել առանց որևէ պարամետրի: Մեր օրինակի համար T11ոk.626-ն կանչենք հետևյալ պարամետրերով` T11ոk.626 /v է611օW.օԵյ Արդյունքում ստացվում է է611օW.626 կիրառությունը: Եթե է611օW.626 կիրառության աշխատանքի ընթացքում հայտնաբերվում են սխալներ, ապա դրանց պատճառը կարելի է գտնել որևէ մ6Եսջջ6r-ով: Մենք կդիտարկենք TսrԵօ D6Եսջջ6r-ի (Tմ.626) աշխատանքը: Tմ.626 ծրագիրը հնարավորություն է տալիս քայլ առ քայլ կատարելու տրված ծրագիրը և ամեն քայլից հետո տեսնելու ու փոփոխելու օգտագործողի ռեգիստրները, կիրառությանը հասանելի հիշողությունը և մեքենայական կոդը: Այդպես հնարավոր է դառնում
գտնել ծրագրում սխալի տեղը և պատճառը: Սխալն ուղղելուց հետո անհրաժեշտ է կրկին անցնել վերը նշված 1-ից 3-րդ քայլերով ու ստեղծել նոր կիրառություն: Tմ.626-ի միջոցով կիրառությունը աշխատեցնելու համար անհրաժեշտ են հետևյալ 3 պայմանները. 1. Ծրագրի տեքստում պետք է հայտարարված լինի նշիչ ծրագրի առաջին հրամանի համար: Այդ նշիչի անունը պետք է նշված լինի ծրագրի տեքստի վերջում որպես ԷND հրամանագրի արգումենտ: 2. Ծրագրի թարգմանության համար ցանկալի է տրված լինի /21 պարամետրը: Սա թարգմանչին թույլ է տալիս պահել սիմվոլային անունների և կոդ սեգմենտում դրանց շեղումների կապը: Հարկ է նշել, որ եթե /21 պարամետրը տրված չլինի, ապա Tմ.626-ն սիմվոլային անունների փոխարեն ցույց կտա դրանց շեղումները: 3. Կապերի խմբագրման համար պետք է տրված լինի /v պարամետրը: Սա թույլ է տալիս պահպանել թարգմանության ժամանակ ստեղծված տվյալները: Նշված քայլերը կատարելուց հետո է611օW.626-ն կարելի է աշխատեցնել Tմ.626-ի միջոցով հետևյալ կերպ. Tմ.626 է611օW.626 Այս հրամանը կբացի Tմ.626 ծրագրի պատուհանը (Նկար 2): Տէarէ նշիչի տակ գտնվող եռանկյունը ցույց է տալիս հաջորդ հրամանը, որը պետք է կատարվի: F8 սեղմելու դեպքում կկատարվի այդ հրամանը, որից հետո ղեկավարումը կրկին կտրվի Tմ.626-ին, որպեսզի հնարավոր լինի տեսնել համակարգի վիճակն այդ քայից հետո:
Նկար 2. 1աrե0Deեասսer ծրագրի պատուհանը
Համակարգի վիճակը տեսնելու համար կան մի քանի պատուհաններ, որոնք կարելի է բացել Օ16w ընտրացուցակից: Դիտարկենք դրանցից մի քանիսը: 1. ԸPՍ պատուհանում ցույց է տրվում ծրագրի մեքենայական կոդը: 2. R6ջi5է6ո5 պատուհանում ցույց են տրվում ընդհանուր օգտագործման ռեգիստրների արժեքները: 3. F1aջ5 պատուհանում ցույց են տրվում դրոշների արժեքները: 4. ՏէaՇk պատուհանում ցույց է տրվում պահունակ սեգմենտի պարունակությունը: 5. Ծսոք պատուհանն արտապատկերում է ձախ կողմում նշված հասցեների պարունակությունը: Tմ.626-ի աշխատանքը դադարեցնելու համար կարելի է սեղմել Ճ1է-Ճ:
ՄԵՔԵՆԱՅԱԿԱՆ ՀՐԱՄԱՆԻ ՖՈՐՄԱՏԸ
Հրամանը թարգմանվելուց կարող է ստացվել 1-ից մինչև 15 բայթ: Մեքենայական հրամանը կազմված է հետևյալ դաշտերից. հրամանի նախդիր/1ոՏէrսօէ1օո Pr6f12 (մինչև 4 նախդիր, յուրաքանչյուրը՝ 1 բայթ), գործողության կոդ/Օքօօմ6 (1 կամ 2 բայթ), ԽօմR/Խ բայթ, Տ18 բայթ (Տօa16-1ոմ62-8aՏ6), տեղաշարժ/D1Տք1aօ6ո6ոէ (0,1, 2 կամ 4 բայթ), անմիջական օպերանդ/1ոո6մ1aէ6 (0,1, 2 կամ 4 բայթ): Նշված դաշտերից պարտադիր է միայն գործողության կոդի դաշտը։
Նկար 1. 11-32 մեքենայական հրամանի ֆորմատը
Հրամանի նախդիր – օգտագործվում է հրամանի մեջ եղած որոշ դաշտեր փոխելու համար: Նախդիրները բաժանվում են 4 խմբի. 1. սեգմենտի վերաբեռնում (Տ6ջո6ոէ օv6rr1մ6 քr6f126Տ), 2. օպերանդի չափի վերաբեռնում (66է – Օք6raոմ-Տ126 օv6rr1մ6 քr6f12), 3. հասցեի չափի վերաբեռնում (67է – Ճմմr6ՏՏ-Տ126 օv6rr1մ6 քr6f12),
4. կապուղու (օօոքսէ6r ԵսՏ, шина) փակման և կրկնման նախդիրներ (F0է-Լօօk քr6f12 aոմ r6ք6aէ քr6f126): Սեգմենտային ռեգիստրի վերաբեռնում կատարվում է, եթե հրամանում բացահայտ նշված է սեգմենտային ռեգիստրը: Օրինակ ԽՕՕ ՃՃ, ՕՏ:T : մՏ սեգմենտային ռեգիստրի փոխարեն կվերցնի ՕՏ-ը Նշված հրամանում կատարված է լռությամբ գործող DՏ սեգմենտային ռեգիստրի վերաբեռնում ՕՏ սեգմենտային ռեգիստրով։ Թարգմանված մեքենայական կոդը կպարունակի ՕՏ սեգմենտային ռեգիստրի կոդը որպես 1) տեսակի նախդիր։ Եթե սեգմենտը 16-բիթանի է, ապա լռությամբ օպերանդի չափը և հասցեավորման եղանակը 16-բիթանի են։ 32-բիթանոց սեգմենտի դեպքում լռությամբ օպերանդի չափը և հասցեավորման եղանակը 32-բիթանի են։ Լռությամբ օպերանդի կամ հասցեավորման չափը փոխելու համար օգտագործվում են օպերանդի չափի վերաբեռնման և հասցեավորման չափի վերաբեռնման նախդիրները։ Կրկնության նախդիր – հրամանի կրկնման նախդիրն օգտագործվում է տողերի մշակման հրամաններում, որոնց օգնությամբ հրամանը կարող է կրկնվել մեկից ավելի անգամ: Կապուղու փակում – այս նախդիրն օգտագործվում է միայն որոշակի հրամաններից առաջ: Այլ հրամանների մեջ օգտագործելը կհանգեցնի սխալի: Գործողության կոդ – գործողության կոդը զբաղեցնում է մեկ կամ 2 բայթ։ Այն կարող է ունենալ 3-բիթանոց ընդլայնում, որը գրանցվում է ԽօմR/Խ բայթում։ Mօմ R/M բայթ – ոօմ R/ո-ը բաժանվում է երեք մասի:
Խ(օ
Էօg/ՕpՇ(օօ
Է/Խ
Խօմ-ը և R/Խ-ը միասին որոշում են հասցեավորման եղանակները (32 հնարավոր արժեք՝ 8 ռեգիստր և 24 հասցեավորման եղանակ)։ 7օ9/opոo4օ դաշտը որոշում է կա՛մ ռեգիստրի կոդը, կա՛մ գործողության կոդի ընդլայնումը։ 7/ւ դաշտը կարող է որոշել ռեգիստր կամ միավորված ոօմ դաշտի հետ հասցեավորման եղանակը։ 16-բիթանոց հասցեավորման դեպքում ոօմ դաշտի նշանակությունը հետևյալն է. 00 – օգտագործված է հիշողության հասցեավորում՝ առանց տեղաշարժի (հրամանի մեջ տեղաշարժ դաշտը բացակայում է), 01 – օգտագործված է հիշողության հասցեավորում 1-բայթանի տեղաշարժով (հրամանի մեջ տեղաշարժը 1 բայթ է), 10 – օգտագործված է հիշողության հասցեավորում երկու բայթանի տեղաշարժով, 11 – ռեգիստրային կամ անմիջական հասցեավորում: r6ջ
ՃԼ ՃՃ ԷՃՃ
ՇԼ ՇՃ ԷՇՃ
DԼ DՃ ԷDՃ
8Լ 8Ճ Է8Ճ
Ճէ ՏP ԷՏP
2-ական կոդը Աղյուսակ 1. Ռեգիստրների կոդերի աղյուսակ R/M
Mօմ - 00
|8Ճ - Տ1| |8Ճ - D1| |8P - Տ1| |8P - D1| |Տ1| |D1| Ուղղակի հասցեավորում
|8Ճ|
Mօմ - 01
|8Ճ - Տ1| - մ8 |8Ճ - D1| - մ8 |8P - Տ1| - մ8 |8P - D1| - մ8 |Տ1 | - մ8 |D1 | - մ8 |8P | - մ8 |8Ճ | - մ8
Աղյուսակ 2. Արդյունավետ հասցեի հաշվարկ
Շէ 8P Է8P
Dէ Տ1 ԷՏ1
8է D1 ԷD1
Mօմ - 10
|8Ճ - Տ1| - մ16 |8Ճ - D1| - մ16 |8P - Տ1| - մ16 |8P - D1| - մ16 |Տ1| - մ16 |D1| - մ16 |8P| - մ16 |8Ճ| - մ16
Տ1B դաշտ – այս դաշտն օգտագործվում է միայն 32-բիթանոց հասցեավորման դեպքում և կազմված է մասշտաբ (2 բիթ), ինդեքս (3 բիթ) և բազա (3 բիթ) դաշտերից։ Մասշտաբ դաշտը որոշում է մասշտաբային գործակիցը: Այն ընդունում է 4 հնարավոր արժեքներ, որոնց նշանակությունը հետեվյալն է. 00 – մասշտաբը 1 է, 01 – մասշտաբը 2 է, 10 – մասշտաբը 4 է, 11 – մասշտաբը 8 է: Ինդեքս և բազա - համապատասխանաբար որոշում են ինդեքսային և բազային ռեգիստրները։
Խնդիրների լուծման օրինակներ Դիտարկենք 16-բիթանոց հասցեավորման մի քանի օրինակներ: Խնդիր Որոշել հետևյալ հրամանների մեքենայական կոդը՝ օգտվելով գումարման գործողության (4DD) կոդային աղյուսակից։ Կոդային աղյուսակում գործողության կոդին հաջորդող նշանների նշանակությունը հետևյալն է. “/r” – մեքենայական հրամանի մեջ գործողության կոդի դաշտին հետևում է ԽօմR/Խ բայթը, 1Ե – անմիջական 1-բայթանի օպերանդ, 1w – անմիջական 2-բայթանի օպերանդ, 1մ – անմիջական 4-բայթանի օպերանդ, /ո – գործողության կոդի ո ընդլայնում:
Գործողության կոդ 04 1Ե 05 1w 05 1մ 80 / 0 1Ե 81 / 0 1w 81 / 0 1մ
Հրաման ՃDD ՃԼ, 1ոո8 ՃDD ՃՃ, 1ոո16
ՃDD ԷՃՃ, 1ոո32
ՃDD r/ո8, 1ոո8 ՃDD r/ո16, 1ոո16 ՃDD r/ո32, 1ոո32
83 / 0 1Ե
ՃDD r/ո16, 1ոո8
83 / 0 1Ե
ՃDD r/ո32, 1ոո8
00 / r 01 / r 01 / r 02 / r 03 / r 03 / r
ՃDD r/ո8, r8 ՃDD r/ո16, r16 ՃDD r/ո32, r32 ՃDD r8, r/ո8 ՃDD r16, r/ո16 ՃDD r32, r/ո32
Նկարագրություն ՃԼ - ՃԼ - 1ոո8 ՃՃ - ՃՃ - 1ոո16
ԷՃՃ - ԷՃՃ - 1ոո32
r/ո8 - r/ո8 - 1ոո8 r/ո16 - r/ո16 - 1ոո16 r/ո32 - r/ո32 - 1ոո32 r/ո16 - r/ո16 - 1ոո8 (1ոո8-ը նշանով թիվ է) r/ո32 - r/ո32 - 1ոո8 (1ոո8-ը նշանով թիվ է) r/ո8 - r/ո8 - r8 r/ո16 - r/ո16 - r16 r/ո32 - r/ո32 - r32 r8 - r8 - r/ո8 R16 - r16 - r/ո16 R32 - r32 - r/ո32
Աղյուսակ 3. 1DD հրաման
1. ՃԾԾ Ծ1, ԾՃ
Լուծում Նշված հրամանն ունի ՃDD r16, r16 տեսքը: Հետևաբար, ըստ աղյուսակի, այն ունի 01/r կամ 03/r գործողության կոդը: Առաջին դեպքում ընդունիչ օպերանդը r/ո16-ն է, իսկ երկրորդ դեպքում r/ո16-ը աղբյուր օպերանդ է։ Ընտրենք նվազագույն կոդը՝ 01։ Քանի որ 01 գործողության կոդի դաշտին հետևելու է ԽօմR/Խ բայթը, կոդավորենք այն։ Խօմ դաշտը կունենա 11 արժեք, քանի որ տվյալ դեպքում օգտագործված է ռեգիստրային հասցեավորում։ D1 ռեգիստրի կոդը 111 է, իսկ DՃ–ինը՝ 010 (տե՛ս Աղյուսակ 1-ը):
Քանի որ D1-ն ընդունիչ օպերանդն է, այն կգրանցվի R/Խ դաշտում, իսկ DՃ-ի կոդը կգրանցվի R6ջ/ՕքՇօմ6 դաշտում։ Այսպիսով՝ կունենանք. Խօմ DՃ D1 Պատասխան ՃDD DՃ, D1 հրամանի մեքենայական կոդը 16-ական համակարգով կլինի 01 D7 հ, որտեղ՝ 01 – գործողության կոդ (ՕքՇօմ6) է, D7 – ԽօմR/Խ բայթն է, 2. ՃԾԾ ԸՃ, |BՃ - 7| Լուծում Տրված հրամանն ունի հետևյալ շարահյուսությունը. ՃDD r16, ո16 Հետևաբար, ըստ աղյուսակի, այն ունի 03 գործողության կոդ (համապատասխանում է աղյուսակի 03/r r16, r/ո16 տողին), և տվյալ հրամանի մեքենայական կոդը բաղկացած է գործողության կոդի (03), ԽօմR/Խ բայթի և 8-բիթանոց (7) տեղաշարժի դաշտերից։ Ստանանք ԽօմR/Խ բայթի արժեքը։ Տվյալ դեպքում Խօմ դաշտի արժեքը կլինի 01, քանի որ |8Ճ - 7| հասցեավորման մեջ մասնակցում է 8-բիթանոց տեղաշարժ։ ՇՃ ռեգիստրի կոդը, ըստ աղյուսակի, 001 է, իսկ |8Ճ| - մ8 հասցեավորման եղանակինը՝ 111։ Խօմ
ՇՃ
|8Ճ|
Պատասխան ՃDD ՇՃ, |8Ճ - 7| հրամանի մեքենայական կոդը 16-ական համակարգով՝ 03 8F 07հ , որտեղ՝ 03 – գործողության կոդ (Օքօօմ6), 8F – ԽօմR/Խ,
07 – տեղաշարժ (D1Տք1aօ6ո6ոէ): 3. ՃԾԾ BՃ, 5 Լուծում ՃDD 8Ճ, 5 հրամանն ունի հետևյալ շարահյուսությունը՝ ՃDD r16, 1ոո8, որին համապատասխանում է 83 /0 1Ե կոդը։ Տվյալ դեպքում գործողության կոդն ունի ընդլայնում՝ 0: 8Ճ ռեգիստրի կոդը 011 է։ 1Ե նշանակում է մեքենայական կոդում մասնակցելու է անմիջական օպերանդ (5)։ Խօմ-ը կունենա 11 արժեք, քանի որ տվյալ դեպքում օգտագործված է անմիջական հասցեավորում. Խօմ
Օքօօմ6
8Ճ
Պատասխան ՃDD 8Ճ, 5 հրամանի մեքանայական կոդը 16-ական համակարգով ստացվեց՝ 83 Շ3 05հ: 83 – գործողության կոդ (Օքօօմ6), Շ3 – ԽօմR/Խ, 05 – անմիջական օպերանդ (1ոո1մ1aէ6): 4. ՃԾԾ ԾՃ, |BՃ - Տ1| Լուծում ՃԾԾ ԾՃ, |BՃ - Տ1| ՃDD r16, ո16 03/r r16, r/ո16 -» 03 10հ Պատասխան 03 10հ 5. ՃԾԾ ՃՃ, |Տ1| Լուծում ՃDD ՃՃ, |Տ1| -» 00000011 00000100 - 03 04 հ
Պատասխան 03 04հ 6. ՃԾԾ |BՃ||Ծ1| - 1234հ, ՃՃ Լուծում ՃDD |8Ճ||D1| - 1234հ, ՃՃ -» 00000001 10000001 __ __ հ -» 01 81 34 12հ Պատասխան 01 81 34 12հ
Խնդիրներ և վարժություններ 1. Ստանալ կոդը. 1) ՃDD 2) ՃDD 3) ՃDD 4) ԽՕՕ 5) ՏՍ8 6) ՏՍ8 7) ՏՍ8
հետևյալ ասեմբլեր հրամանների մեքենայական ՇՃ, 7 8Ճ, |Տ1 - 300հ| |8Ճ|, ՇՃ DՃ, |8Ճ - Տ1 - 10| ՇՃ, ՃՃ DՃ, 200 DՃ, |Տ1 - 100հ|
ԻՆԹԵԼ 286 ՊՐՈՑԵՍՈՐԻ ՀՐԱՄԱՆՆԵՐԻ ՀԱՄԱԿԱՐԳԸ:
ՈՒՆԻՎԵՐՍԱԼ ՀՐԱՄԱՆՆԵՐ
1Ճ-32 հրամանները բաժանվում են հետևյալ հիմնական խմբերի. ընդհանուր օգտագործման, 287 FPՍ, Ինթել ԽԽՃ տեխնոլոգիայի, ՏՏԷ ընդլայնումներ, ՏՏԷ2 ընդլայնումներ, համակարգային: Կուսումնասիրենք միայն ընդհանուր օգտագործման հրամանները։
Ընդհանուր օգտագործման հրամաններ Այս հրամանները կատարում են տվյալների տեղափոխության, թվաբանական, տրամաբանական և տողային գործողություններ, որոնք ծրագրավորողներն օգտագործում են կիրառություններ և համակարգային ծրագրային ապահովում գրելու համար։ Այս խմբի հրամանները գործողություններ են կատարում հիշողության, ընդհանուր օգտագործման ռեգիստրների և դրոշների հետ։ Այս խումբը բաղկացած է հետևյալ ֆունկցիոնալ ենթախմբերից. 1. տվյալների տեղափոխության հրամաններ, 2. երկուական թվաբանության հրամաններ, 3. տասական թվաբանության հրամաններ, 4. տրամաբանական հրամաններ, 5. տեղաշարժի և պտույտի հրամաններ, 6. բիթերի և բայթերի հետ աշխատող հրամաններ, 7. դրոշների հետ աշխատող հրամաններ, 8. տողային հրամաններ,
9. ղեկավարությունը փոխանցող հրամաններ, 10.այլ հրամաններ:
Տվյալների տեղափոխության հրամաններ Տվյալների տեղափոխության հրամանները տեղափոխում են տվյալները հիշողության հասցեների, ընդհանուր օգտագործման ռեգիստրների և սեգմենտային ռեգիստրների միջև։ Այս խմբի հրամանները նաև իրականացնում են հատուկ գործողություններ, ինչպիսիք են՝ պայմանական տեղաշարժը, պահունակի կամ կայանի (քօrէ, պորտ) հետ աշխատանքը և տվյալների ձևափոխությունը։ Տեղափոխության կարող է ենթարկվել բայթը, բառը կամ կրկնակի բառը։ Օպերանդները պետք է լինեն նույն չափի։ Այս խմբի հրամանները չեն ազդում դրոշների վրա։ ԽՕՕ ՇԽՕՕ22
Տեղափոխում / Խօv6 մaէa Պայմանական տեղաշարժ, եթե 22 պայմանը տեղի ունի /Շօոմ1է1օոa1 ոօv6 1f 22 ՃՇէՕ Փոխանակում / Է2օհaոջ6 8ՏWՃP Բայթային փոխանակում / 87է6 Տwaք Շ8W/ՇWD Բայթի/բառի ձևափոխում բառի/կրկնակի բառի /Շօոv6rէ Ե7է6/wօrմ էօ մօսԵ16wօrմ ՇDՕ Կրկնակի բառի ձևափոխում քառակի բառի /Շօոv6rէ մօսԵ16wօrմ էօ զսaմwօrմ ՇWDԷ Բառի ձևափոխում կրկնակի բառի ԷՃՃ ռեգիստրում / Շօոv6rէ wօrմ էօ մօսԵ16wօrմ 1ո ԷՃՃ r6ջ1Տէ6r ԽՕՕՏՃ Տեղափոխում և նշանի ընդլայնում / Խօv6 aոմ Տ1ջո 62է6ոմ ԽՕՕ7Ճ Տեղափոխում և զրոյով ընդլայնում/Խօv6 aոմ 26rօ 62է6ոմ ԼԷՃ Արդյունավետ հասցեի բեռնում / Լօaմ 6ff6օէ1v6 aմմr6ՏՏ ՃԼՃT Թարգմանություն / TaԵ16 1օօk-սք էraոՏ1aէ1օո PՍՏէ Գրել պահունակում / PսՏհ օոէօ Տէaօk
PՕP Կարդալ պահունակից / Pօք օff օf Տէaօk PՍՏէՃ/PՍՏէՃD Ընդհանուր օգտագործման ռեգիստրների արժեքները ուղարկել պահունակ/PսՏհ ջ6ո6ra1-քսrքօՏ6 r6ջ1Տէ6rՏ օոէօ Տէaօk PՕPՃ/PՕPՃD Ընդհանուր օգտագործման ռեգիստրները վերարժեքավորել պահունակից/Pօք ջ6ո6ra1-քսrքօՏ6 r6ջ1Տէ6rՏ frօո Տէaօk 1N Կարդալ կայանից (քօrէ, պորտ) /R6aմ frօո a քօrէ ՕՍT Գրել կայանում (քօrէ, պորտ) /Wr1է6 էօ a քօrէ MՕՕ – Տեղափոխում Շարահյուսություն: Նկարագրություն:
MՕՕ ընդունիչ, աղբյուր ընդունիչ աղբյուր
Ընդունիչը կարող է լինել ռեգիստր (r6ջ8/r6ջ16/r6ջ32), հիշողության հասցե (ո6ո8/ո6ո16/ո6ո32) կամ սեգմենտային ռեգիստր (Տ6ջr6ջ), իսկ աղբյուրը՝ ռեգիստր (r6ջ8/r6ջ16/r6ջ32), հիշողության հասցե (ո6ո8/ո6ո16/ո6ո32), սեգմենտային ռեգիստր (Տ6ջr6ջ) կամ անմիջական արժեք (1ո8/1ո16/1ո32)։ Այս հրամանը կատարում է տվյալների տեղափոխություն ընդհանուր օգտագործման ռեգիստրների կամ ընդհանուր օգտագործման և սեգմենտային ռեգիստրների միջև, հիշողության և ընդհանուր օգտագործման կամ սեգմենտային ռեգիստրի միջև կամ տեղափոխում է անմիջական արժեքը ընդհանուր օգտագործման ռեգիստրի կամ հիշողության մեջ: ԽՕՕ հրամանը տեղափոխում է աղբյուրով որոշվող արժեքի պատճենը ընդունիչ։ Գործողության իրականացումից հետո ընդունիչ օպերանդի հին արժեքը կորչում է։ ԽՕՕ հրամանի բոլոր տարբերակներում երկու օպերանդները պետք է լինեն նույն տիպի (չափի) (բացառություն են կազմում ԽՕՕ Տ6ջr6ջ,r/ո32: ԽՕՕ r/ո32,Տ6ջr6ջ հրամանները):
Շարահյուսությունը չի թույլատրում անմիջական արժեքը կամ սեգմենտային ռեգիստրը տեղափոխել սեգմենտային ռեգիստր: ԽՕՕ հրամանը չի կարող ՇՏ ռեգիստրը օգտագործել որպես ընդունիչ: 386- պրոցեսորների համար ԽՕՕ հրամանը կարելի է օգտագործել նաև ղեկավարող (ՇR0/2/3/4) և ճշգրտման (DR0/1/2/3/6/7 ռեգիստրների հետ աշխատելու համար ԽՕՕ r6ջ32, ՇR0/2/3/4 ԽՕՕ r6ջ32, DR0/1/2/3/6/7 ԽՕՕ ՇR0/2/3/4, r6ջ32 ԽՕՕ DR0/1/2/3/6/7, r6ջ32: ՇR4 ռեգիստրը հասանելի է միայն P6ոէ1սո և բարձր պրոցեսորների համար: Ինթել 286 և 286-64 պրոցեսորներն օգտագործում են 11էէ16-6ոմ1aո ֆորմատը (այն հայտնի է նաև որպես “Ինթել համաձայնեցում”/1ոէ61 օօոv6ոէ1օո"), որն ապահովում է կրտսեր բայթերը հիշողության փոքր հասցեում տեղափոխելու մեխանիզմը (ի տարբերություն Ե1ջ-6ոմ1aո ֆորմատի, որտեղ կրտսեր բայթը գրանցվում է մեծ հասցեում)։ Ե1ջ6ոմ1aո ֆորմատը նաև հայտնի է որպես "Խօէօrօ1a օօոv6ոէ1օո": Օրինակ
072Ճէ 2EH ՃD5FՃէ
DՏ - ՃՇԷDէ, Տ1 - 0724է 0729է ՃՃH ՃD5F9է
ԽՕՕ ՃՃ, | Տ1 |
0728է 18H ՃD5F8է ՃH ՃԼ
0727է
Ճ3H
ՃD5F7է
0726է
7EH 55H 02H 72H
ՃD5F6է
0725է
Ֆիզիկական հասցե ՃՇԷDէ " 10է - 0724է - ՃD5F4է, ՃD5F5է
0724է 0723է
ՃD5F5է ՃD5F4է ՃD5F3է
Օրինակ
ԽՕՕ ՃՃ, 7
: անմիջական արժեքը գրել ընդհանուր օգտա: գործման ռեգիստրի մեջ, ԽՕՕ ո6ո, 7 : անմիջական արժեքը գրել 1 բայթում` հիշողու: թյան ո6ո հասցեից սկսած, ԽՕՕ ո6ոw, 7 : անմիջական արժեքը գրել 1 բառում` հիշողու: թյան ո6ոw հասցեից սկսած, ԽՕՕ ո6ոw, DՏ : սեգմենտային ռեգիստրի արժեքը գրել հիշողու: թյան ո6ոw հասցեում, ԽՕՕ ո6ոw, ՃՃ : ընդհանուր օգտագործման ռեգիստրի արժեքը : գրել հիշողության ո6ոw հասցեում, ԽՕՕ ՃՃ, ո6ոw : ընդհանուր օգտագործման ռեգիստրի մեջ գրել : 2 բայթը` հիշողության ո6ոw հասցեից սկսած,
ԽՕՕ ՃՃ, 8Ճ
: ընդհանուր օգտագործման ռեգիստրի արժեքը : գրել ընդհանուր օգտագործման ռեգիստրի մեջ,
ԽՕՕ DՏ, ՃՃ
: ընդհանուր օգտագործման ռեգիստրի արժեքը : գրել սեգմենտային ռեգիստրի մեջ,
ԽՕՕ ՇՃ, ԷՏ
: սեգմենտային ռեգիստրի արժեքը գրել ընդհա: նուր օգտագործման ռեգիստրի մեջ: Որտեղ՝ ԽԷԽW DW ԽԷԽ D8 ԸMՕՕՇՇ – Պայմանական տեղաշարժ/Ըօոմiէiօոa1 Mօv6 (P6-) Շարահյուսություն: Նկարագրություն:
ԸMՕՕՇՇ ընդունիչ, աղբյուր ընդունիչ աղբյուր, եթե օօ պայմանը տեղի ունի
Ընդունիչը կարող է լինել ռեգիստր (r6ջ16/r6ջ32), իսկ աղբյուրը՝ ռեգիստր (r6ջ16/r6ջ32) կամ հիշողության հասցե (ո6ո16/ո6ո32): ՇԽՕՕօօ հրամանը տեղափոխում է աղբյուրի արժեքի պատճենը ընդունիչ օպերանդ, եթե տրված պայմանը տեղի ունի, հակառակ դեպքում ոչինչ չի անում։
Յուրաքանչյուր հրաման ունի իրեն համարժեք մեկ այլ անվանում։ Համարժեք (նույն մեքենայական կոդն ունեցող) հրամանները բաժանված են ‘/’ սիմվոլով։ Հրամանի հուշանուն ՇԽՕՕՃ / ՇԽՕՕN8Է ՇԽՕՕՃԷ / ՇԽՕՕN8 / ՇԽՕՕNՇ
ՇԽՕՕ8 / ՇԽՕՕNՃԷ / ՇԽՕՕՇ
ՇԽՕՕ8Է / ՇԽՕՕNՃ ՇԽՕՕԷ / ՇԽՕՕ7 ՇԽՕՕՕ / ՇԽՕՕNԼԷ ՇԽՕՕՕԷ /
Պայմանի ստուգում՝ ըստ դրոշների
Հրամանի լրիվ անվանումը
Տեղափոխել, եթե բարձր է (Խօv6 1f aԵօv6) ՇF - 0 & 7F - 0 / Տեղափոխել, եթե ցածր կամ հավասար չէ (Խօv6 1f ոօէ Ե61օw օr 6զսa1) Տեղափոխել, եթե բարձր է կամ հավասար (Խօv6 1f aԵօv6 օr 6զսa1 ) / Տեղափոխել, եթե ցածր չէ ՇF - 0 (Խօv6 1f ոօէ Ե61օw) / Տեղափոխել, եթե փոխանցում չկա (Խօv6 1f ոօէ օarr7 ) Տեղափոխել, եթե ցածր է (Խօv6 1f Ե61օw) / Տեղափոխել, եթե բարձր կամ ՇF - 1 հավասար չէ (Խօv6 1f ոօէ aԵօv6 օr 6զսa1) / Տեղափոխել, եթե փոխանցում կա (Խօv6 1f օarr7) Տեղափոխել, եթե ցածր կամ հավասար է (Խօv6 1f Ե61օw օr 6զսa1) ՇF - 1 | 7F - 1 / Տեղափոխել, եթե բարձր չէ (Խօv6 1f ոօէ aԵօv6) Տեղափոխել, եթե հավասար է 7F - 1 (Խօv6 1f 6զսa1) / Տեղափոխել, եթե զրո է (Խօv6 1f 26rօ) Տեղափոխել, եթե մեծ է (Խօv6 1f ջr6aէ6r) 7F - 0 & ՏF - ՕF / Տեղափոխել, եթե փոքր կամ հավասար չէ (Խօv6 1f ոօէ 16ՏՏ օr 6զսa1) Տեղափոխել, եթե մեծ կամ հավասար է ՏF - ՕF (Խօv6 1f ջr6aէ6r օr 6զսa1)
ՇԽՕՕNԼ ՇԽՕՕԼ / ՇԽՕՕNՕԷ
ՏF Հ» ՕF
ՇԽՕՕԼԷ / ՇԽՕՕNՕ
7F -1 | ՏF Հ» ՕF
ՇԽՕՕNԷ / ՇԽՕՕN7
7F - 0
ՇԽՕՕNՕ
ՕF - 0
ՇԽՕՕՕ
ՕF - 1
ՇԽՕՕNP / ՇԽՕՕPՕ
PF - 0
ՇԽՕՕP / ՇԽՕՕPԷ
PF - 1
ՇԽՕՕNՏ
ՏF - 0
ՇԽՕՕՏ
ՏF - 1
/ Տեղափոխել, եթե փոքր չէ (Խօv6 1f ոօէ 16ՏՏ) Տեղափոխել, եթե փոքր է (Խօv6 1f 16ՏՏ) /Տեղափոխել, եթե մեծ կամ հավասար չէ (Խօv6 1f ոօէ ջr6aէ6r օr 6զսa1) Տեղափոխել, եթե փոքր կամ հավասար է (Խօv6 1f 16ՏՏ օr 6զսa1) / Տեղափոխել, եթե մեծ չէ (Խօv6 1f ոօէ ջr6aէ6r) Տեղափոխել, եթե հավասար չէ (Խօv6 1f ոօէ 6զսa1) / Տեղափոխել, եթե զրո չէ (Խօv6 1f ոօէ 26rօ) Տեղափոխել, եթե գերհագեցում չկա (Խօv6 1f ոօէ օv6rf1օw) Տեղափոխել, եթե գերհագեցում կա (Խօv6 1f օv6rf1օw) Տեղափոխել, եթե զույգություն չկա (Խօv6 1f ոօէ քar1է7) / Տեղափոխել, եթե կենտ է (Խօv6 1f քar1է7 օմմ) Տեղափոխել, եթե զույգություն կա (Խօv6 1f քar1է7) / Տեղափոխել, եթե զույգ է (Խօv6 1f քar1է7 6v6ո) Տեղափոխել, եթե նշան չկա. ոչ բացասական է (Խօv6 1f ոօէ Տ1ջո) Տեղափոխել, եթե նշան կա. բացասական է (Խօv6 1f Տ1ջո)
Նկար 1. Ը1ՕՕcc հրամանի իրականացման պայմանները
ՃԸHՇ –Փոխանակում Շարահյուսություն: Նկարագրություն:
ՃԸHՇ ընդունիչ, աղբյուր ընդունիչ ↔ աղբյուր
Ընդունիչը և աղբյուրը կարող են լինել ռեգիստր (r6ջ8/r6ջ16/r6ջ32) կամ հիշողության հասցե (ո6ո8/ո6ո16/ ո6ո32):
Այս հրամանով ընդունիչ և աղբյուր օպերանդների արժեքները փոխանակվում են։ Օրինակ
ՃՇէՕ ՃՃ, 8Ճ
ՃՇէՕ ո6ո16, ՃՃ ՃՇէՕ DԼ, ո6ո8
ՃՇէՕ ՃԼ, ՇԼ
: փոխանակվում են ՃՃ-ի և 8Ճ-ի ար; ժեքները, : փոխանակվում են հիշողության : բառի` ո6ո16-ի և ՃՃ-ի արժեքները, : փոխանակվում են DԼ-ի և հիշողու: թյան բայթի՝ ո6ո8-ի արժեքները, : փոխանակվում են Ճէ-ի և ՇԼ-ի ար: ժեքները:
BՏWՃP – բայթային փոխանակում (486-) Շարահյուսություն: Նկարագրություն:
BՏWՃP ո6ջ32 32-բիթանոց ռեգիստրի բայթերը դասավորում է հակառակ հերթականությամբ
8ՏWՃP հրամանը 32-բիթանոց ռեգիստրի 0-7 բիթերը փոխանակում է 24-31 բիթերի հետ, իսկ 8-15 բիթերը՝ 16-23 բիթերի հետ։ Այս հրամանի 16-բիթանոց համարժեքը չկա։ Նշված հրամանը կարելի է օգտագործել “1iէէ16 6ոմiaո” ֆորմատից “եiջ 6ոմiaո” ֆորմատ և, հակառակը, անցումներ կատարելու համար։ Օրինակ ԽՕՕ ԷՃՃ, 01020304հ : ԷՃՃ - 01020304հ
8ՏWՃP ԷՃՃ
: ԷՃՃ - 04030201հ ԸBW, ԸWԾ - Բայթի/բառի ձևափոխում բառի/կրկնակի բառի /Ըօոv6ոէ եyէ6/wօոմ էօ մօսե16wօոմ Շարահյուսություն: Նկարագրություն:
ԸBW/ ԸWԾ
ՃՃ Շ8W(ՃԼ) / (DՃ:ՃՃ) ՇWD(ՃՃ)
Շ8W և ՇWD-ն առանց օպերանդի հրամաններ են: Լռությամբ օպերանդը ՃԼ (Շ8W-ի դեպքում) կամ ՃՃ (ՇWD-ի դեպքում) ռեգիստրներն են: Այս հրամանները տարածում են են ՃԼ/ՃՃ-ի նշանի բիթը Ճէ/DՃ ռեգիստրում: Արդյունքում ՃԼ/ՃՃ-ում գրված թիվը գըրվում է ՃՃ/(DՃ:ՃՃ) ռեգիստրներում կրկնակի չափով: Օրինակ ԽՕՕ Շ8W ԽՕՕ Շ8W ԽՕՕ ՇWD ԽՕՕ
ՃԼ, 24
: ՃԼ - 24 - 00011000Ե - 18հ : ՃՃ - 0000 0000 0001 1000Ե - 0018հ - 24 ՃԼ, -5 : ՃԼ - 11111011Ե - 0F8հ : ՃՃ - 11111111 11111011Ե - 0FFF8հ - -5 ՃՃ, 1059 : ՃՃ - 1059 - 0000 0100 0010 0011Ե - 0423հ : DՃ:ՃՃ - 0000 0423հ - 1059 ՃՃ, -1059 : ՃՃ - -1059 - 1111 1011 1101 1101Ե : - 0F8DDհ ՇWD : DՃ:ՃՃ - 0FFFF F8DDհ - -1059
ԸԾՕ – Կրկնակի բառի ձևափոխում քառակի բառի / Ըօոv6ոէ մօսե16wօոմ էօ qսaմwօոմ (386-) Շարահյուսություն: Նկարագրություն:
ԸԾՕ
(ԷDՃ:ԷՃՃ) ՇDՕ(ԷՃՃ)
ՇDՕ-ն առանց օպերանդի հրաման է: Լռությամբ օպերանդը ԷՃՃ ռեգիստրն է: ՇDՕ հրամանը պատճենում է ԷՃՃ-ի նշանի բիթը ԷDՃ ռեգիստրի բիթերում: Արդյունքում ԷDՃ:ԷՃՃ ռեգիստրներում ստանում ենք մինչ այդ ԷՃՃ-ում գրված թիվը՝ կրկնակի չափով և նշանը պահպանած: Օրինակ ԽՕՕ ԷՃՃ, 12153 : ԷՃՃ - 12153 - 0000 2F79հ ՇDՕ : ԷDՃ:ԷՃՃ - 0000 0000 0000 2F79հ ԽՕՕ ԷՃՃ, -12153 : ԷՃՃ - -12153 - 0FFFF D087հ ՇDՕ
: ԷDՃ:ԷՃՃ - 0FFFF FFFF FFFF Շ087հ
ԸWԾE – Բառի ձևափոխում կրկնակի բառի EՃՃ ռեգիստրում / Ըօոv6ոէ wօոմ էօ մօսե16wօոմ iո EՃՃ ո6ջi5է6ո (386-) Շարահյուսություն: Նկարագրություն:
ԸWԾE
ԷՃՃ ՇWDԷ(ՃՃ)
ՇWDԷ-ն առանց օպերանդի հրաման է: Լռությամբ օպերանդը ՃՃ ռեգիստրն է: ՇWDԷ հրամանը պատճենում է ՃՃ-ի նշանի բիթը ԷՃՃ ռեգիստրի ավագ 16 բիթերում: Արդյունքում ՃՃ-ում գրված թիվը գրվում է ԷՃՃ ռեգիստրում՝ նշանը պահպանած: Օրինակ ԽՕՕ ՃՃ, 12153 : ՃՃ - 12153 - 2F79հ ՇWDԷ : ԷՃՃ - 0000 2F79հ - 12153 ԽՕՕ ՃՃ, -12153 : ՃՃ - -12153 - 0D087հ ՇWDԷ : ԷՃՃ - 0FFFF D087հ - -12153 MՕՕՏՃ - Տեղափոխում և նշանի ընդլայնում/ Mօv6 aոմ 5iջո 62է6ոմ (386-) Շարահյուսություն: Նկարագրություն:
MՕՕՏՃ ընդունիչ, աղբյուր աղբյուր Շ8W(ընդունիչ) / ՇWD(ընդունիչ)
Ընդունիչը կարող է լինել 16/32-բիթանոց ռեգիստր (r6ջ16/r6ջ32), իսկ աղբյուրը՝ 8/16-բիթանոց ռեգիստր (r6ջ8/r6ջ16) կամ հիշողություն հասցե (ո6ո8/ո6ո16)։ ԽՕՕՏՃ հրամանը ընդլայնում է աղբյուրի արժեքը կրկնակի չափով՝ լրացնելով ավագ 8/16 բիթերը աղբյուրի նշանի բիթի արժեքով (Շ8W/ՇWD-ի նման): Ստացված թիվը գրանցվում է ընդունիչի մեջ: Օրինակ ԽՕՕ Շէ, 25 : Շէ - 25 - 19հ ԽՕՕՏՃ 8Ճ, Շէ : 8Ճ - 0019հ - 25 ԽՕՕ 8Լ, -9 : 8Լ - 0F7հ ԽՕՕՏՃ D1, 8Լ : D1 - 0FFF7հ - -9 ԽՕՕ ՃՃ, 1070 : ՃՃ - 1070 - 042Էհ ԽՕՕՏՃ ԷՏ1, ՃՃ : ԷՏ1 - 0000 042Էհ - 1070 ԽՕՕ ՃՃ, -1070 : ՃՃ - -1070 - 0F8D2հ ԽՕՕՏՃ Է8Ճ, ՃՃ : Է8Ճ - 0FFFF F8D2հ - -1070
MՕՕZՃ - Տեղափոխում և զրոյով ընդլայնում / Mօv6 aոմ 26ոօ 62է6ոմ (386-) Շարահյուսություն: Նկարագրություն:
MՕՕZՃ ընդունիչ, աղբյուր ընդունիչ ԽՕՕ7Ճ(աղբյուր)
Ընդունիչը կարող է լինել 16/32-բիթանոց ռեգիստր (r6ջ16/r6ջ32), իսկ աղբյուրը՝ 8/16-բիթանոց ռեգիստր (r6ջ8/r6ջ16) կամ հիշողություն հասցե (ո6ո8/ո6ո16)։ ԽՕՕ7Ճ հրամանը աղբյուրի արժեքը ընդլայնում է կրկնակի չափով՝ լրացնելով ավագ 8/16 բիթերը զրոներով: Ստացված թիվը գրանցվում է ընդունիչի մեջ: Օրինակ ԽՕՕ ԽՕՕ7Ճ ԽՕՕ ԽՕՕ7Ճ ԽՕՕ ԽՕՕ7Ճ ԽՕՕ ԽՕՕ7Ճ
Շէ, 25 8Ճ, Շէ 8Լ, 248 D1, 8Լ ՃՃ, 1070 ԷՏ1, ՃՃ ՃՃ, 35420 Է8Ճ, ՃՃ
: Շէ - 25 - 19հ : 8Ճ - 0019հ - 25 : 8Լ - 248 - 0F8հ : D1 - 00F8հ - 248 : ՃՃ - 1070 - 042Էհ : ԷՏ1 - 0000 042Էհ - 1070 : ՃՃ - 35420 - 8Ճ5Շհ : Է8Ճ - 0000 8Ճ5Շհ - 35420
ԼEՃ - Արդյունավետ հասցեի բեռնում / Լօaմ 6116Շէiv6 aմմո655 Շարահյուսություն: Նկարագրություն:
ԼEՃ ընդունիչ, աղբյուր ընդունիչ արդյունավետ հասցե (աղբյուր)
Ընդունիչը կարող է լինել 16/32-բիթանոց ռեգիստր (r6ջ16/r6ջ32), իսկ աղբյուրը՝ հիշողություն հասցե։ ԼԷՃ հրամանը հաշվում է աղբյուրի 16 կամ 32-բիթանոց արդյունավետ հասցեն (սեգմենտի բիթայնությունից կախված) և գրանցում ընդունիչի մեջ: Եթե աղբյուրի հասցեն 16-բիթանոց է, իսկ ընդունիչը՝ 32-բիթանոց ռեգիստր, ապա ընդունիչի ավագ 16 բիթերը լրացվում են 0-ներով: Եթե աղբյուրի հասցեն 32-բիթանոց է, իսկ ընդունիչը՝ 16-բիթանոց, ապա ընդունիչի մեջ գրվում է աղբյուրի արդյունավետ հասցեի կրտսեր 16 բիթը, իսկ ավագ 16 բիթի արժեքը կորչում է:
Օրինակ ԼԷՃ ԼԷՃ ԽՕՕ ԼԷՃ
DՃ, a : DՃ a փոփոխականի հասցեն՝ 0 ՃՃ, Ե|2| : ՃՃ Ե|2| - |Ե - 2| - 5-ի հասցեն՝ 3 Տ1, 1 8Ճ, Շ|Տ1 - 2| : 8Ճ Շ|Տ1 - 2| - Շ|3| - |Շ - 3| - 40-ի : հասցեն`12
որտեղ. .DՃTՃ Ճ Շ
D8 DW D8
4, 5, -10, 7 2, 7, 15, 40
ՃԼՃT/ ՃԼՃTB – Թարգմանություն / Taե16 1օօk-սք էոaո51aէiօո Շարահյուսություն: Նկարագրություն:
ՃԼՃT աղբյուր / ՃԼՃTB ՃԼ DՏ: (8Ճ / Է8Ճ - ՃԼ)
Աղբյուրը հիշողության հասցե է (ո6ո8): ՃԼՃT/ՃԼՃT8 հրամանը DՏ:8Ճ/Է8Ճ հասցեով որոշվող աղյուսակի ՃԼ-րդ տարրի 1-բայթանոց արժեքը գրանցում է ՃԼ ռեգիստրում: ՃԼՃT8 հրամանը ՃԼՃT-ի „կարճ գրության” ձևն է։ Աղբյուրը (աղյուսակի անունը) նշվում է միայն իբրև մեկնաբանություն, այն կարելի է օգտագործել DՏ սեգմենտային ռեգիստրը վերաբեռնելու համար: Օրինակ 1 ՃԼ ռեգիստրում գրանցված է |0, 15| միջակայքի թիվ։ Ստանալ ՃԼ-ի 16-ական համարժեք թվանշանը։ ԽՕՕ ՃԼ, 15 ԼԷՃ 8Ճ, էaԵ16 ՃԼՃT8 : ՃԼ’F’ Որտեղ` էaԵ16 D8 ’0123456789Ճ8ՇDԷF’ Օրինակ 2 ԽՕՕ ՃԼ, 5
ԼԷՃ
8Ճ, էaԵ16|2|
ՃԼՃT8 որտեղ. էaԵ16
D8
: 8Ճ - էaԵ16|2| - |էaԵ16 - 2| - ’Շ’-ի : հասցեն` 2 : ՃԼ - |8Ճ - ՃԼ| - ’է’
’Ճ8ՇDԷFՕէ’
Պահունակի հետ ուղղակիորեն աշխատող հրամաններ
(PՍՏH/PՕP/PՍՏHՃ/PՍՏHՃԾ/ PՕPՃ/ PՕPՃԾ )
Պահունակը հիշողության տիրույթ է, որն օգտագործվում է որպես տվյալների ժամանակավոր պահեստ։ Պահունակի գագաթի հասցեն պահվում է ՏՏ:ՏP/ԷՏP–ում։ Պահունակի հետ աշխատանքն իրականացվում է (Լ1FՕ Տ7Տէ6ո- ԼaՏէ 1ո F1rՏէ Օսէ) սկզբունքով, այսինքն՝ պահունակից տարրերը հեռացվում են համալրմանը հակառակ հերթականությամբ։ Սկզբնապես պահունակը տվյալ չի պարունակում։ Տվյալները համալրվում և հեռացվում են պահունակից համապատասխանաբար PՍՏէ/PՕP հրամանների միջոցով։ սկզբնական ՏP
օգտ. օգտ. օգտ. օգտ.
հիշողության հասցեների աճման ուղղություն
օգտ.
պահունակը աճում է հիշողության հասցեների նվազման ուղղությամբ
օգտ. օգտ. ազատ
ՏՏ:ՏP
ազատ ազատ ազատ
ՏՏ
Նկար 2. Պահունակի իրականացումը հիշողության մեջ
Պահունակը ոչ բացահայտ կերպով օգտագործվում է նաև որոշ հրամանների (ՇՃԼԼ, RԷT, 1NT, 1RԷT) իրականացման ժամանակ։ PՍՏH – Գրել պահունակում /Pս5հ օոէօ 5էaՇk Շարահյուսություն: Նկարագրություն:
PՍՏH աղբյուր պահունակ աղբյուր
Աղբյուրը կարող է լինել ռեգիստր (r6ջ16/r6ջ32), հիշողության հասցե (ո6ո16/ո6ո32) կամ սեգմենտային ռեգիստր, 286- պրոցեսորների համար` նաև անմիջական արժեք (1ոո8/1ոո16, 1ոո32 |386-|)։ PՍՏէ հրամանը պակասեցնում է պահունակի ցուցիչի (ՏP/ԷՏP) արժեքը 2-ով կամ 4-ով և գրանցում աղբյուրի արժեքը |ՏՏ:ՏP| կամ |ՏՏ:ԷՏP| հասցեում՝ կախված սեգմենտի բիթայնությունից՝ 16 կամ 32, օպերանդի տիպը որոշում է պահունակի ցուցիչի նվազման չափը` 2 թե 4, 8086-ի PՍՏէ ՏP հրամանի իրականացումը տարբերվում է 8086- պրոցեսներում տվյալ հրամանի իրականացումից: 8086-ի դեպքում պահունակում գրանցվում է ՏP-ի նոր արժեքը, իսկ մյուս պրոցեսորների համար՝ ՏP-ի հին արժեքը։ Օրինակ “PՍՏէ ՃՃ” հրամանը կատարում է հետևյալը.
PՍՏէ ՃՃ --» ՏՍ8 ՏP, 2 : ԽՕՕ |ՏՏ:ՏP|, ՃՃ
Նկար 3-ում պատկերված է PՍՏէ ՃՃ հրամանի իրականացումը.
Նկար 3. PUՏH 1X գործողության իրականացումը
PՕP – Կարդալ պահունակից / PՕP օ11 օ1 5էaՇk Շարահյուսություն: Նկարագրություն:
PՕP ընդունիչ պահունակ ընդունիչ
Ընդունիչը կարող է լինել ռեգիստր (r6ջ16/r6ջ32), հիշողության հասցե (ո6ո16/ո6ո32) կամ սեգմենտային ռեգիստր։ Այս հրամանը PՍՏէ հրամանին հակառակ գործողությունն է։ PՕP հրամանը կարդում է տվյալը պահունակից և տեղադրում այն ընդունիչում, PՕP հրամանից հետո ՏP-ի արժեքն ավելանում է 2-ով կամ 4ով՝ կախված օպերանդի չափից, ՇՏ ռեգիստրը չի կարող օգտագործվել որպես ընդունիչ:
Օրինակ “PՕP 8Ճ” հրամանը համարժեք է հետևյալին. PՕP 8Ճ --» ԽՕՕ 8Ճ, |ՏՏ:ՏP| : ՃDD ՏP, 2 Նկար 4-ում պատկերված է “PՕP 8Ճ” հրամանի իրականացումը.
Նկար 4. PՕP 5X գործողության իրականացումը
PՍՏHՃ/PՍՏHՃԾ – Ընդհանուր օգտագործման ռեգիստրների արժեքները ուղարկել պահունակ (186-/386-) Շարահյուսություն: PՍՏHՃ/PՍՏHՃԾ Նկարագրություն: պահունակ ՃՃ, ՇՃ, DՃ, 8Ճ, ՏP, 8P, Տ1, D1 / պահունակ ԷՃՃ, ԷՇՃ, ԷDՃ, Է8Ճ, ԷՏP, Է8P, ԷՏ1, ԷD1
PՍՏէՃ հրամանը ՃՃ, ՇՃ, DՃ, 8Ճ, ՏP, 8P, Տ1 և D1 ընդհանուր օգտագործման ռեգիստրների արժեքները նշված հերթականությամբ ուղարկում է պահունակ: Պահունակի ցուցիչի արժեքը նվազում է 16-ով։ PՍՏէՃD հրամանը ԷՃՃ, ԷՇՃ, ԷDՃ, Է8Ճ, ԷՏP, Է8P, ԷՏ1 և ԷD1 ընդհանուր օգտագործման ռեգիստրների արժեքները
նշված հերթականությամբ ուղարկում է պահունակ: Պահունակի ցուցիչի արժեքը նվազում է 32-ով։ Երկու դեպքում էլ ՏP և ԷՏP պահունակում պահվում են իրենց նախնական արժեքով (նախքան PՍՏէՃ-ն)։ Նշենք, որ ռեգիստրների հերթականությունը համապատասխանում է նրանց կոդերի աճմանը PՕPՃ/PՕPՃԾ – Ընդհանուր օգտագործման ռեգիստրների վերարժեքավորել պահունակից (186-/386-) Շարահյուսություն: Նկարագրություն:
PՕPՃ/PՕPՃԾ
պահունակ D1, Տ1, 8P, 2, 8Ճ, DՃ, ՇՃ, ՃՃ / պահունակ ԷD1, ԷՏ1, Է8P, 2, Է8Ճ, ԷDՃ, ԷՇՃ, ԷՃՃ
PՕPՃ հրամանը հաջորդաբար պահունակից հանում է 8 բառ՝ զետեղելով դրանք D1, Տ1, 8P ռեգիստրներում, ոչ մի տեղ (ՏPին համապատասխանողը), 8Ճ, DՃ, ՇՃ և ՃՃ ռեգիստրներում համապատասխանաբար: Պահունակի ցուցիչի արժեքն աճում է 16-ով։ Այն PՍՏէՃ-ի հակառակ գործողությունն է։ PՕPՃD հրամանը հաջորդաբար պահունակից հանում է 8 կրկնակի բառ՝ զետեղելով դրանք ԷD1, ԷՏ1, Է8P, ոչ մի տեղ (ԷՏP-ին համապատասխանողը), Է8Ճ, ԷDՃ, ԷՇՃ, ԷՃՃ ռեգիստրներում՝ համապատասխանաբար: Պահունակի ցուցիչի արժեքն աճում է 32-ով: PՕPՃD-ն PՍՏէՃD-ի հակառակ գործողությունն է։ Կայանի (քօոէ, պորտ) հետ աշխատող հրամաններ (1N/ՕՍT) 1N - Կարդալ կայանից (քօոէ, պորտ) /R6aմ 1ոօո a քօոէ Շարահյուսություն: Նկարագրություն:
1N ընդունիչ, աղբյուր ընդունիչ |աղբյուր|
Ընդունիչը ՃԼ/ՃՃ/ԷՃՃ(386-) ռեգիստրն է, իսկ աղբյուրը կարող է լինել անմիջական արժեք (1ոո8) կամ DՃ ռեգիստրը։ Աղբյուրը որոշում է կայանի (քօrէ, պորտ) համարը (թիվ |0, 255| միջակայքից կամ DՃ - ի արժեքը), որտեղից ինֆորմացիան գրվում է կուտակիչի մեջ:
Օրինակ 1N ՃԼ, 0F8է 1N
ՃՃ, 0F9է
ԽՕՕ DՃ, 0Շ800է 1N ՃԼ, DՃ
1N
ԷՃՃ, DՃ
: կարդում է 1 բայթ 0F8հ համարի կա: յանից և գրում ՃԼ-ի մեջ, : կարդում է 1 բառ 0F9հ համարի կա: յանից և գրում ՃՃ-ի մեջ, : կարդում է 1 բայթ DՃ-ով որոշվող կա: յանից (0Շ800է համարով) և գրում : ՃԼ-ի մեջ, : կարդում է 1 կրկնակի բառ DՃ-ով : որոշվող կայանից (0Շ800է համա: րով) և գրում ԷՃՃ-ի մեջ:
ՕՍT - Գրել կայանում (քօոէ, պորտ) /Wոiէ6 էօ a քօոէ Շարահյուսություն: Նկարագրություն:
ՕՍT ընդունիչ, աղբյուր |ընդունիչ| աղբյուր
Ընդունիչն անմիջական արժեք (1ոո8) է կամ DՃ ռեգիստրը, իսկ աղբյուրը ՃԼ/ՃՃ/ԷՃՃ(386-) ռեգիստրն է: Ընդունիչը որոշում է կայանի (քօrէ, պորտ) համարը (թիվ |0, 255| միջակայքից կամ DՃ-ի արժեքը), որտեղ գրվում է կուտակիչի արժեքը: Օրինակ
ՕՍT 64է, ՃԼ
ՕՍT 60է, ՃՃ
ԽՕՕ DՃ, 0D1է
ՕՍT DՃ, ՃԼ
ՕՍT DՃ, ԷՃՃ
: գրում է ՃԼ-ի արժեքը 64հ համարի : կայանի մեջ, : գրում է ՃՃ-ի արժեքը 60հ համարի : կայանի մեջ, : գրում է ՃԼ-ի արժեքը DՃ-ով որոշ: վող կայանի (00D1է համարով) մեջ, : գրում է ԷՃՃ-ի արժեքը DՃ-ով որոշ: վող կայանի (00D1է համարով) մեջ:
Խնդիրներ և վարժություններ 1. Տրված է՝
2.
3. 4.
5.
Ճ DW 2, 2 DW 2, 2 Ճ DD Մ DD Ճ փոփոխականին վերագրել 8 փոփոխականի արժեքը (2 բառ), իսկ Ճ փոփոխականին՝ Մ-ի արժեքը: Տրված է հետևյալ նկարագրությունը. Ճ D8 Մ D8 Փոխանակել Ճ և Մփոփոխականների արժեքները։ Տրված ‘7 DW 2’ նկարագրության համար փոխանակել 7 բառի բայթերը։ Տրված է հետևյալ նկարագրությունը. Ճ DW −73 DW Հետևյալ հրամանների կատարումից հետո նշել Ճ և 8 փոփոխականների արժեքները. ԽՕՕ ՃՃ, Ճ ԽՕՕ
8ՄTԷ PTR 8, Ճէ
ԽՕՕ
8ՄTԷ PTR 8 - 1, ՃԼ
Տրված է հետևյալ նկարագրությունը. D8 W DW Նշել, թե հետևյալ հրամաններից որոնք են պարունակում շարահյուսական սխալ.
1) ԽՕՕ 8P, ՏP
2) ԽՕՕ ՃՃ, 8Լ
3) ԽՕՕ DՃ, '"' 4) ԽՕՕ Շէ, 500
5) ԽՕՕ 8Ճ, 8
7) ԽՕՕ W, Տ1 - 1 8) ՃՇէՕ W, DՏ
6) ԽՕՕ Տ1, W - 1 9) ԽՕՕ 8, 80հ
10) ԽՕՕ 8, W - 8 11) ԽՕՕ 8, -130
12) ԽՕՕ W, W - 2
13) ՃՇէՕ Ճէ, ՃԼ 14) ՃՇէՕ W, ԷՇՃ
15) ՃՇէՕ 8, 8 - 1
16) ԽՕՕ 8, 8ՄTԷ PTR ՇՃ
Երկուական թվաբանության հրամաններ Երկուական թվաբանության հրամանները կատարում են հիշողության և/կամ ընդհանուր օգտագործման ռեգիստրներում տեղադրված բայթ, բառ, կրկնակի բառ ամբողջ թվերի հետ երկուական թվաբանության հիմնական գործողությունները. ՃDD ՃDՇ ՏՍ8 Տ88 1ԽՍԼ ԽՍԼ 1D1Օ D1Օ 1NՇ DԷՇ NԷՕ ՇԽP ՇԽPՃՇէՕ
ամբողջ գումարում/1ոէ6ջ6r aմմ, փոխանցումով գումարում /Ճմմ w1էհ օarr7, հանում/ՏսԵէraօէ, պարտքով հանում /ՏսԵէraօէ w1էհ Եօrrօw, նշանով բազմապատկում/Տ1ջո6մ ոս1է1ք17, առանց նշանի բազմապատկում/ՍոՏ1ջո6մ ոս1է1ք17, նշանով բաժանում/Տ1ջո6մ մ1v1մ6, առանց նշանի բաժանում/ՍոՏ1ջո6մ մ1v1մ6, ավելացում /1ոօr6ո6ոէ, նվազեցում /D6օr6ո6ոէ, նշանափոխում/N6ջaէ6, համեմատում/Շօոքar6, համեմատում և փոխանակում/Շօոքar6 aոմ 62օհaոջ6:
Թվաբանական հրամաններն ազդում են վիճակի դրոշների վրա։ Յուրաքանչյուր հրամանի համար նշված են ազդեցության ենթարկվող դրոշների ցուցակը։ Բոլոր հրամաններում շարահյուսությունը պահանջում է օպերանդների չափերի համապատասխանություն: Երկու օպերանդները միաժամանակ չեն կարող լինել հիշողության հասցեներ: Գործողության արդյունքը գրանցվում է առաջին օպե78
րանդում (բացի ՇԽP և ՇԽPՃՇէՕ հրամաններից), որը հրամանի նկարագրության մեջ նշված է որպես «ընդունիչ», իսկ երկրորդ օպերանդը նշված է որպես «աղբյուր»։ Առաջին օպերանդը՝ ընդունիչը, չի կարող լինել անմիջական արժեք։ ՃԾԾ – Գումարում Շարահյուսություն: Նկարագրություն: Դրոշներ:
ՃԾԾ ընդունիչ, աղբյուր ընդունիչ ընդունիչ - աղբյուր ՃF ՇF ՕF PF ՏF 7F
Ընդունիչը կարող է լինել ռեգիստր (r6ջ8/r6ջ16/r6ջ32) կամ հիշողության հասցե (ո6ո8/ո6ո16/ո6ո32), իսկ աղբյուրը՝ ռեգիստր (r6ջ8/r6ջ16/r6ջ32), հիշողության հասցե (ո6ո8/ո6ո16/ո6ո32) կամ անմիջական օպերանդ (1ո8/1ո16/1ո32)։ Հրամանն ազդում է բոլոր վիճակի դրոշների վրա։ Հրամանի օրինակներ՝
ՃDD Է8P, ԷՃՃ
ՃDD 8ՄTԷ PTR |D1|, 3
ՃDD 8Ճ, |ԷՃՃ - 2 " ԷՇՃ| Օրինակ
ԽՕՕ ՃԼ, 43
: 43 - 001010118
ՃDD ՃԼ, 94
: 94 - 010111108 00101011 01011110 ՃԼ - 10001001 Արդյունքում՝ ՇF - 0, ՕF - 1, ՏF - 1, ՃF - 1, PF - 0: ՃԾԸ – Փոխանցումով գումարում (Ճմմ Wiէհ Ըaոոy) Շարահյուսություն: Նկարագրություն: Դրոշներ:
ՃԾԸ ընդունիչ, աղբյուր ընդունիչ ընդունիչ - աղբյուր - ՇF ՃF ՇF ՕF PF ՏF 7F
ՃDՇ-ն կարելի է օգտագործել երկար թվեր գումարելու համար։ Ընդունիչը կարող է լինել ռեգիստր (r6ջ8/r6ջ16/r6ջ32) կամ հիշողության հասցե (ո6ո8/ո6ո16/ո6ո32), իսկ աղբյուրը՝ ռեգիստր (r6ջ8/r6ջ16/r6ջ32), հիշողության հասցե (ո6ո8/ո6ո16/ո6ո32) կամ անմիջական օպերանդ (1ո8/1ո16/1ո32)։ Օրինակ Ենթադրենք ցանկանում ենք կատարել 32-բիթանոց 2 թվերի գումարում 8086 – 80286 պրոցեսորների համար։ (Տ1, DՃ, ՇՃ) (DՃ, ՇՃ) - (8Ճ, ՃՃ) Գումարումը կկատարենք հետևյալ կերպ.
ՃՕR Տ1, Տ1
ՃDD ՇՃ, ՃՃ
ՃDՇ DՃ, 8Ճ
ՃDՇ Տ1, 0 1NԸ – Ավելացում/1ոՇո6ո6ոէ Շարահյուսություն: Նկարագրություն: Դրոշներ:
1NԸ ընդունիչ ընդունիչ ընդունիչ - 1 ՃF ՕF PF ՏF 7F
Ընդունիչը կարող է լինել ռեգիստր (r6ջ8/r6ջ16/r6ջ32) կամ հիշողության հասցե (ո6ո8/ո6ո16/ո6ո32): Գործողությունը չի ազդում փոխանցման դրոշի վրա և կատարվում է ավելի արագ, քան ՃԾԾ ընդունիչ, 1 հրամանը: Օրինակ ԽՕՕ 1NՇ
ՃԼ, 255 ՃԼ : ՃԼ–ի արժեքը այժմ 0 է, ՇF-ը չի փոխվում:
ՏՍB – Հանում/ՏսեէոaՇէ Շարահյուսություն: Նկարագրություն: Դրոշներ:
ՏՍB ընդունիչ, աղբյուր ընդունիչ ընդունիչ - աղբյուր ՃF ՇF ՕF PF ՏF 7F
Ընդունիչը կարող է լինել ռեգիստր (r6ջ8/r6ջ16/r6ջ32) կամ հիշողության հասցե (ո6ո8/ո6ո16/ո6ո32), իսկ աղբյուրը՝ ռեգիստր (r6ջ8/r6ջ16/r6ջ32), հիշողության հասցե (ո6ո8/ո6ո16/ո6ո32) կամ անմիջական օպերանդ (1ո8/1ո16/1ո32)։ ՏBB – Պարտքով հանում /ՏսեէոaՇէ wiէհ Bօոոօw/Ըaոոy Շարահյուսություն: Նկարագրություն: Դրոշներ:
ՏՍB ընդունիչ, աղբյուր ընդունիչ ընդունիչ - աղբյուր - ՇF ՃF ՇF ՕF PF ՏF 7F
Ընդունիչը կարող է լինել ռեգիստր (r6ջ8/r6ջ16/r6ջ32) կամ հիշողության հասցե (ո6ո8/ո6ո16/ո6ո32), իսկ աղբյուրը՝ ռեգիստր (r6ջ8/r6ջ16/r6ջ32), հիշողության հասցե (ո6ո8/ո6ո16/ո6ո32) կամ անմիջական օպերանդ (1ո8/1ո16/1ո32)։ Օրինակ Կատարել 32-բիթանոց թվերի հանում 8086 պրոցեսորի համար` (DՃ, ՇՃ) (DՃ, ՇՃ) – (8Ճ, ՃՃ) Հանումը կարող է կատարվել հետևյալ եղանակով. ՏՍ8 ՇՃ, ՃՃ Տ88 DՃ, 8Ճ ԾEԸ –նվազեցում/Ծ6Շո6ո6ոէ Շարահյուսություն: Նկարագրություն: Դրոշներ:
ԾEԸ ընդունիչ ընդունիչ ընդունիչ - 1 ՃF ՕF PF ՏF 7F
Ընդունիչը կարող է լինել ռեգիստր (r6ջ8/r6ջ16/r6ջ32) կամ հիշողության հասցե (ո6ո8/ո6ո16/ո6ո32): Գործողությունը չի ազդում փոխանցման դրոշի վրա և կատարվում է ավելի արագ, քան ՏՍB ընդունիչ, 1 հրամանը:
NEՇ –Նշանափոխություն/Twօ'5 Ըօոք16ո6ոէ N6ջaէiօո Շարահյուսություն: Նկարագրություն: Դրոշներ:
NEՇ ընդունիչ ընդունիչ 0 - ընդունիչ ՃF ՇF ՕF PF ՏF 7F
Ընդունիչը կարող է լինել ռեգիստր (r6ջ8/r6ջ16/r6ջ32) կամ հիշողության հասցե (ո6ո8/ո6ո16/ո6ո32), իսկ աղբյուրը՝ ռեգիստր (r6ջ8/r6ջ16/r6ջ32), հիշողության հասցե (ո6ո8/ո6ո16/ո6ո32) կամ անմիջական օպերանդ (1ո8/1ո16/1ո32)։ Այս հրամանն իմաստալի է միայն նշանով օպերանդների համար։ Փոխանցման դրոշը միշտ ընդունում է 1 արժեք՝ բացառությամբ այն դեպքի, երբ ընդունիչը 0 է։ Օրինակ 1 հաշվել ԷՃՃ-ի բացարձակ արժեքը.
ՇԽP ԷՃՃ, 0
JՕԷ DՕNԷ NԷՕ ԷՃՃ DՕNԷ: Նշում հետևյալ հրամանների կատարումից հետո ԽՕՕ ՃԼ, -128 : սա նշանով 8-բիթանոց ամենափոքր : արժեքն է, NԷՕ ՃԼ : գերհագեցման դրոշը՝ ՕF, դառնում է : 1, բայց ՃԼ-ի արժեքը չի փոխվում։ Օրինակ 2 հաշվել ԷՃՃ–ի բացարձակ արժեքը.
Լ1: NԷՕ ԷՃՃ
JՏ Լ1 Նշում Ե4Ս = -231 արժեքի դեպքում կստացվի անվերջ կրկնություն:
ԸMP –Համեմատում /Ըօոքaո6 Շարահյուսություն: Նկարագրություն: Դրոշներ:
ԸMP ընդունիչ, աղբյուր ընդունիչը համեմատում է աղբյուրի հետ ՃF ՇF ՕF PF ՏF 7F
Ընդունիչը կարող է լինել ռեգիստր (r6ջ8/r6ջ16/r6ջ32) կամ հիշողության հասցե (ո6ո8/ո6ո16/ո6ո32), իսկ աղբյուրը՝ ռեգիստր (r6ջ8/r6ջ16/r6ջ32), հիշողության հասցե (ո6ո8/ո6ո16/ո6ո32) կամ անմիջական օպերանդ (1ո8/1ո16/1ո32)։ Այս հրամանը համեմատում է ընդունիչի արժեքն աղբյուրի արժեքի հետ՝ առանց ընդունիչի արժեքը փոխելու: Համեմատման համար ընդունիչի արժեքից հանվում է աղբյուրի արժեքը, բայց արդյունքը ոչ մի տեղ չի պահվում: Հանման գործողության արդյունքում թարմացվում են դրոշները: Հրամանը կարող է օգտագործվել պայմանական անցման հրամաններից առաջ։ Օրինակ
ԽՕՕ DԼ, 27
ՇԽP DԼ, 17
JՕ NԷՃT ԸMPՃԸHՇ –Համեմատում և փոխանակում / Ըօոքaո6 aոմ 62Շհaոջ6 (486-) Շարահյուսություն: Դրոշներ:
ԸMPՃԸHՇ ընդունիչ, աղբյուր ՃF ՇF ՕF PF ՏF 7F
Ընդունիչը կարող է լինել ռեգիստր (r6ջ8/r6ջ16/r6ջ32) կամ հիշողության հասցե (ո6ո8/ո6ո16/ո6ո32), իսկ աղբյուրը՝ միայն ռեգիստր (r6ջ8/r6ջ16/r6ջ32): Այս հրամանը համեմատում է ՃԼ/ՃՃ/ԷՃՃ ռեգիստրի (կախված օպերանդների չափից) արժեքը ընդունիչի արժեքի հետ: Եթե հավասար են, ապա աղբյուրի արժեքը պատճենվում է ընդունիչի մեջ և 7F դրոշն ընդունում է 1 արժեք: Հակառակ դեպքում ընդունիչի արժեքը պատճենվում է ՃԼ/ՃՃ/ԷՃՃ ռեգիստրում, և 7F
դրոշն ընդունում է 0 արժեք: ՃF,ՇF,ՕF,PF,ՏF դրոշների արժեքները որոշվում են ըստ համեմատման գործողության (ՇԽP) արդյունքի: Օրինակ 1 ԽՕՕ ԽՕՕ ԽՕՕ ՇԽPՃՇէՕ
DԼ, 27 ՃԼ, 15 ՇԼ, 3 DԼ, ՇԼ
: ՃԼ - DԼ - 27, 7F - 0
Օրինակ 2 ԽՕՕ ԽՕՕ ԽՕՕ ՇԽPՃՇէՕ
8Ճ, 32 ՃՃ, 32 ՇՃ, 10 8Ճ, ՇՃ
: 8Ճ - ՇՃ - 10, 7F - 1
Բազմապատկման հրամաններ (MՍԼ և 1MՍԼ) Նշանով և առանց նշանի բազմապատկումը հանգեցնում է տարբեր արդյունքների։ Օրինակ Դիտարկենք 100000008 " 111111118: Եթե մեկնաբանենք այս թվերը որպես առանց նշանի թվեր՝ արտադրյալը կլինի. 128 " 255 - 32640 - 0111 1111 1000 00008: Որպես նշանով թվեր մեկնաբանելու դեպքում կլինի.
արտադրյալը
(-128) " (-1) - 128 - 0000 0000 1000 00008. Քանի որ նշանով և առանց նշանի բազմապատկումները հանգեցնում են տարբեր արդյունքների, կան երկու բազմապատկման հրամաններ՝ ԽՍԼ և 1ԽՍԼ:
MՍԼ –առանց նշանի բազմապատկում Շարահյուսություն: Դրոշներ:
MՍԼ աղբյուր ՃF - 2 ՇF ՕF PF - 2 ՏF - 2 7F - 2
1MՍԼ –նշանով բազմապատկում Շարահյուսություն: Դրոշներ:
Օպերանդներ
1MՍԼ աղբյուր ՃF - 2 ՇF ՕF PF - 2 ՏF - 2 7F - 2
Հրամանի շարահյուսությունը MՍԼ աղբյուր8
Նկարագրություն
8-բիթանոց
1MՍԼ աղբյուր8
ՃՃ ՃԼ " աղբյուր8
16-բիթանոց
MՍԼ աղբյուր16 1MՍԼ աղբյուր16
DՃ:ՃՃՃՃ " աղբյուր16
32-բիթանոց
MՍԼ աղբյուր32 1MՍԼ աղբյուր32
ԷDՃ:ԷՃՃԷՃՃ " աղբյուր32
Որտեղ աղբյուր8/16/32-ը կա՛մ 8/16/32-բիթանոց ռեգիստր է, կա՛մ 8/16/32-բիթանի հիշողության օպերանդ: 1MՍԼ հրամանի 3 (186-) կամ 2 (386-) օպերանդանոց տարբերակները
1MՍԼ -նշանով բազմապատկում (386-) Շարահյուսություն: Դրոշներ:
1MՍԼ ընդունիչ, աղբյուր ՃF - 2 ՇF ՕF PF - 2 ՏF - 2 7F - 2
1MՍԼ –առանց նշանի բազմապատկում (186-) Շարահյուսություն: Դրոշներ:
1MՍԼ ընդունիչ, աղբյուր1, աղբյուր2 ՃF - 2 ՇF ՕF PF - 2 ՏF - 2 7F - 2
Օպերանդներ 2 օպերանդ
3 օպերանդ
Հրամանի շարահյուսությունը 1ԽՍԼ r6ջ16, r6ջ16/ո6ո16 1ԽՍԼ r6ջ32, r6ջ32/ո6ո32 1ԽՍԼ r6ջ16, r6ջ16/ո6ո16, 1ո8 1ԽՍԼ r6ջ16, r6ջ16/ո6ո16, 1ո16 1ԽՍԼ r6ջ32, r6ջ32/ո6ո32, 1ո8 1ԽՍԼ r6ջ32, r6ջ32/ո6ո32, 1ո32
Նկարագրություն ընդունիչ ընդունիչ " աղբյուր ընդունիչ աղբյուր1 " աղբյուր2
1ԽՍԼ-ի այս տարբերակներում ռեգիստրային և հիշողության օպերանդները միշտ պետք է լինեն նույն չափի։ Ռեգիստրները ընդհանուր օգտագործման ռեգիստրներ են։ Օրինակ 1ԽՍԼ ԷՇՃ
: ԷDՃ:ԷՃՃ ԷՃՃ " ԷՇՃ
1ԽՍԼ 8Ճ, ՇՃ, 7 : 8Ճ ՇՃ " 7 Նշում Դրական թվերի բազմապատկման դեպքում ԽՍԼ և 1ԽՍԼ հրամանները տալիս են նույն արդյունքը։ ԽՍԼ և 1ԽՍԼ հրամաններից հետո վիճակի դրոշներն անորոշ են՝ բացառությամբ փոխանցման (ՇF) և գերհագեցման (ՕF) դրոշների։ ԽՍԼ գործողության դեպքում ՇF և ՕF դրոշները դառնում են 0, եթե արդյունքի ավագ կեսը (Ճէ/DՃ/ԷDՃ-ը 8/16/32-բիթանոց օպերանդների դեպքում համապատասխանաբար) զրո է, հակառակ դեպքում ՕF-ը և ՇF-ը 1 են։ Որոշ պրոցեսորներում ՏF դրոշն ընդունում է նշանի բիթի արժեքը։ Երկու կամ երեք օպերանդներով 1ԽՍԼ-ի դեպքում ՇF-ը և ՕF-ը զրո են, եթե բազմապատկման արդյունքը տեղավորվում է ընդունիչում, հակառակ դեպքում այդ դրոշները 1 են։
Նշում Ի տարբերություն ՃDD, ՏՍ8, NԷՕ, ՏէԼ կամ ՏՃԼ գործողությունների գերհագեցման՝ ԽՍԼ և 1ԽՍԼ գործողությունների համար ՕF-ի 1 լինելը չի տեղեկացնում հաշվումներում սխալի մասին։ Օրինակ Ծրագրի հետևյալ հատվածներում որոշել բազմապատկման արդյունքը և պարզել՝ գերհագեցում տեղի կունենա, թե ոչ: 1. ԽՕՕ ԽՕՕ ԽՍԼ
ՃԼ, 05է 8Լ, 10է 8Լ
2. .DՃTՃ ՕՃR1 ՕՃR2 . . . ԽՕՕ ԽՍԼ
ՃՃ, ՕՃR1
ՕՃR2
3. ԽՕՕ ԽՕՕ 1ԽՍԼ
ՃԼ, 1 8Լ, -1 8Լ
4. ԽՕՕ ԽՕՕ 1ԽՍԼ
ՃՃ, 10 ՇՃ, -48 ՇՃ
DW DW
: ՃՃ - ՃԼ " 8Լ - 0050է, ՇF - 0, : ՕF- 0, գերհագեցում չկա
2000է 0010է
: DՃ:ՃՃ - ՃՃ " ՕՃR2 - 0002 0000է, : ՇF- 1, ՕF-1,
: ՃՃ - -1 - 11111111 111111118, : ՇF - 0, ՕF - 0, գերհագեցում չկա, : 111111118 8-բիթանոց արդյունքը : նշանով ընդլայնվել է Ճէ ռեգիստրում,
: DՃ:ՃՃ - -480 - FFFF FԷ20է, : ՇF - 0, ՕF - 0, գերհագեցում չկա, : FԷ20է 16-բիթանոց արդյունքը նշա: նով ընդլայնվել է DՃ ռեգիստրում,
Օրինակ Եենթադրելով, որ W և Մ-ը բառային նշանով փոփոխականներ են, հաշվել W - 5 " W - 12 " Մ արտահայտության արժեքը՝ գերհագեցման դեպքում անցում կատարելով ՕՕԷRFԼՕW նշիչին. ԽՕՕ ՃՃ, 5 1ԽՍԼ W : DՃ:ՃՃ - 5 " W JՕ
ՕՕԷRFԼՕW
ԽՕՕ W, ՃՃ :W-5"W ԽՕՕ ՃՃ, 12 1ԽՍԼ Մ : DՃ:ՃՃ - 12 " Մ JՕ
ՕՕԷRFԼՕW
ՏՍ8 W, ՃՃ : W - 5 " W - 12 " Մ JՕ
ՕՕԷRFԼՕW
. . . JԽP DՕNԷ
ՕՕԷRFԼՕW:
. . . DՕNԷ: Բաժանման հրամաններ (Ծ1Օ և 1Ծ1Օ) Բաժանման հրամանները նույնպես երկուսն են՝ D1Օ և 1D1Օ: D1Օ հրամանն օգտագործվում է առանց նշանի ամբողջ բաժանման, իսկ 1D1Օ հրամանը՝ նշանով ամբողջ բաժանման դեպքում։ Ծ1Օ –առանց նշանի բաժանում Շարահյուսություն: Դրոշներ:
Ծ1Օ աղբյուր ՃF - 2 ՇF - 2 ՕF - 2 PF - 2 ՏF - 2 7F - 2
1Ծ1Օ –նշանով բաժանում Շարահյուսություն: Դրոշներ:
1Ծ1Օ աղբյուր ՃF - 2 ՇF - 2 ՕF - 2 PF - 2 ՏF - 2 7F - 2
Ամբողջ բաժանման արդյունքում ստացվում է քանորդ և մնացորդ։ Օպերանդներ 8-բիթանոց
Նկարագրություն AX
Քանորդ
Մնացորդ
ՃԼ
Ճէ
16-բիթանոց
DX: AX
ՃՃ
DՃ
32-բիթանոց
EDX: EAX
ԷՃՃ
ԷDՃ
Օպերանդ8/16/32-ը 8/16/32-բիթանոց ռեգիստր է կամ հիշողության հասցե։ Բաժանման հրամանների կատարման արդյունքում ՏF, PF, ՇF, ՕF, ՃF և 7F դրոշների արժեքներն անորոշ են։ Նշում Եթե բաժանելին և բաժանարարը դրական են, D1Օ և 1D1Օ տալիս են նույն արդյունքը։ Նշանով բաժանման դեպքում մնացորդը (եթե զրո չէ) ունի նույն նշանը, ինչ բաժանելին։ Եթե բաժանման ժամանակ բաժանարարը զրո է կամ քանորդը մեծ է և չի տեղավորվում քանորդի համար նախատեսված ռեգիստրում, ապա տեղի է ունենում բաժանման գերհագեցում/Ծivi5iօո օv6ո11օw։ Պրոցեսորն ավտոմատ կանչում է 00է ընդհատումը (զրոյի վրա բաժանում (#DԷ (մ1v1մ6 6rrօr/Ե7 26rօ)), և ծրագիրն ավարտվում է։ Ճէ/DՃ/ԷDՃ ռեգիստրի արժեքը պետք է զրոյացվի մինչև 8/16/32-բիթանոց առանց նշանի բաժանումը. 1. D1Օ հրամանի օգտագործման դեպքում Ճէ ռեգիստրը, բնականաբար, պետք է զրոյացվի, եթե բաժանելին բայթ է:
Օրինակ ԽՕՕ ԽՕՕ ԽՕՕ D1Օ
ՃԼ, 8ՄTԷ_ՕՃR
Ճէ, 0 : Ճէ-ը պետք է զրոյացվի 8Լ, 5 8Լ
Օրինակ ԽՕՕ ԽՕՕ D1Օ
ՃՃ, 20 ՇԼ, 4 ՇԼ
: Ճէ-ի զրոյացում պետք չէ
Օրինակ կարդալ ՃՏՇ11 թվանշան, ձևափոխել այն թվային արժեքի, ապա բաժանել 3-ի. ԽՕՕ Ճէ, 01է 1NT 21է ՏՍ8 ՃԼ, 30է ԽՕՕ Ճէ, 0 : Ճէ-ը զրոյացնել ԽՕՕ 8Լ, 3 D1Օ 8Լ Նշում Ճէ-ը 0-ով սկզբնարժեքավորելու համար կարելի է օգտագործել ԽՕՕ7Ճ (Խօv6 w1էհ 76rօ Է2է6ոՏ1օո) հրամանը. ԽՕՕ7Ճ
ՃՃ, 8ՄTԷ_ՕՃR
ԽՕՕ 8Լ, 5 D1Օ 8Լ Օրինակ DՃ ռեգիստրի սկզբնարժեքավորումը մինչ 1D1Օ հրամանի օգտագործումը. ԽՕՕ ՃՃ, -12
: ՃՃ - FFF4է
ՇWD
: DՃ:ՃՃ - FFFF FFF4է
ԽՕՕ 1D1Օ
8Ճ, 7 8Ճ
: ՃՃ - -1 - FFFFէ, : DՃ - -5 - FFF8է
Օրինակ ԷDՃ ռեգիստրի սկզբնարժեքավորումը մինչ D1Օ հրամանի օգտագործումը. .DՃTՃ
D1Օ1DԷND DWՕRD
8003FF8Շէ D1Օ1ՏՕR DWՕRD 10000000է . . . ԽՕՕ ԷDՃ, 0 ԽՕՕ
ԷՃՃ, D1Օ1DԷND
D1Օ D1Օ1ՏՕR . . . Օրինակ ԷDՃ ռեգիստրի սկզբնարժեքավորումը մինչ 1D1Օ հրամանի օգտագործումը. ԽՕՕ
ԷՃՃ, 8F8Ճ2FԷՇհ
ՇDՕ ԽՕՕ
Է8Ճ, 2FFFFFFFհ
1D1Օ Է8Ճ Օրինակ գերհագեցում բաժանման ժամանակ կամ զրոյի վրա բաժանում (D1v1Տ1օո օv6rf1օw). ԽՕՕ ՃՃ, 0200է ԽՕՕ 8Լ, 02է D1Օ 8Լ Հրամանների հաջորդականությունը կհանգեցնի բաժանման գերհագեցման, քանի որ 8Լ Ճէ: Քանորդն այս դեպքում 100է է, այսինքն՝ 256, որն ավելին է, քան 255-ը (առավելագույն առանց նշանի արժեքը):
Եթե Ճէ-ը զրոյացվի նախքան բաժանումը, ապա գերհագեցում տեղի կունենա, միայն եթե բաժանարարը լինի զրո։ 8-բիթանոց առանց նշանի բաժանում-գերհագեցումից խուսափելու համար կարելի է կատարել հետևյալ ստուգումները. ՇԽP D1v1Տօr8, Ճէ J8Է
D1Օ_ՕՕԷRFԼՕW
D1Օ D1v1Տօr8 . . . JԽP DՕNԷ
D1Օ_ՕՕԷRFԼՕW:
. . . DՕNԷ: 8-բիթանոց նշանով բաժանում-գերհագեցումից խուսափելու համար կարելի է կատարել հետևյալ ստուգումները. ԽՕՕ ՃԼ, D1v1մ6ոմ Շ8W ՇԽP D1v1Տօr8, 0 JԷ
1D1Օ_ՕՕԷRFԼՕW
ՇԽP D1v1Տօr8, -1 JNԷ Լ1 ՇԽP ՃԼ, -128 JNԷ Լ1 JԽP
1D1Օ_ՕՕԷRFԼՕW
Լ1: 1D1Օ D1v1Տօr8 . . . JԽP DՕNԷ
1D1Օ_ՕՕԷRFԼՕW:
. . . DՕNԷ:
Խնդիրների լուծման օրինակներ 1. Հաշվել հետևյալ արտահայտության արժեքը. =
∗
∗
:
Բոլոր փոփոխականները 16-բիթանոց նշանով թվեր են: Ենթադրել, որ գերհագեցում չի առաջանում։
.ԽՕDԷԼ ՏԽՃԼԼ
.DՃTՃ Ճ DW Ճ DW DW Շ DW D DW .ՇՕDԷ ԽՕՕ ԽՕՕ ԽՕՕ 1ԽՍԼ ԽՕՕ ԽՕՕ ԽՕՕ 1ԽՍԼ ՃDD ՃDՇ ԽՕՕ ՏՍ8 1D1Օ ԽՕՕ ԽՕՕ 1NT
ՃՃ, (DՃTՃ
DՏ, ՃՃ ՃՃ, 2 Ճ 8Ճ, DՃ ՇՃ, ՃՃ ՃՃ, 8 Շ ՃՃ, ՇՃ DՃ, 8Ճ ՇՃ, D ՇՃ, 3 ՇՃ Ճ, ՃՃ Ճէ, 4Շհ 21հ
ԷND
: DՃ:ՃՃ - Ճ " 2 : 8Ճ:ՇՃ - Ճ " 2 : DՃ:ՃՃ - 8 " Շ : DՃ:ՃՃ - Ճ " 2 - 8 " 2 : ՇՃ - D – 3 : ՃՃ - (Ճ " 2 - 8 " Շ) / (D – 3), : DՃ-ում մնացորդը
2. Բառերի զանգվածի տարրերի գումարում.
.ԽՕDԷԼ ՏԽՃԼԼ
.DՃTՃ Ճrra7 DW 1234հ, 5678հ, 9Ճ8Շհ, 0DԷF0հ, 0ՃՃ11հ Շօսոէ DW 0005հ R6Տս1է DW 0000հ, 0000հ .ՇՕDԷ ԽՕՕ
ՃՃ, (DՃTՃ
ԽՕՕ DՏ, ՃՃ ԽՕՕ DՃ, 00հ ԽՕՕ ՇՃ, Շօսոէ ԼԷՃ Տ1, Ճrra7 ԽՕՕ 8Ճ, |Տ1|
NԷՃT: 1NՇ
Տ1 1NՇ Տ1 ՃDD 8Ճ, |Տ1| ՃDՇ DՃ, 0 ԼՕՕP NԷՃT ԽՕՕ R6Տս1է, 8Ճ ԽՕՕ R6Տս1է - 2, DՃ ԽՕՕ Ճէ, 4Շհ 1NT 21հ ԷND
Խնդիրներ և վարժություններ 1. Նշել ՃԼ ռեգիստրի որևէ սկզբնական արժեք, որի դեպքում
ՃDD ՃԼ, 2 հրամանի կատարումից հետո դրոշները կունենան հետևյալ արժեքները. ա) ՇF - 1, ՕF - 0, ՏF - 0: բ) ՇF - 0, ՕF - 0, ՏF - 1:
2. Որոշել ՃԼ ռեգիստրի (առանց նշանի տասական թվի տեսքով) և
ՇF, 7F դրոշների արժեքները հետևյալ հրամանների կատարումից հետո. ա) ԽՕՕ ՃԼ, 100 բ) ԽՕՕ ՃԼ, 100 ՃDD ՃԼ, 100 ՃDD ՃԼ, 156 գ)
ԽՕՕ ՃԼ, 100 ՏՍ8 ՃԼ, 90
դ) ԽՕՕ ՃԼ, 100 ՏՍ8 ՃԼ, 190
3. Որոշել 8է ռեգիստրի (նշանով տասական թվի տեսքով) և ՕF, ՏF
դրոշների արժեքները հետևյալ հրամանների կատարումից հետո. ա) ԽՕՕ 8է, 80 բ) ԽՕՕ 8է, 90 գ) ԽՕՕ 8է, -80 ՃDD 8է, 40 ՃDD 8է, 40 ՃDD 8է, -40 դ) ԽՕՕ 8է, -80 ՃDD 8է, -50
ե) ԽՕՕ 8է, 80 ՃDD 8է, -40
զ) ԽՕՕ 8է, -80 ՃDD 8է, 40
է) ԽՕՕ 8է,80 ՏՍ8 8է,100
ը) ԽՕՕ 8է, -80 ՏՍ8 8է, 50
թ) ԽՕՕ 8է, 125 ՃDD 8է, 10
4. Որոշել ՇԼ ռեգիստրի (ինչպես նշանով, այնպես էլ առանց նշանի
տասական թվի տեսքով) և ՇF,ՕF, ՏF,7F դրոշների արժեքները հետևյալ հրամանների կատարումից հետո. ա) ԽՕՕ ՇԼ, 128 բ) ԽՕՕ ՇԼ, -10 ՃDD ՇԼ, 128 ՃDD ՇԼ, -40 գ) ԽՕՕ ՇԼ, 246 ՃDD ՇԼ, 216
դ) ԽՕՕ ՇԼ, 40
ՏՍ8 ՇԼ, 100
5. Որոշել Ճէ և ՃԼ ռեգիստրների (առանց նշանի տասական թվի
տեսքով) և ՇF, 7F դրոշների արժեքները հետևյալ հրամանների կատարումից հետո.
ա) ԽՕՕ Ճէ, 0 ԽՕՕ ՃԼ, 160
ՃDD ՃԼ, 60
ՃDՇ Ճէ, 3
բ) ԽՕՕ Ճէ, 0 ԽՕՕ ՃԼ, 160 ՃDD ՃԼ, 160
ՃDՇ Ճէ, 3
գ) ԽՕՕ Ճէ, 255 դ) ԽՕՕ Ճէ, 20 ԽՕՕ ՃԼ, 255
ԽՕՕ ՃԼ, 10
ՃDD ՃԼ, 1
ՏՍ8 ՃԼ, 16
ՃDՇ Ճէ, 0
Տ88 Ճէ, 0 6. Նշել բոլոր օգտագործված ռեգիստրների և վիճակի դրոշների արժեքները հետևյալ հրամանների կատարումից հետո.
ա) ԽՕՕ ՃԼ, 0
ԽՕՕ DՃ, 1283
ՃDD ՃԼ, DԼ
NԷՕ DԼ ԽՍԼ Dէ
Տ88 DԼ,ՃԼ
բ) ՏՍ8 DԼ, DԼ
ԽՕՕ ՇԼ, 3
ԽՕՕ ՃՃ, 155 D1Օ ՇԼ
ՃDՇ DԼ, ՃԼ
DԷՇ Ճէ
գ) ԽՕՕ Dէ, -33
ԽՕՕ ՃԼ, Dէ
1ԽՍԼ Dէ ՃDՇ Dէ, Ճէ 1NՇ Dէ ՏՍ8 ՃԼ, Dէ
դ) ԽՕՕ ՃՃ, 6
ԽՕՕ 8Ճ, -4 1ԽՍԼ 8Լ Տ88 ՃՃ, 8Ճ
ՃDD 8Ճ, ՃՃ
NԷՕ 8է
ե) ԽՕՕ ՃՃ, 275
ԽՕՕ ՇՃ, 7
1ԽՍԼ ՇԼ
ՃDՇ Ճէ, ՇԼ
ՏՍ8 ՇՃ, ՃՃ 1NՇ ՇՃ
զ) ԽՕՕ 8Ճ, 260 ԽՕՕ ՃՃ, -21 1D1Օ 8Լ NԷՕ Ճէ Տ88 ՃԼ, 5 ՃDD Ճէ, 8է
է) ԽՕՕ ԽՕՕ ԽՍԼ ՃDՇ ՏՍ8 DԷՇ
ը) ԽՕՕ ՃՃ, 1060 ԽՕՕ 8Ճ, -2 1D1Օ 8Լ Տ88 8Լ, Ճէ 1NՇ ՃԼ NԷՕ 8Լ
թ) ԽՕՕ ՃՃ, 1235հ ԽՕՕ 8Ճ, 720հ ԽՍԼ 8է
ՃDՇ Ճէ, 8Լ
ՏՍ8 8Ճ, ՃՃ DԷՇ ՃՃ
ՃՃ, 210 ՇՃ, 10 ՇՃ DՃ, ՇՃ ՇԼ, ՃԼ Ճէ
7. Որոշել ՃDD ՃՃ, 8Ճ և ՏՍ8 ՃՃ, 8Ճ հրամանների կատարման
արդյունքը, եթե ԷՃՃ-ը և Է8Ճ-ը համապատասխանաբար պարունակում են. ա) 7FFՃF158է, ԷF012ՃF1է բ) 01020008է, FFFFԷԷFFէ գ) 0000FFFFէ, Ճ8001111է 8. Որոշել ԽՍԼ 8է և 1ԽՍԼ 8է հրամանների կատարման արդյունքը, եթե ՃԼ և 8է ռեգիստրները համապատասխանաբար պարունակում են. ա) 01է, 0FFէ բ) 0F3է, 04է գ) 0FFէ, 0FFէ դ) 10է, 2Ճէ 9. Որոշել D1Օ Շէ և 1D1Օ Շէ հրամանների կատարման արդյունքը, եթե ՃՃ և Շէ ռեգիստրները համապատասխանաբար պարունակում են. ա) 0FFFFէ, 0FFէ բ) 8000է, 7Fէ գ) 0375է, 0Ճ0է դ) 0600է, 05է 10. Ճ, 8, Շ, Ճ, Մ, 7-ը նշանով թվեր են: Իրականացնել հետևյալ վերագրումները. ա) Ճ - Ճ8Տ (Ճ) , բ) 8 - ԽՃՃ (Ճ, Մ), գ) Շ - Խ1N (Ճ - 5, 3 " Մ, 10 - 7) 11. Տրված է N թիվը: Հաշվել 1-ից N թվերի գումարը: 12. Տրված է՝ Ճ DW :Ճ≥0: DԼ ռեգիստրում ստանալ. ա) Ճ թվի տասական ներկայացման իմաստալից թվանշանների քանակը,
բ) Ճ թվի տասական ներկայացման մեջ 5-ից մեծ թվանշանների գումարը, գ) Ճ թվի տասական ներկայացման մեջ ամենամեծ թվանշանը: 13. Տրված է՝ Ճ DW : Ճ » 0: DԼ ռեգիստրում գրանցել Ճ թվի տասական ներկայացման բարձր կարգի թվանշանը: 14. Հաշվել հետևյալ արտահայտությունների արժեքները՝ ենթադրե-
լով, որ արտահայտության մեջ օգտագործված փոփոխականները նշանով/առանց նշանի բայթեր/բառեր են և նրանց արժեքները որոշված են տվյալների սեգմենտում. 7 - (25 " a – 32 " Ե) / (14 " օ - 29) R - (24 " օ – 55 " մ - 1) / (13 " a - 17) T - -(39 " օ - 14 " մ) / (29 " a - 1) N - 31 - (46 " հ – 4 " յ) / 82 " օ N - (45 " օ – 22 " մ) / (13 " a - 1) D - (33 " f - 17 " հ) / 4 " k – 25 N - -(87 " Տ - 31 " մ) / (56 " a - 3) Օ - (18 " k - 15 " v - 1) / (42 " ք - 23) Ճ - (32 " a3 – 3" Ե5) / (Ե3 – 4 " a2) Մ - (4 " a5 – 3" a " Ե3) / (5 " Ե2 – 9 " a) 7 - (7 " Ե " a2 – 3 " a " Ե3) / (8 " a " Ե2 – a3) W - (12 " a6 – 5 " Ե3) / (2 " Ե – 8 " a2) Խ - (2 " օ " a3 – 19 " Ե3) / (Ե4 – 6 " օ - a2) P - (9 " օ " a3 – 4 " a " Ե3) / (օ " Ե3 - Ե "a2) F - (12 "a4 – 7 " Ե2)/(Ե4 – 3 " a2) Օ - (Ե " a2 – 25 " a " օ " Ե3) / (9 " Ե3 – օ " a2) Տ - (2 " օ " Ե " a3 – 13 " a " օ " Ե3) / (3 " Ե3 – 9 " օ "a2) T - (7 " a7 – 3 " Ե2) / (Ե2 – 10 " a2)
15. Գրել ծրագրի հատված, որը համարժեք կլինի Շ-- լեզվով գրված
հետևյալ ծրագրի հատվածին (անհրաժեշտ փոփոխականները հայտարարել տվյալների սեգմենտում). ա) 1ոէ 1, ո, Տ - 1: բ) 1ոէ Տ, ո: գ) 1ոէ k - 11, ո: ո - 50: 1 - 10: Տ - 0: ո - 4325: ո - 2157: Տ -- 1 " 1 - ո: Տ -- ո % 8: ո /- 10: ո /- 10: k -- ո % 15:
Տասական թվաբանության հրամաններ Այս խմբի հրամաններն օգտագործվում են տասական թվերի հետ աշխատելու համար։ Նրանք կատարում են ճշգրտումներ (շըտկումներ) երկուական թվաբանության հրամաններից հետո (բացառություն է կազմում բաժանում գործողությունը)։ Հրամանները չունեն բացահայտ օպերանդ։ Ոչ բացահայտ օպերանդ է դիտարկվում ՃԼ(ՃՃ) ռեգիստրը։ Գումարում և հանում գործողությունների ճշգըրտումները նախատեսված են 10-ական և՛ փաթեթավորված, և՛ ոչ փաթեթավորված թվերի համար, իսկ բաժանումը և բազմապատկումը՝ միայն ոչ փաթեթավորված թվերի համար։ ԾՃՃ Գումարումից հետո տասական ճշգրտում / D6օ1ոa1 aմյսՏէ afէ6r aմմ1է1օո ԾՃՏ Հանումից հետո տասական ճշգրտում / D6օ1ոa1 aմյսՏէ afէ6r ՏսԵէraօէ1օո ՃՃՃ Գումարումից հետո ՃՏՇ11 ճշգրտում / ՃՏՇ11 aմյսՏէ afէ6r aմմ1է1օո ՃՃՏ Հանումից հետո ՃՏՇ11 ճշգրտում / ՃՏՇ11 aմյսՏէ afէ6r ՏսԵէraօէ1օո ՃՃM Բազմապատկումից հետո ՃՏՇ11 ճշգրտում / ՃՏՇ11 aմյսՏէ afէ6r ոս1է1ք11օaէ1օո ՃՃԾ Բաժանումից առաջ ՃՏՇ11 ճշգրտում / ՃՏՇ11 aմյսՏէ Ե6fօr6 մ1v1Տ1օո
ՃՃՃ – Գումարումից հետո տասական ճշգրտում ոչ փաթեթավորված տասական թվերի համար / ՃՏԸ11 Ճմյս5է a1է6ո Ճմմiէiօո Շարահյուսություն: ՃՃՃ Նկարագրություն: Եթե ((ՃԼ & 0Fէ) » 9) || (ՃF - 1), ապա
( ՃԼ (ՃԼ - 6): Ճէ Ճէ - 1: ՃF 1: ՇF 1:
Դրոշներ:
յ Հակառակ դեպքում` ( ՃF 0: ՇF 0: յ ՃԼ ՃԼ & 0Fէ: ՃF ՇF ՕF - 2 PF - 2 ՏF - 2 7F - 2
ՃF և ՇF դրոշների արժեքները որոշվում են ըստ նկարագրության։ ՕF, ՏF, 7F, PF դրոշների արժեքներն անորոշ են: Օրինակ
ԽՕՕ Ճէ, 0
ԽՕՕ ՃԼ, ‘5’ ԽՕՕ 8Լ, ‘7’
ՃDD ՃԼ, 8Լ
: ՃԼ - 6Շհ, ՃF - 0 ՃՃՃ : ՃԼ - 02հ, ՇF - 1, ՃF - 1, Ճէ - 1 ՃՃՏ – Հանումից հետո տասական ճշգրտում ոչ փաթեթավորված տասական թվերի համար /ՃՏԸ11 Ճմյս5է ՃԼ a1է6ո ՏսեէոaՇէiօո Շարահյուսությունը: ՃՃՏ Նկարագրությունը: Եթե ((ՃԼ & 0Fէ) » 9) || (ՃF - 1), ապա ( ՃԼ (ՃԼ - 6): Ճէ Ճէ - 1: ՃF 1:
ՇF 1: յ Հակառակ դեպքում ( ՃF 0: ՇF 0: յ ՃԼ ՃԼ & 0Fէ: ՃF ՇF ՕF - 2 PF - 2 ՏF - 2 7F - 2
Դրոշներ:
ՃF և ՇF դրոշների արժեքները որոշվում են ըստ նկարագրության։ ՕF, ՏF, 7F, PF դրոշների արժեքներն անորոշ են: Օրինակ ՏՍ8 ՃՃՏ
ՃԼ, 8Լ
Նախքան ՏՍ8 հրամանի կատարումը ՃՃ - 00 08հ 8Լ - 03 ՃՃ - 00 03հ 8Լ - 07 ՃՃ - 05 02հ 8Լ - 09
ՏՍ8 հրամանից հետո ՃՃ - 00 05հ ՃF - 0
ՃՃ - 00 FՇհ
ՃF - 1 ՃՃ - 05 F9հ ՃF - 1
ՃՃՏ հրամանից հետո ՃՃ - 00 05հ ՃF - 0, ՇF - 0 ՃՃ - FF 06հ ՃF - 1, ՇF - 1 ՃՃ - 04 03հ ՃF - 1, ՇF - 1
ԾՃՃ Գումարումից հետո տասական ճշգրտում փաթեթավորած տասական թվերի համար / Ծ6Շiոa1 Ճմյս5է ՃԼ a1է6ո Ճմմiէiօո Շարահյուսություն: ԾՃՃ Նկարագրություն: Եթե (((ՃԼ ՃND 0Fէ) » 9) կամ ՃF - 1), ապա ( ՃԼ ՃԼ - 6: ՇF ՇF կամ փոխանցում վերջին գումարումից՝ ՃԼ - 6 - ից հետո (ՇF ՕR օarr7 frօո ՃԼ ՃԼ - 6 ) ՃF 1: յ Հակառակ դեպքում՝ ՃF 0:
Եթե ((ՃԼ ՃND F0է) » 90է) կամ ՇF - 1), ապա ( ՃԼ ՃԼ - 60է: ՇF 1: յ Հակառակ դեպքում՝ ՇF 0: ՃF ՇF ՕF - 2 PF ՏF 7F
Դրոշներ:
ՃF և ՇF դրոշների արժեքները որոշվում են ըստ նկարագրության։ ՏF, 7F, և PF դրոշներն արժեքներ են ընդունում ըստ արդյունքի։ ՕF դրոշի արժեքն անորոշ է: Օրինակ ՃDD DՃՃ
ՃԼ, 8Լ
Նախքան ՃDD հրամանի կատարումը ՃԼ - 34հ 8Լ - 25հ ՃԼ - 37հ 8Լ - 25հ ՃԼ - 93հ 8Լ - 25հ ՃԼ - 28հ 8Լ - 39հ ՃԼ - 79հ 8Լ - 99հ
Օրինակ 1. ԽՕՕ ԽՕՕ ՃDD DՃՃ
ՃԼ, 53հ ՇԼ, 29հ ՃԼ, ՇԼ
ՃDD հրամանից հետո ՃԼ - 59հ ՃF - 0, ՇF - 0 ՃԼ- 5Շհ ՃF- 0, ՇF - 0 ՃԼ - 88հ ՃF - 0, ՇF - 0 ՃԼ - 61հ ՃF - 1, ՇF - 0 ՃԼ - 12հ ՃF - 1, ՇF - 1
DՃՃ հրամանից հետո ՃԼ - 59հ ՃF -0, ՇF - 0 ՃԼ - 62հ ՃF -1, ՇF - 0 ՃԼ - 18հ ՃF - 0, ՇF - 1 ՃԼ - 67հ ՃF - 1, ՇF - 0 ՃԼ - 78հ ՃF - 1, ՇF - 1
: ՃԼ ՃԼ - ՇԼ : ՃԼ 53հ - 29հ - 7Շհ : ՃԼ 7Շհ - 06 ( քանի որ 0Շհ » 9 ) : ՃԼ 82հ
2. ԽՕՕ ԽՕՕ ՃDD
ՃԼ, 73հ ՇԼ, 29հ ՃԼ, ՇԼ
DՃՃ
: ՃԼ ՃԼ - ՇԼ : ՃԼ 73հ - 29հ - 9Շհ : ՃԼ 02 և ՇF - 1
ՃԼ - 73 ՇԼ - 29 9Շ Ճ2 ՃԼ - 02 և ՇF - 1 ԾՃՏ Հանումից հետո տասական ճշգրտում փաթեթավորված տասական թվերի համար - Ծ6Շiոa1 Ճմյս5է ՃԼ a1է6ո ՏսեէոaՇէiօո Շարահյուսություն: ԾՃՏ Նկարագրություն: Եթե (ՃԼ ՃND 0Fէ) » 9 || ՃF 1), ապա ( ՃԼ ՃԼ − 6: ՇF ՇF կամ պարտք վերջին հանումից՝ ՃԼ-6-ից հետո (ՇF ՕR Եօrrօw frօո ՃԼ ՃԼ − 6 ) ՃF 1: յ Հակառակ դեպքում՝ ՃF 0: Եթե ((ՃԼ ՃND F0հ) » 90հ) կամ ՇF - 1), ապա ( ՃԼ ՃԼ − 60է: ՇF 1: յ
Դրոշներ:
Հակառակ դեպքում՝ ՇF 0: ՃF ՇF ՕF - 2 PF ՏF 7F
ՃF և ՇF դրոշների արժեքները որոշվում են ըստ նկարագրության։ ՏF, 7F, և PF դրոշներն արժեքներ են ընդունում ըստ արդյունքի։ ՕF դրոշի արժեքն անորոշ է: Օրինակ ՏՍ8 ՃԼ, 8Լ DՃՏ Նախքան ՏՍ8 հրամանի կատարումը ՃԼ - 25հ 8Լ - 69հ ՃԼ - 37հ 8Լ - 25հ ՃԼ - 93հ 8Լ - 25հ ՃԼ - 92հ 8Լ - 39հ ՃԼ - 79հ 8Լ - 95հ
ՏՍ8 հրամանից հետո ՃԼ - 8Շհ ՃF - 1, ՇF - 1 ՃԼ - 12հ ՃF - 0, ՇF - 0 ՃԼ - 6Էհ ՃF - 1, ՇF - 0 ՃԼ - 59հ ՃF - 1, ՇF - 0 ՃԼ - Է4հ ՃF - 0, ՇF - 1
DՃՏ հրամանից հետո ՃԼ - 56հ ՃF - 1, ՇF - 1 ՃԼ - 12հ ՃF - 0, ՇF - 0 ՃԼ - 68հ ՃF -1, ՇF - 0 ՃԼ - 53հ ՃF -1, ՇF - 0 ՃԼ - 84հ ՃF -0, ՇF - 1
Օրինակ ՃԼ ռեգիստրում գրված 16-ական թվանշանը ձևափոխել իրեն համապատասխան սիմվոլի ՃՏՇ11 կոդի. ՇԽP ՃԼ, 10 Տ88 ՃԼ, 69հ DՃՏ
ՃՃԾ – Բաժանումից առաջ ճշգրտում տասական ոչ փաթեթավորված թվերի համար / ՃՏԸ11 Ճմյս5է ՃՃ ե61օո6 Ծivi5iօո Շարահյուսություն: Նկարագրություն: Դրոշներ:
ՃՃD ՃԼ (ՃԼ - Ճէ ∗ 10) ՃND FFէ, Ճէ 0 ՃF - 2 ՇF - 2 ՕF - 2 PF ՏF 7F
ՏF, 7F և PF դրոշներն արժեք են ստանում ըստ ՃԼ ռեգիստրի արժեքի, ՃF, ՇF և ՕF դրոշներն անորոշ են: Օրինակ ՃՃD D1Օ
Dէ
Նախքան ՃՃD հրամանի կատարումը ՃՃ - 07 05հ Dէ - 08հ ՃՃ - 06 02հ Dէ - 04հ ՃՃ - 09 03հ Dէ - 02հ
ՃՃD հրամանից հետո ՃՃ - 00 48հ Dէ - 08հ ՃՃ - 00 3Էհ Dէ - 04հ ՃՃ - 00 5Dհ Dէ - 02հ
D1Օ հրամանից հետո
ՃՃ - 03 09հ ՃՃ - 02 0Fհ ՃՃ - 01 2Էհ
ՃՃM – Բազմապատումից հետո ճշգրտում տասական ոչ փաթեթավորված թվերի համար / ՃՏԸ11 Ճմյս5է ՃՃ a1է6ո Mս1էiք1y Շարահյուսություն: Նկարագրություն: Դրոշներ:
ՃՃM Ճէ ՃԼ / 10: ՃԼ ՃԼ ԽՕD 10: ՃF - 2 ՇF - 2 ՕF - 2 PF ՏF 7F
ՏF, 7F և PF դրոշներն արժեք են ստանում ըստ ՃԼ ռեգիստրի արժեքի։ ՃF, ՇF և ՕF դրոշներն անորոշ են։ Օրինակ ԽՍԼ 8է ՃՃԽ
Նախքան ԽՍԼ հրամանի կատարումը ՃՃ - 00 09հ 8է - 09հ ՃՃ - 00 05հ 8է - 06հ ՃՃ - 00 06հ Dէ - 07հ
ԽՍԼ հրամանից հետո
ՃՃԽ հրամանից հետո
ՃՃ - 00 51հ
ՃՃ - 08 01հ
ՃՃ - 00 1Էհ
ՃՃ - 03 00հ
ՃՃ - 00 2Ճհ Dէ - 02հ
ՃՃ - 04 02հ
Խնդիրների լուծման օրինակներ 1. Գումարել տրված Ճ և 8 20 սիմվոլից բաղկացած 10-ական թվերը և արդյունքն արտածել 10- ական համակարգով.
.ԽՕDԷԼ ՏԽՃԼԼ
.DՃTՃ N ԷՕՍ 20 Ճ D8 “90822346771463283930” D8 “21839839390913214263” Շ D8 21 մսք(2) .ՇՕDԷ Խa1ո: ԽՕՕ
ՃՃ, (DՃTՃ
ԽՕՕ DՏ, ՃՃ ԽՕՕ Տ1, N-1 ԽՕՕ ՇՃ, N ՇԼՇ Տսո: ԽՕՕ ՃԼ, Ճ|Տ1| : ՃԼ Ճ թվի հերթական : թվանշանը, ՃDՇ ՃԼ, 8|Տ1| : ՃԼ-ի կրտսեր 4 բիթում Ճ և 8 : թվերի հերթական թվանշան: ների տասական գումարն է, : ՇF - 1՝ եթե կա փոխանցում : (այսինքն՝ 9 - 2 - 1 և ՇF - 1), ՃՃՃ : ՃԼ Ճ և 8 թվերի հերթական : թվանշանների տասական : գումարը:
ԽՕՕ Շ|Տ1 - 1|, ՃԼ DԷՇ Տ1 ԼՕՕP Տսո ԽՕՕ Շ, 0 ՃDՇ Շ, 0 : Արտածել գումարը ԽՕՕ ՇՃ, N - 1 ԽՕՕ Ճէ, 2 ԽՕՕ Տ1, 0 Pr1ոէ: ԽՕՕ DԼ, Շ|Տ1| ՃDD DԼ, ‘0’ 1NT 21հ 1NՇ Տ1 ԼՕՕP քr1ոէ ԽՕՕ Ճէ, 4Շհ 1NT 21հ ԷND ոa1ո 2. Բազմապատկել N-նիշանոց Ճ ոչ փաթեթավորված տասական թիվը միանիշ Մ թվի հետ և արդյունքը գրանցել 7-ում։ N Ճ Մ
ԷՕՍ D8 D8 D8
… N DՍP(2) 2, N DՍP (2)
:N»0 : 0-ից 9 : առաջին բայթը՝ փոխանցման : համար
…
ո1է:
ԽՕՕ ԽՕՕ ԽՕՕ ԽՕՕ ԽՍԼ ՃՃԽ
ՇՃ, N Տ1, N - 1 8է, 0 ՃԼ, Ճ|Տ1| Մ
: Ճ-ի ինդեքսը (աջից ձախ)
ՃDD
ՃԼ, 8է
: հաշվի առնել կրտսեր կարգից : եկած փոխանցումը
ՃՃՃ ԽՕՕ ԽՕՕ DԷՇ ԼՕՕP ԽՕՕ
7|Տ1 - 1|, ՃԼ 8է, Ճէ : հիշել փոխանցումը Տ1 ո1է 7, 8է : արտադրյալի ավագ թվանշանը
3. Բաժանել N-նիշանոց Ճ ոչ փաթեթավորված տասական թիվը միանիշ Մ թվի վրա` գրանցելով ստացված քանորդը Օ-ում, իսկ մնացորդը՝ R-ում։ N Ճ Մ Օ R
DՕ:
ԷՕՍ D8 D8 D8 D8 … ԽՕՕ ԽՕՕ ԽՕՕ ԽՕՕ ՃՃD ԽՕՕ 1NՇ ԼՕՕP ԽՕՕ
… N DՍP(2) N DՍP (2)
:N»0 : 0-ից 9 : Ճ մ1v Մ : Ճ ոօմ Մ
ՇՃ, N Տ1, 0 Ճէ, 0 ՃԼ, Ճ|Տ1| : ՃՃ-ում՝ Ճէ և ՃԼ թվանշան: ներից ստացված թիվը Օ|Տ1|, ՃԼ Տ1 DՕ R, Ճէ
: Ճ-ը Մ–ի վրա բաժանելուց : ստացված մնացորդը
Խնդիրներ և վարժություններ 1. Ի՞նչ արժեքներ կունենան ՃՃ ռեգիստրը և ՇF դրոշը հետևյալ հրամանների կատարումից հետո. ԽՕՕ ՃՃ, 0039հ
ՃDD ՃԼ, 44հ
DՃՃ 2. Կազմել ծրագիր, որը ներածի տասական կետից հետո N - 20 տասական թվանշաններից կազմված տասական համակարգի թվի կոտորակային մասը, այն թարգմանի 8-ական համակարգի և արտածի ստացված թիվը։ 3. Կազմել ծրագիր, որը ներածի 7 թվանշաններից կազմված 10-ական համակարգի թիվ, թարգմանի այն 8-ական համակարգի և արտածի։ 4. Ներածել 20 սիմվոլից բաղկացած երկու տասական թիվ, կատարել հանում գործողություն և արդյունքն արտածել։ 5. Կազմել ծրագիր, որը հաշվում է հետևյալ արտահայտության արժեքը տասական տեսքով. Մ - (3 " Ճ - 5 " 8) / (2 " Շ - 7), որտեղ Ճ - 5, 8 - 3, Շ - 6: 6. Կազմել ծրագիր, որը ներածում է տասական համակարգի ութանիշ ամբողջ թիվ, թարգմանում է այն վեցական համակարգի և արտածում:
Տրամաբանական հրամաններ Տրամաբանական հրամանները բայթերի/բառերի/կրկնակի բառերի համար կատարում են հիմնական ՃND, ՕR, ՃՕR, և NՕT տրամաբանական գործողությունները. ՃND կատարել բիթ առ բիթ տրամաբանական “և” (&), ՕR կատարել բիթ առ բիթ տրամաբանական “կամ” (|), ՃՕR կատարել բիթ առ բիթ տրամաբանական “բացառող կամ” (^),
NՕT կատարել բիթ առ բիթ տրամաբանական “ժխտում” (!), TԷՏT կատարել բիթ առ բիթ տրամաբանական ստուգում (&): Տրամաբանական հրամաններով կարելի է առաջին օպերանդի՝ ընդունիչի որոշակի բիթեր դարձնել որոշակի արժեքներ: Օպերանդներն այս հրամաններում նույնպես պետք է բավարարեն ընդհանուր սահմանափակումներին (ինչպես ԽՕՕ, ՃDD հրամաններում): Գործողության արդյունքը պահվում է ընդունիչում (բացառությամբ TԷՏT հրամանի): Հրամաններն ազդում են վիճակի դրոշների վրա: Գործողությունները կատարվում են բիթ առ բիթ՝ ըստ Աղյուսակ 1-ի և բավարարում են Աղյուսակ 2-ում բերված հատկությունները: Ճ
Y
Ճ ՃNԾ Y
Ճ ՕR Y
Ճ ՃՕR Y
NՕT Ճ
Աղյուսակ 1. Տրամաբանական գործողությունների ճշտության աղյուսակ
"
ՃNԾ
ՕR
ՃՕR
Ճ"0 Ճ Ճ Ճ"1 Ճ NՕT Ճ Ճ"Ճ Ճ Ճ
Ճ " NՕT Ճ
Աղյուսակ 2. Տրամաբանական գործողությունների հատկությունները
ՃNԾ – Տրամաբանական բազմապատկում (և) Շարահյուսություն: Նկարագրություն: Դրոշներ:
ՃNԾ ընդունիչ, աղբյուր ընդունիչ ընդունիչ ՃND աղբյուր ՃF - 2 ՇF - 0 ՕF - 0 PF ՏF 7F
Ընդունիչը կարող է լինել ռեգիստր (r6ջ8/r6ջ16/r6ջ32) կամ հիշողության հասցե (ո6ո8/ո6ո16/ո6ո32), իսկ աղբյուրը՝ ռեգիստր (r6ջ8/r6ջ16/r6ջ32), հիշողության հասցե (ո6ո8/ո6ո16/ո6ո32) կամ
անմիջական արժեք (1ո8/1ո16/1ո32)։ Դրոշները՝ ՇF - ՕF - 0, ՃF-ը անորոշ է, իսկ PF, ՏF, 7F-ը` ըստ նշանակության։ Օրինակ ԽՕV ՃND
ՃՆ, 43 : 001010118 ՃՆ, 94 : 010111108 001010118 010111108 ՃԼ - 000010108 Արդյունքում՝ ՇF - 0, ՕF - 0, ՏF - 0, 7F - 0, PF - 1 ՃF - 2 ՃND հրամանը կարելի է օգտագործել անհրաժեշտ բիթերը զրոյացնելու համար: Հրամանը կարելի է օգտագործել նաև անհրաժեշտ բիթերը զատելու համար: Օրինակ ՃND
ՃԼ, 11 Ճ Ճ Ճ 11 - 00001011Ե 0 0 0
Ճ 0
Ճ Ճ
ՕR – Տրամաբանական գումարում (կամ) Շարահյուսություն: Նկարագրություն: Դրոշներ:
ՕR ընդունիչ, աղբյուր ընդունիչ ընդունիչ ՕR աղբյուր ՃF - 2 ՇF - 0 ՕF - 0 PF ՏF 7F
Ընդունիչը կարող է լինել ռեգիստր (r6ջ8/r6ջ16/r6ջ32) կամ հիշողության հասցե (ո6ո8/ո6ո16/ո6ո32), իսկ աղբյուրը՝ ռեգիստր (r6ջ8/r6ջ16/r6ջ32), հիշողության հասցե (ո6ո8/ո6ո16/ո6ո32) կամ
անմիջական արժեք(1ո8/1ո16/1ո32)։ Դրոշները՝ ՇF - ՕF - 0, ՃF-ը անորոշ է, իսկ PF, ՏF, 7F-ը` ըստ նշանակության: Օրինակ ԽՕՕ ՕR
ՃԼ, 43 ՃԼ, 94
: ՃԼ - 001010118 : ՃԼ - 010111108, ՇF - 0, ՕF - 0, : ՏF - 0, 7F - 0, PF - 0 ՃF - 2
001010118 010111108 ՃԼ - 011111118 Հրամանը կարելի է օգտագործել անհրաժեշտ բիթերը 1 դարձնելու համար: Օրինակ ՃԼ ռեգիստրի 0, 1, 3 համարի բիթերը դարձնել 1։ ՕR
ՃԼ, 11
: կամ ՕR Ճ
ՃԼ, 000010118 Ճ Ճ
11 - 00001011Ե
ՃՕR – Բացառող կամ (գումարում ըստ մոդուլ 2-ի) Շարահյուսություն: Նկարագրություն: Դրոշներ:
ՃՕR ընդունիչ, աղբյուր ընդունիչ ընդունիչ ՃՕR աղբյուր ՃF - 2 ՇF - 0 ՕF - 0 PF ՏF 7F
Ընդունիչը կարող է լինել ռեգիստր (r6ջ8/r6ջ16/r6ջ32) կամ հիշողության հասցե (ո6ո8/ո6ո16/ո6ո32), իսկ աղբյուրը՝ ռեգիստր (r6ջ8/r6ջ16/r6ջ32), հիշողության հասցե (ո6ո8/ո6ո16/ո6ո32) կամ անմիջական արժեք (1ո8/1ո16/1ո32)։ Դրոշները՝ ՇF - ՕF - 0, ՃF-ը` անորոշ է, իսկ PF, ՏF, 7F-ը` ըստ նշանակության։
Օրինակ
ԽՕՕ ՃԼ, 43
: ՃԼ - 001010118
ՃՕR ՃԼ, 94
: ՃԼ - 010111108 001010118 010111108 ՃԼ - 011101018 ՇF = 0, ՕF = 0, ՏF = 0, ZF = 0, 2F = 0, ՃF = ? Հրամանը կարելի է օգտագործել օպերանդը զրոյացնելու կամ անհրաժեշտ բիթերի արժեքները հակադարձելու համար: Օրինակ Հակադարձել ՃԼ ռեգիստրի 0, 1, 3 համարի բիթերը։ ՃՕR
ՃԼ, 000010118 Ճ 11 - 00001011Ե !Ճ
Ճ Ճ
!Ճ !Ճ
Օրինակ ՃX ՃՕR
ՃՃ, ՃՃ
: ավելի արագ է, քան ‘ԽՕՕ ՃՃ, 0’ : հրամանը
Օրինակ Փոխանակել ՃՃ և 8Ճ ռեգիստրների արժեքները առանց երրորդ փոփոխականի օգտագործման։ ՃՕR ՃՃ, 8Ճ ՃՕR 8Ճ, ՃՃ
ՃՕR ՃՃ, 8Ճ
: համարժեք է ‘ՃՇէՕ ՃՃ, 8Ճ’
TEՏT– Տրամաբանական ստուգում Շարահյուսություն: Նկարագրություն: Դրոշներ:
TEՏT ընդունիչ, աղբյուր ընդունիչ ՃND աղբյուր ՃF - 2 ՇF - 0 ՕF - 0 PF ՏF 7F
Ընդունիչը կարող է լինել ռեգիստր (r6ջ8/r6ջ16/r6ջ32) կամ հիշողության հասցե (ո6ո8/ո6ո16/ո6ո32), իսկ աղբյուրը՝ ռեգիստր (r6ջ8/r6ջ16/r6ջ32), հիշողության հասցե (ո6ո8/ո6ո16/ո6ո32) կամ անմիջական արժեք (1ո8/1ո16/1ո32)։ Դրոշները՝ ՇF - ՕF - 0, ՃF-ը անորոշ է, իսկ PF, ՏF, 7F-ը` ըստ նշանակության։ TԷՏT-ը կատարում է նույն գործողությունը, ինչ ՃND հրամանը, միայն ընդունիչը չի փոխվում: Հրամանն ազդում է վիճակի դրոշների վրա: TԷՏT հրամանն ավելի արագ է կատարվում, քան ՃND հրամանը: Օրինակ ԽՕՕ TԷՏT
ՃԼ, 43 ՃԼ, 94
: ՃԼ - 001010118 : ՇF - 0, ՕF - 0, ՏF - 0, 7F - 0, : PF - 1 ՃF - 2
J7
Լ1 43 - 001010118 94 - 010111108 000010108 ՃԼ - 43 - 001010118 Չի անցնի Լ1 նշիչին, քանի որ արդյունքի 1 և 3 բիթերը 1 են, և հետևաբար 7F - 0: Օրինակ Անցում կատարել Լ1 նշիչին, եթե ՃԼ ռեգիստրի 0,1,3 բիթերից գոնե մեկը 1 է: TԷՏT ՃԼ, 11 JN7 Լ1
Ճ Ճ Ճ 11 - 00001011Ե 0 0
Ճ 0
Ճ Ճ
NՕT – Տրամաբանական ժխտում (ոչ) Շարահյուսություն: Նկարագրություն: Դրոշներ:
NՕT ընդունիչ ընդունիչ NՕT (ընդունիչ)
Ընդունիչը կարող է լինել ռեգիստր (r6ջ8/r6ջ16/r6ջ32) կամ հիշողության հասցե (ո6ո8/ո6ո16/ո6ո32)։ NՕT հրամանով ընդունիչի բոլոր բիթերի արժեքները ժխտվում են (01, 10): Հրամանը դրոշների վրա չի ազդում: Օրինակ ԽՕՕ ՃԼ, 43 : ՃԼ - 001010118 NՕT ՃԼ : ՃԼ - 110101008
Խնդիրների լուծման օրինակներ 1. DԼ ռեգիստի 0, 1 բիթերը դարձնել 0-ներ, 6, 7 բիթերը դարձնել 1եր, իսկ մնացածները՝ հակադարձել:
.ԽՕDԷԼ T1NՄ
.ՇՕDԷ ՕRՕ 100հ
8ԷՕ1N: ԽՕՕ
DԼ, 087հ : DԼ - 10110111Ե ՃND DԼ, 11111100Ե : DԼ - 10110100Ե ՕR DԼ, 11000000Ե : DԼ - 11110100Ե ՃՕR DԼ, 00111100Ե : DԼ - 11001000Ե ԽՕՕ ՃՃ, 4Շ00հ 1NT 21հ ԷND 8ԷՕ1N
2. Գրել ծրագրի հատված, որը կստուգի ՃԼ ռեգիստրի 0, 2, 3 բիթերում 0-ների, իսկ 1 և 5 բիթերում 1-երի առկայությունը: Լուծում: Խնդիրը կարելի է լուծել տարբեր եղանակներով: Մի քանի բիթերի միաժամանակ 0 լինելը հարմար է ստուգել մեկ TԷՏT հրամանով, սակայն միաժամանակ 1 լինելը մեկ հրամանով չի ստուգվում: Բացի դրանից՝ կան այլ բիթեր՝ 4, 6, 7, որոնց արժեքները նույնպես անհայտ են: Հետևաբար նախ հարկավոր է այդ այլ բիթերի արժեքները որոշակիացնել, ապա՝ ստուգվող բիթերը համեմատել կոնկրետ արժեքի հետ: Լուծման 1-ին եղանակ
ԽՕՕ DԼ, ՃԼ
: հիշենք, եթե դրա կարիքը հետագայում կա, ՃND ՃԼ, 00101111Ե : այլ բիթերը դարձնենք 0, ՇԽP ՃԼ, 00100010Ե : ստուգենք անհրաժեշտ բիթերի արժեքները, J7 Լ1 : կանցնի Լ1 նշիչին, եթե բավարարում է : խնդրի պայմանին: … Լուծման 2-րդ եղանակ
ԽՕՕ DԼ, ՃԼ
: հիշենք, եթե դրա կարիքը հետագայում կա, ՕR ՃԼ, 11010000Ե : այլ բիթերը դարձնենք 1, ՇԽP ՃԼ, 11110010Ե : ստուգենք անհրաժեշտ բիթերի արժեքները, J7 ԼԼ : կանցնի ԼԼ նշիչին, եթե բավարարում է : խնդրի պայմանին: … Լուծման 3-րդ եղանակ
ԽՕՕ DԼ, ՃԼ
: հիշենք, եթե դրա կարիքը հետագայում կա, ՃND ՃԼ, 00101111Ե : այլ բիթերը դարձնենք 0, ՃՕR ՃԼ, 00100010Ե : 1 - երի բիթերը շրջենք, որպեսզի TԷՏT ՃԼ, 00101111Ե : մեկ TԷՏT-ով հնարավոր լինի ստուգել : արդյո՞ք բոլորը միաժամանակ 0 են, J7 Լ1 : կանցնի Լ1 նշիչին, եթե բավարարում է : խնդրի պայմանին: …
Խնդիրներ և վարժություններ 1. Նշել ռեգիստրների և վիճակի դրոշների հրամանների կատարումից հետո՝
ա) ԽՕՕ ՃՃ, 22
բ) ՃՕR
ԽՕՕ Dէ, 5
ԽՕՕ ՕR ՃԼ, Dէ NՕT
ՃՕR ՃՃ, 40
ՕR ՃND Ճէ, 0Է3է ՃՕR ՃDՇ Dէ, Ճէ ՃND գ) ԽՕՕ ԽՕՕ ՃND ՕR ՃՕR
դ) ԽՕՕ ԽՕՕ ՕR ՃND NՕT
DԼ, 54 Dէ, 25հ DԼ, Dէ
DՃ, 2Շ4Ճհ
Dէ, 3
արժեքները հետևյալ ՇՃ, ՇՃ 8Ճ, 258 8Լ ՇԼ, 8է Շէ, 8Լ ՇՃ, 0D5է ՃՃ, 267 DՃ, 340 DԼ, ՃԼ Dէ, 25 ՃԼ
2. Տրված Ճ և 8 նշանով ամբողջ թվերի միաչափ բայթային զանգվածներից ստանալ Շ միաչափ զանգվածը, որտեղ Շ|1|-ն հավասար է. ա) Ճ|1|-ի և 8|1|-ի տրամաբանական արտադրյալին, բ) Ճ|1|-ի և 8|1|-ի տրամաբանական գումարին, գ) Ճ|1|-ի և 8|1|-ի ըստ մոդուլ 2-ի գումարին, դ) Ճ|1|-ի ժխտմանը: 3. Ներածել 9 սիմվոլներից բաղկացած միաչափ զանգված: Հաշվել և արտածել էկրանին այն սիմվոլների քանակը, որոնց 2 և 4 համարի բիթերում 0 է, իսկ 1 և 5 համարի բիթերում՝ 1: Այդպիսի սիմվոլներում 3 և 5 համարի բիթերը դարձնել 0, 0 համարի բիթը դարձնել 1, իսկ 6 և 7 համարի բիթերի արժեքը՝ հակադարձել: Ստացված զանգվածն արտածել էկրանին: 4. Ներածել 15 սիմվոլներից բաղկացած միաչափ զանգված: Առանձնացնել ենթազանգված այն սիմվոլներից, որոնց 4 և 5 հա117
մարի բիթերը 1 են, իսկ 2 և 7 համարի բիթերը՝ 0: Ենթազանգվածում սիմվոլների 0 և 5 համարի բիթերը դարձնել 0, 3 և 7 համարի բիթերը հակադարձել, իսկ համար 6 բիթը՝ դարձնել 1: Ենթազանգվածն արտածել էկրանին:
Տեղաշարժի և պտույտի հրամաններ Տեղաշարժի և պտույտի հրամանները տեղաշարժում (Տհ1fէ) կամ պտտում են (rօէaէ6) բայթային, բառային կամ կրկնակի բառային ընդունիչ օպերանդի բիթերը: Դրանք են՝ ՏՃR թվաբանական աջ տեղաշարժ /Տհ1fէ ar1էհո6է1օ r1ջհէ, ՏէR տրամաբանական աջ տեղաշարժ /Տհ1fէ 1օջ1օa1 r1ջհէ, ՏՃԼ/ՏէԼ թվաբանական/տրամաբանական ձախ տեղաշարժ /Տհ1fէ ar1էհո6է1օ 16fէ/Տհ1fէ 1օջ1օa1 16fէ, ՏէRD կրկնակի աջ տեղաշարժ /Տհ1fէ r1ջհէ մօսԵ16, ՏէԼD կրկնակի ձախ տեղաշարժ /Տհ1fէ 16fէ մօսԵ16, RՕR ցիկլիկ աջ տեղաշարժ /Rօէaէ6 r1ջհէ, RՕԼ ցիկլիկ ձախ տեղաշարժ /Rօէaէ6 16fէ, RՇR ցիկլիկ աջ տեղաշարժ փոխանցման դրոշով /Rօէaէ6 էհrօսջհ օarr7 r1ջհէ, RՇԼ ցիկլիկ ձախ տեղաշարժ փոխանցման դրոշով /Rօէaէ6 էհrօսջհ օarr7 16fէ, Տեղաշարժի և պտույտի հրամանները բաժանվում են երեք խմբի. տեղաշարժի հրամաններ, ցիկլիկ տեղաշարժի կամ պտույտի հրամաններ, կրկնակի տեղաշարժի հրամաններ (386-): Առաջին երկու խմբերի շարահյուսությունն է. Հհրամանի հուշանուն> ընդունիչ, հաշվիչ
որտեղ ՝
ընդունիչը ռեգիստր է (r6ջ8/r6ջ16/r6ջ32) կամ հիշողության հասցե (ո6ո8/ո6ո16/ո6ո32), հաշվիչը 1 է կամ ՇԼ ռեգիստրը` 8086 պրոցեսորի համար, իսկ 80186 և բարձր պրոցեսորների համար՝ 8-բիթանոց անմիջական արժեք (1ո8) կամ ՇԼ ռեգիստրը։ Հաշվիչը որոշում է տեղաշարժվող բիթերի քանակը: 8086-ի դեպքում, եթե հաշվիչը ՇԼ է, տեղաշարժը կատարվում է ՇԼ-ում գրված թվի չափով: 80286-ից սկսած՝ տեղաշարժը կատարվում է ՇԼ-ի կրտսեր 5 բիթերի չափով՝ 0-ից 31 արժեքներով (64-բիթանոց ճարտարապետությունում՝ ՇԼ-ի 6 բիթերի չափով՝ 0-ից 63 արժեքներով): Հաշվիչի արժեքը 0 լինելու դեպքում տեղաշարժ չի կատարվում, և դրոշները չեն փոխվում:
Տեղաշարժի հրամաններ Տեղաշարժի հրամանները լինում են տրամաբանական և թվաբանական և կատարում են տեղաշարժ դեպի աջ կամ ձախ: Տեղաշարժի հրամաններ տրամաբանական տեղաշարժի հրամաններ (առանց նշանի օպերանդների համար)
թվաբանական տեղաշարժի հրամաններ (նշանով օպերանդների համար)
ՏէԼ
(Տհ1fէ 1օջ1օa1 Լ6fէ)
ՏՃԼ (Տհ1fէ ar1էհո6է1օ Լ6fէ)
ՏէR
(Տհ1fէ 1օջ1օa1 R1ջհէ)
ՏՃR (Տհ1fէ ar1էհո6է1օ R1ջհէ)
Տրամաբանական տեղաշարժի ժամանակ ազատված բիթերում գրվում են 0-ներ: Թվաբանական աջ տեղաշարժի ժամանակ ազատված բիթերում ընդունիչի նշանային բիթի արժեքն է կրկնվում, իսկ ձախ տեղաշարժի ժամանակ ազատված բիթերը լրացվում են 0–ներով:
Դրոշները ստանում են հետևյալ արժեքները. PF, ՏF և 7F-ը որոշվում են ըստ իրենց նշանակության, ՃF-ն անորոշ է, ՇF-ում ընդունիչից դուրս եկած վերջին բիթի արժեքն է, 1-ից ավելի տեղաշարժերի դեպքում ՕF-ի արժեքն անորոշ է, իսկ 1 դիրք տեղաշարժի ժամանակ ՕF-ը որոշվում է հետևյալ կերպ. ՏՃԼ/ՏէԼ-ի դեպքում ՕF-ը հավասար է 1-ի, եթե տեղաշարժից հետո ընդունիչի ավագ բիթի արժեքը փոխվել է և 0՝ հակառակ դեպքում, ՏՃR հրամանի դեպքում ՕF-ը հավասար է 0, իսկ ՏէR հրամանի դեպքում՝ ՕF-ը հավասար է տեղաշարժից առաջ ընդունիչի ավագ բիթի արժեքին: ՏHR – Տրամաբանական աջ տեղաշարժ /Տհi1է 1օջiՇa1 Riջհէ Շարահյուսություն: Նկարագրություն: Դրոշներ:
ՏHR ընդունիչ, հաշվիչ ընդունիչ ՏէR( ընդունիչ ) ՃF - 2 ՇF ՕF PF ՏF 7F
ընդունիչ . . .
ՇF
Օրինակ ԽՕՕ ՃԼ, 43 : ՃԼ - 001010118 ՏէR ՃԼ, 1 : ՃԼ - 000101018 Դրոշները՝ ՇF - 1, ՕF - 0, ՏF - 0, 7F - 0, PF - 0, ՃF - 2 ՏէR հրամանը կարելի է օգտագործել (և արժի օգտագործել, քանի որ այն ավելի արագ կատարվող հրաման է) ընդունիչի արժեքը որպես առանց նշանի թիվ 2-ի հաշվիչ աստիճանի վրա բաժանելու համար: Օրինակում ՃԼ ռեգիստրում գրվել էր 43, հրամանից հետո ՃԼ-ի արժեքը հավասար է 21, այսինքն՝ 43/2: Եթե կրկին կատարվի ՏէR ՃԼ, 1 հրամանը, կամ միանգամից կատարվի 2 բիթ տեղաշարժ դեպի աջ (ԽՕՕ ՇԼ, 2 և ՏէR ՃԼ, ՇԼ), ապա ՃԼ ռեգիստրի արժեքը կլինի 43/4 - 10:
ՏHԼ/ՏՃԼ – Տրամաբանական / թվաբանական ձախ տեղաշարժ/ Տհi1է 1օջiՇa1 / aոiէհո6էiՇ Լ61է Շարահյուսություն: Նկարագրություն: Դրոշներ:
ՇF
ՏHԼ ընդունիչ, հաշվիչ ՏՃԼ ընդունիչ, հաշվիչ ընդունիչ ՏէԼ( ընդունիչ ) ՃF - 2 ՇF ՕF PF ՏF 7F
ընդունիչ . .
ՏէԼ և ՏՃԼ հրամանները նույնն են (ունեն նույն գործողության կոդը): Օրինակ ԽՕՕ ՃԼ, 43 : ՃԼ - 001010118 ՏէԼ ՃԼ, 1 : ՃԼ - 010101108 Դրոշները՝ ՇF - 0, ՕF - 0, ՏF - 0, 7F - 0, PF - 1, ՃF - 2 ՏէԼ ՃԼ, 1 հրամանը համարժեք է ՏՃԼ ՃԼ, 1 հրամանին։ Հրամանը կարելի է օգտագործել (և արժի օգտագործել, քանի որ այն ավելի արագ կատարվող հրաման է) ընդունիչի արժեքը որպես առանց նշանի թիվ 2-ի հաշվիչ աստիճանով բազմապատկելու համար: Օրինակում ՃԼ ռեգիստրում գրվել էր 43, հրամանից հետո ՃԼ-ի արժեքը հավասար է 86, այսինքն` 43 " 2: Եթե մեկ անգամ ևս կատարվի ՏէԼ ՃԼ,1 հրամանը, կամ կատարվի միանգամից 2 բիթ տեղաշարժ դեպի ձախ (ԽՕՕ ՇԼ, 2 և ՏէԼ ՃԼ, ՇԼ), ապա ՃԼ ռեգիստրի արժեքը կլինի 43 " 4 - 172: ՏՃR – Թվաբանական աջ տեղաշարժ / Տհi1է aոiէհո6էiՇ Riջհէ Շարահյուսություն: Նկարագրություն: Դրոշներ:
ՏՃR ընդունիչ, հաշվիչ ընդունիչ ՏՃR ( ընդունիչ ) ՃF - 2 ՇF ՕF PF ՏF 7F
ընդունիչ .
ՇF .
Օրինակ ԽՕՕ ՃԼ, 43 : ՃԼ - 001010118 ՏՃR ՃԼ, 1 : ՃԼ - 000101018 Դրոշները՝ ՇF - 1, ՕF - 0, ՏF - 0, 7F - 0, PF - 0, ՃF - 2 Հրամանը կարելի է օգտագործել (և արժի օգտագործել, քանի որ այն ավելի արագ կատարվող հրաման է) ընդունիչի արժեքը որպես նշանով թիվ 2-ի հաշվիչ աստիճանի վրա բաժանելու համար: Օրինակում ՃԼ ռեգիստրում գրվել էր 43, հրամանից հետո ՃԼ–ի արժեքը հավասար է 21, այսինքն՝ 43/2: Եթե մեկ անգամ ևս կատարվի ՏՃR ՃԼ, 1 հրամանը, կամ կատարվի միանգամից 2 բիթ տեղաշարժ (ԽՕՕ ՇԼ, 2 և ՏՃR ՃԼ, ՇԼ), ապա ՃԼ ռեգիստրի արժեքը կլինի 43/4 - 10: Օրինակ ԽՕՕ ՃԼ, -43 : ՃԼ - 110101018 ՏՃR ՃԼ, 1 : ՃԼ - 111010108 Դրոշները՝ ՇF - 1, ՕF - 0, ՏF - 1, 7F - 0, PF - 0, ՃF - 2 Օրինակում ՃԼ ռեգիստրում գրվել էր -43, հրամանից հետո ՃԼ-ի արժեքը հավասար է -22, այսինքն՝ (-43)/2: Ուշադրություն Այս դեպքում բաժանման արդյունքը կլորացվում է դեպի մինուս անվերջություն, ոչ թե դեպի 0, ինչպես 1D1Օ հրամանում էր: Եթե մեկ անգամ ևս կատարվի ՏՃR ՃԼ, 1 հրամանը, կամ կատարվեր միանգամից 2 բիթ տեղաշարժ դեպի աջ (ԽՕՕ ՇԼ, 2 և ՏՃR ՃԼ, ՇԼ), ապա ՃԼ ռեգիստրի արժեքը կլինի -43/4 - -11:
Ցիկլիկ տեղաշարժի (պտույտի) հրամաններ Այս խմբի հրամաններով ընդունիչի պարունակությունը տեղաշարժվում է աջ կամ ձախ, և ազատված բիթերը լրացվում են հակառակ կողմից դուրս եկած բիթերի արժեքներով՝ ՇF դրոշի արժեքը կամ պտույտում ներառելով կամ առանց ՇF դրոշի: Հրամանները չորսն են և բոլորն էլ սկսվում են R (rօէaէ6) տառով, երկրորդ տառը Օ կամ Շ է, եթե պտույտը առանց ՇF դրոշի արժեքի է`Օ, եթե պտույտը ՇF դրոշի արժեքի հետ է՝ Շ, երրորդ տառը Լ կամ R է, եթե Լ է, ձախ տեղաշարժ է, եթե R է, աջ տեղաշարժ է: Դրոշները ստանում են հետևյալ արժեքները. ՃF, PF, ՏF և 7F-ը չեն փոխվում, ՇF-ում ընդունիչից դուրս եկած վերջին բիթի արժեքն է, 1-ից ավելի տեղաշարժերի դեպքում ՕF-ի արժեքն անորոշ է, իսկ 1 բիթ տեղաշարժի ժամանակ ՕF-ը հավասար է 1-ի, եթե տեղաշարժից հետո ընդունիչի ավագ բիթի արժեքը փոխվել է, և 0՝ հակառակ դեպքում: RԸR – Ցիկլիկ աջ տեղաշարժ փոխանցման դրոշով / Rօէaէ6 էհոօսջհ Ըaոոy Riջհէ Շարահյուսություն: Նկարագրություն: Դրոշներ:
RԸR ընդունիչ, հաշվիչ ընդունիչ RՇR (ընդունիչ) ՇF ՕF
Ընդունիչ .
Օրինակ ՇԼՇ ԽՕՕ RՇR
ՃԼ, 43 ՃԼ, 1
ՇF .
: ՇF - 0 : ՃԼ - 001010118 : ՃԼ - 000101018, դրոշները՝ ՇF - 1, ՕF - 0
Օրինակ ՏTՇ ԽՕՕ RՇR
ՃԼ, 43 ՃԼ, 1
: ՇF - 1 : ՃԼ - 001010118 : ՃԼ - 100101018, դրոշները՝ ՇF - 1, ՕF - 1
RԸԼ – Ցիկլիկ ձախ տեղաշարժ փոխանցման դրոշով / Rօէaէ6 էհոօսջհ Ըaոոy Լ61է Շարահյուսություն: Նկարագրություն: Դրոշներ:
ՇF
RԸԼ ընդունիչ, հաշվիչ ընդունիչ RՇԼ( ընդունիչ ) ՇF ՕF
ընդունիչ . .
Օրինակ ՇԼՇ
ԽՕՕ ՃԼ, 43
RՇԼ ՃԼ, 1
: ՇF - 0 : ՃԼ - 001010118 : ՃԼ - 010101108, դրոշները՝ ՇF - 0, ՕF - 0
Օրինակ ՏTՇ
ԽՕՕ ՃԼ, 43
RՇԼ ՃԼ, 1
: ՇF - 1 : ՃԼ - 001010118 : ՃԼ - 010101118, դրոշները՝ ՇF - 0, ՕF - 0
RՕR – Ցիկլիկ աջ տեղաշարժ / Rօէaէ6 ոiջհէ Շարահյուսություն: Նկարագրություն: Դրոշներ:
RՕR ընդունիչ, հաշվիչ ընդունիչ RՕR( ընդունիչ ) ՇF ՕF
ընդունիչ .
ՇF .
Օրինակ ՇԼՇ ԽՕՕ RՕR
ՃԼ, 43 ՃԼ, 1
: ՇF - 0 : ՃԼ - 001010118 : ՃԼ - 100101018, դրոշները՝ ՇF - 1, ՕF - 1
Օրինակ ՏTՇ ԽՕՕ RՕR
ՃԼ, 43 ՃԼ, 1
: ՇF - 1 : ՃԼ - 001010118 : ՃԼ - 100101018, դրոշները՝ ՇF - 1, ՕF - 1
RՕԼ – Ցիկլիկ ձախ տեղաշարժ / Rօէaէ6 161է Շարահյուսություն: Նկարագրություն: Դրոշներ:
ՇF
RՕԼ ընդունիչ, հաշվիչ ընդունիչ RՕԼ( ընդունիչ ) ՇF ՕF
ընդունիչ . .
Օրինակ ՇԼՇ ԽՕՕ RՕԼ
ՃԼ, 43 ՃԼ, 1
: ՇF - 0 : ՃԼ - 001010118 : ՃԼ - 010101108, դրոշները՝ ՇF - 0, ՕF - 0
Օրինակ ՏTՇ ԽՕՕ RՕԼ
ՃԼ, 43 ՃԼ, 1
: ՇF - 1 : ՃԼ - 001010118 : ՃԼ - 010101108, դրոշները՝ ՇF - 0, ՕF - 0
Կրկնակի տեղաշարժի հրամաններ (386-) Հրամանները 2-ն են` ՏէRD, ՏէԼD և ունեն 3 օպերանդ: Հրամանն իրականացնելիս ընդունիչի արժեքը տեղաշարժվում է աջ (ՏէRD) կամ ձախ (ՏէԼD) հաշվիչի չափով, և ազատված բիթերը լրացվում են աղբյուրի ցածր կամ բարձր բիթերի պատճեններով համապատասխանաբար: ՏHԼԾ – Տրամաբանական կրկնակի ձախ տեղաշարժ (386-)/ Տհi1է Լ61է Ծօսե16 Շարահյուսություն: Նկարագրություն: Դրոշներ:
ՏHԼԾ ընդունիչ, աղբյուր,հաշվիչ ընդունիչ ՏէԼD (ընդունիչ,աղբյուր) ՃF - 2 ՇF ՕF PF ՏF 7F
Ընդունիչը կարող է լինել ռեգիստր (r6ջ16/r6ջ32) կամ հիշողության հասցե (ո6ո16/ո6ո32), աղբյուրը կարող է լինել ընդունիչի տիպին համապատասխան ռեգիստր (r6ջ16/r6ջ32), իսկ հաշվիչը՝ թիվ կամ ՇԼ ռեգիստրը: Դրոշները ստանում են հետևյալ արժեքները. ՃFը անորոշ է, ՇF-ում ընդունիչից դուրս եկած վերջին բիթի արժեքն է, ՕF-ի արժեքը 1-ից ավելի տեղաշարժերի դեպքում անորոշ է, իսկ 1 դիրք տեղաշարժի ժամանակ ՕF-ը հավասար է 1-ի, եթե տեղաշարժից հետո ընդունիչի նշանը փոխվել է, և 0՝ հակառակ դեպքում: PF, ՏF, 7F-ը որոշվում են ըստ արդյունքի։ ՇF
ընդունիչ
աղբյուր
Օրինակ ԽՕՕ ԽՕՕ ՏէԼD
ՃՃ, 43 8Ճ, 9300հ ՃՃ, 8Ճ, 2
: ՃՃ - 0000 0000 001010118 : 8Ճ - 10010011 000000008 : ՃՃ - 00 0000 00101011108 : 8Ճ-ն անփոփոխ է, դրոշները՝ ՇF - 0, : ՕF - 2, ՏF - 0, 7F - 0, PF - 0, ՃF - 2
ՏHRԾ – Տրամաբանական կրկնակի աջ տեղաշարժ (386-) / Տհi1է Riջհէ Ծօսե16 Շարահյուսություն: Նկարագրություն: Դրոշներ:
ՏHRԾ ընդունիչ, աղբյուր, հաշվիչ ընդունիչՏէRD( ընդունիչ, աղբյուր) ՃF - 2 ՇF ՕF PF ՏF 7F
Ընդունիչը կարող է լինել ռեգիստր (r6ջ16/r6ջ32) կամ հիշողության հասցե (ո6ո16/ո6ո32), աղբյուրը կարող է լինել ռեգիստր (r6ջ16/r6ջ32), իսկ հաշվիչը՝ թիվ կամ ՇԼ ռեգիստր: Դրոշները ստանում են հետևյալ արժեքները. ՇF-ում ընդունիչից դուրս եկած վերջին բիթի արժեքն է, ՕF-ը 1 բիթ տեղաշարժի դեպքում ընդունում է 1 արժեք, եթե տեղի է ունեցել նշանի բիթի փոփոխություն, հակառակ դեպքում ընդունում է 0 արժեք, 1-ից ավելի բիթերի տեղաշարժի դեպքում ՕF դրոշն անորոշ է, ՃF-ը անորոշ է, PF, ՏF, 7F-ը որոշվում են ըստ արդյունքի արժեքի։ CF
Օրինակ ԽՕՕ ԽՕՕ ՏէRD
ՃՃ, 43 8Ճ, 0093հ ՃՃ, 8Ճ, 2
: ՃՃ - 0000 0000001010118 : 8Ճ - 00000000100100118 : ՃՃ - 1100 0000 0000 10108, : 8Ճ-ն անփոփոխ է, դրոշները՝ ՇF - 1, : ՕF - 2, ՏF - 1, 7F - 0, PF - 1, ՃF - 2
Խնդիրների լուծման օրինակներ 1. Հաշվել 8Լ ռեգիստրի 2-ական ներկայացման մեջ 1-երի քանակը և արտածել էկրանին. .ԽՕDԷԼ ՏԽՃԼԼ .ՏTՃՇՃ
.ՇՕDԷ 8ԷՕ1N:
ՇՄՇԼԷ:
ԽՕՕ ՃՕR ԽՕՕ ՏէԼ ՃDՇ ԼՕՕP ԽՕՕ ՃDD 1NT ԽՕՕ 1NT
8Լ, 0D6հ DԼ, DԼ ՇՃ, 8 8Լ, 1 DԼ, 0 ՇՄՇԼԷ Ճէ, 2 DԼ, '0' 21հ Ճէ, 4Շհ 21հ
: ՕR DԼ,’0’
ԷND 8ԷՕ1N
2. Շրջել ՃԼ ռեգիստրի 2-ական ներկայացումը. . ԽՕDԷԼ ՏԽՃԼԼ .ՏTՃՇՃ .ՇՕDԷ ԽՃ1N: ԽՕՕ ՃԼ, 1101 01118 ՃՕR 8Լ, 8Լ ԽՕՕ ՇՃ, 8 Լ1: ՏէԼ ՃԼ, 1 RՇR 8Լ, 1 ԼՕՕP Լ1 ԽՕՕ ՃԼ, 8Լ ԽՕՕ ՃՃ, 4Շ00հ 1NT 21հ ԷND ԽՃ1N 3. Գրել ծրագիր, որը 8Լ ռեգիստրի արժեքը կարտածի էկրանին 2ական համակարգով. .ԽՕDԷԼ ՏԽՃԼԼ .ՏTՃՇՃ .ՇՕDԷ
8ԷՕ1N:
ԽՕՕ 8Լ, 0D6հ ԽՕՕ ՇՃ, 8 ՇՄՇԼԷ: ՃՕR DԼ, DԼ RՕԼ 8Լ, 1 ՃDՇ DԼ, ‘0’ ԽՕՕ Ճէ, 2 1NT 21հ ԼՕՕP ՇՄՇԼԷ ԽՕՕ Ճէ, 4Շհ 1NT 21հ ԷND 8ԷՕ1N Այս խնդիրը կարելի է լուծել տարբեր եղանակներով: Ընդհանրապես ամբողջ թիվը այլ համակարգերում ներկայացնելու համար այդ թիվը բաժանում են նոր համակարգի հիմքի վրա, սակայն, երբ համակարգերի հիմքերից մեկը մյուսի աստիճանն է, ապա դա կարելի է իրականացնել ավելի հեշտ՝ անջատելով աստիճանի ցուցիչի չափ բիթեր և այդ անջատված բիթերը առանձին-առանձին ներկայացնելով պահանջվող համակարգում: Դիտարկենք խնդրի լուծման մեկ այլ տարբերակ: Ստորև բերված տարբերակը հարմար է նրանով, որ չնչին փոփոխություններով կարող է լինել նաև 4-ական, 8-ական և 16-ական համակարգերի համար լուծման օրինակ: . . .
ԽՕՕ ՇԼ, 7
: 4-ականի, 8-ականի համար՝ 6, NԷՃT:
ԽՕՕ DԼ, 8Լ
: հիշենք և հետագայում : վերհիշենք,
ՏէR DԼ, ՇԼ
: տեղաշարժ,
ՃND DԼ, 1Ե
: թողնենք անհրաժեշտ բիթերը : /4-ականի համար՝ 11Ե, : 8-ականի, համար՝ 111Ե, ՃDD DԼ, ՛0՛ : դարձնենք սիմվոլ,
ԽՕՕ Ճէ, 2
: դուրս բերենք,
1NT ՏՍ8
21է ՇԼ, 1
: էկրան, : 4-ականի համար՝ 2, 8-ականի : համար՝ 3
JՕԷ NԷՃT . . . 4. Տ1 ռեգիստրի պարունակությունը դիտարկել որպես առանց նշանի 2-ական թիվ: Շրջել և միաժամանակ արտածել այն: .ԽՕDԷԼ ՏԽՃԼԼ .ՏTՃՇՃ .ՇՕDԷ ՏTՃRT: ԽՕՕ Տ1, 68D7հ : Տ1 - 0110 1011 1101 0111 Ե
ԽՕՕ Ճէ, 2
ՃՕR 8Ճ, 8Ճ
ԽՕՕ ՇՃ, 16
ՇՄՇԼԷ: ԽՕՕ DԼ, '0' ՏէԼ 8Ճ, 1 : 8Ճ - 8Ճ " 2 ՏէR Տ1, 1 JNՇ ՕՍT8 ՃDՇ 8Ճ, 0 1NՇ DԼ : DԼ - ‘1’ ՕՍT8: 1NT 21հ
ԼՕՕP ՇՄՇԼԷ
: այժմ 8Ճ - 1110101111010110 Ե : և այդ էլ արտածվել է
ԽՕՕ ՃՃ, 4Շ00հ
1NT 21հ ԷND ՏTՃRT Նշում Այս մեթոդով են լուծվում նաև N9-ը և N10 խնդիրները:
Խնդիրներ և վարժություններ 1. 2.
3.
Երրորդ խնդիրն իրականացնել 16-ական համակարգի համար: Օգտագործելով միայն տեղափոխման, տրամաբանական, տեղաշարժի, անցման հրամանները՝ իրականացնել 2 ռեգիստրների արժեքների գումարում ( - ," , / ): Որոշել ՃԼ ռեգիստրի և 7F դրոշի արժեքները հետևյալ հրամանների կատարումից հետո. ա) ԽՕՕ ՃԼ, 1010Ե բ) ԽՕՕ ՃԼ, 0 գ) ԽՕՕ ՃԼ, 1101Ե NՕT ՃԼ NՕT ՃԼ ՃND ՃԼ, 0111Ե
դ) ԽՕՕ ՃԼ, 100Ե ե) ԽՕՕ ՃԼ, 100Ե զ) ԽՕՕ ՃԼ, 0F0հ
ՃND ՃԼ, 011Ե
TԷՏT ՃԼ, 011Ե
ՕR ՃԼ, 0Fհ
է) ԽՕՕ ՃԼ, 0
ՃՕR ՃԼ, 0FFհ
ը) ԽՕՕ ՃԼ, 101Ե
ՃՕR ՃԼ, ՃԼ
թ)ԽՕՕ ՃԼ, 0Ճ3հ
ՕR ՃԼ, 0D5հ
4.
DԼ ռեգիստրին վերագրել 1, եթե տեղի ունի հետևյալ պայմանը, և 0՝ հակառակ դեպքում. ա) ՃԼ ռեգիստրի մեջտեղի երկու բիթերի արժեքն է 10Ե, բ) 8Ճ ռեգիստրի երեք ձախ և երեք աջ բիթերն իրար հավասար են: 5. Հաշվել 20 հատ 1-բայթանոց առանց նշանի թվերի միաչափ զանգվածի այն տարրերի գումարը, որոնց վերջին երկու բիթերի արժեքն է 11Ե: 6. Որոշել 8Լ ռեգիստրի և ՇF դրոշի արժեքները հետևյալ հրամանների կատարումից հետո. ա) ԽՕՕ 8Լ, 101Ե ՏէԼ 8Լ, 1
բ) ԽՕՕ 8Լ, 1110Ե
ԽՕՕ ՇԼ, 6
ՏէԼ 8Լ, ՇԼ
գ) ԽՕՕ 8Լ, 110Ե ՏէR 8Լ, 1
դ) ԽՕՕ 8Լ, 110Ե
ԽՕՕ ՇԼ, 3
ՏէR 8Լ, ՇԼ
ե) ԽՕՕ 8Լ, 0F0հ RՕԼ 8Լ, 1
զ) ԽՕՕ 8Լ, 101Ե
ԽՕՕ ՇԼ, 2
RՕR 8Լ, ՇԼ
է) ԽՕՕ 8Ճ, 1122հ ՏէR 8է, 1 RՇԼ 8Լ, 1
ը) ԽՕՕ 8Ճ, 1122հ ՏէR 8է, 1 RՇR 8Լ, 1
թ) ԽՕՕ DԼ, 110Ե
ԽՕՕ ՇԼ, 3
RՕԼ 8Լ, ՇԼ
7. Ճ-ը և Մ-ը առանց նշանի բառ-փոփոխականներ են: Չօգտագործելով բաժանման և բազմապատկման գործողություններ՝ կատարել հետևյալը. ա) Մ - 2 " Ճ – Ճ/8 - Ճ % 16, բ) Մ - 19 " Ճ: 8. Տրված է առանց նշանի Ճ բառ-փոփոխականը: DԼ ռեգիստրին վերագրել 1, եթե Ճ-ը զույգ թիվ է, իսկ հակառակ դեպքում՝ 0: Վերագրումը կատարել չորս եղանակով՝ D1Օ, ՃND, TԷՏT, ՏէR հրամանների միջոցով և համեմատել այդ եղանակներն իրար հետ: 9. Շրջել և միաժամանակ արտածել 8Ճ ռեգիստրի պարունակությունը (16-ական ներկայացումը): Օրինակ, եթե 8Ճ - 085F4հ, ապա պետք է որևէ ռեգիստրում ստանալ 4F58հ և արտածել այն: 10. Շրջել և միաժամանակ արտածել 8Ճ ռեգիստրի պարունակությունը (4-ական ներկայացումը): Օրինակ, եթե 8Ճ - 58Ճ3հ (այն 4-ական համակարգում կլինի 11232203 ), ապա որևէ ռեգիստրում պետք է ստանալ և ընթացքում արտածել 4-ական համակարգի 30223211 թիվը: 11. Գրել ծրագրի հատված, որը ՇԼ ռեգիստրի ավագ 3 բիթերը կդարձնի հավասար ՃԼ-ի ավագ 3 բիթերին, իսկ կրտսեր 5 բիթերը՝ հավասար 8Լ-ի կրտսեր 5 բիթերին։ 12. Ստուգել տրված ամբողջ թվի երկուական ներկայացման մեջ բոլոր բիթերի 1 լինելը։
13. Գտնել տրված N թվին հաջորդող այն առաջին թվի արժեքը, որի երկուական ներկայացման մեջ նույն քանակի 1-եր կան։ (128 – 256, 127 – 191, 6-9, 12-17,…) 14. Հաշվել տրված 4-բայթանոց ամբողջ թվի երկուական ներկայացման մեջ ավագ 1-ին նախորդող 0-ների քանակը։ 15. Գտնել տրված 4-բայթանոց ամբողջ թվի ավագ 1 բիթի համարը։ 16. Հաշվել տրված թվի երկուական ներկայացման մեջ առկա 0-ների քանակը: 17. Ստանալ տրված N թվի ք-րդ դիրքից հաշված k բիթերի արժեքը։ 18. Տեղերով փոխել տրված 4-բայթանոց ամբողջ թվի 1-րդ և յ-րդ բիթերի արժեքները։ 19. Որոշել` արդյոք տրված թիվը 2-ի աստիճան է։ Առաջարկել լուծման տարբեր եղանակներ։ 20. Իրականացնել 2 սիմվոլային տողերի (0 և 1 սիմվոլներից բաղկացած) գումարում և արդյունքն արտածել։ 21. Որոշել` արդյոք տրված 2-բայթանոց ամբողջ թվի բիթային ներկայացումը սիմետրիկ (պոլինդրոմ) է, թե ոչ։ 22. Որոշել, թե որ թիվն է բացակայում տրված N-1 չափի զանգվածում, եթե զանգվածի տարրերը պարունակում են |1, N| միջակայքի բոլոր թվերը` բացառությամբ փնտրվող թվի (օրինակ՝ 1, 5, 2, 7, 3, 4, 10, 9, 6 զանգվածում բացակայում է 8-ը):
Բիթային և բայթային հրամաններ Բիթային հրամանները ստուգում, իսկ որոշ դեպքերում նաև փոխում են բառի կամ կրկնակի բառի որոշակի բիթերը։ Բայթային հրամաններն արժեք են տալիս բայթային օպերանդին` ԷFԼՃՕՏ դրոշների ռեգիստրի պահանջվող դրոշների վիճակին համապատասխան։ 8T Բիթային ստուգում/81է է6Տէ 8TՏ Բիթային ստուգում և 1-ի տեղադրում / 81է է6Տէ aոմ Տ6է
8TR 8TՇ 8ՏF 8ՏR ՏԷTօօ
Բիթային ստուգում և 0-ի տեղադրում / 81է է6Տէ aոմ r6Տ6է Բիթային ստուգում և հակադարձում / 81է է6Տէ aոմ օօոք16ո6ոէ Բիթային որոնում առաջ / 81է Տօaո fօrwarմ Բիթային որոնում ետ / 81է Տօaո r6v6rՏ6 Բայթի արժեքավորում՝ ըստ պայմանի / Տ6է Ե7է6 1f օո օօոմ1է1օո
BT – Բիթի ստուգում (Biէ T65է) (386-) Շարահյուսություն: Նկարագրություն: Դրոշներ:
BT հիմք, շեղում ՇF 81է(հիմք, շեղում) ՃF - 2 ՇF ՕF - 2 PF - 2 ՏF - 2 7F - 2
Հիմքը կարող է լինել ռեգիստր (r6ջ16/r6ջ32) կամ հիշողության հասցե (ո6ո16/ո6ո32), իսկ շեղումը՝ ռեգիստր (r6ջ16/r6ջ32) կամ անմիջական արժեք (1ոո8)։ Այս հրամանում հիմքը դիտարկվում է որպես բիթային տող: 8T հրամանն ընտրում է 1 բիթ` հիմքի սկզբից նշված շեղումով, և այդ բիթի արժեքը գրում է ՇF դրոշի մեջ: Եթե շեղումը ռեգիստր է, ապա հիմքի և շեղման չափերը պետք է համընկնեն (այսինքն՝ լինեն 16-բիթանոց կամ 32-բիթանոց): Եթե հիմքը ռեգիստր է, ապա հիմքի սկիզբը ռեգիստրի 0-րդ բիթն է, իսկ որպես շեղում՝ վերցվում է շեղում օպերանդի արժեքի 16-ի կամ 32-ի (կախված հիմքի չափից՝ 16/32) վրա բաժանելուց ստացված մնացորդը: Այսպիսով՝ իրական շեղումը չի գերազանցում 15 կամ 31-ը: Եթե հիմքը հիշողության հասցե է, ապա հիմքի սկիզբն այդ հասցեում գտնվող բայթի 0-րդ բիթն է: Եթե շեղումը ռեգիստր է, ապա այն պարունակում է |-231, 231-1| միջակայքի թիվ, իսկ եթե անմիջական արժեք է՝ |0, 31| միջակայքի թիվ (ավելի մեծ լինելու դեպքում որպես իրական շեղում վերցվում է 16-ի կամ 32-ի (կախված հիմքի չափից՝16/32) վրա բաժանելուց ստացված մնացորդը):
Հրամանի արդյունքում ՇF-ը ստանում է ընտրված բիթի արժեքը, իսկ ՃF, ՕF, PF, ՏF և 7F դրոշների արժեքներն անորոշ են։ Օրինակ 1 ԽՕՕ 8T ԽՕՕ 8T 8T
ԷՃՃ, 92456187հ ՃՃ, 06 ՇՃ, 13 ՃՃ, ՇՃ ՃՃ, 27
ԽՕՕ 8T
ՇՃ, 34 ՃՃ, ՇՃ
8T ԽՕՕ 8T 8T
ԷՃՃ, 10 ԷՇՃ, 18
ԷՃՃ, ԷՇՃ
ԷՃՃ, 39
ԽՕՕ 8T
ԷՇՃ, 47
ԷՃՃ, ԷՇՃ
Օրինակ 2 8T ԽՕՕ 8T 8T ԽՕՕ 8T 8T ԽՕՕ
: ՇF - 0 : ՇF - 1 : 27 ոօմ 16 - 11 -» շեղում - 11 : -» ՇF - 0 : 34 ոօմ 16 - 2 -» շեղում - 2 : -» ՇF - 1 : ՇF - 0 : ՇF - 1 : 39 ոօմ 32 - 7 -» շեղում - 7 : -» ՇF - 1 : 47 ոօմ 32 - 15 : -» շեղում - 15 -» ՇF - 0
Ճ, 12 ՇՃ, 6 Ճ, ՇՃ 8, 9 ԷՇՃ, 22 8, ԷՇՃ Ճ, 37
: ՇF - 0 : ՇF - 1 : ՇF - 0 : ՇF - 1 : 37 ոօմ 32 - 5 -» շեղում - 5 : -» ՇF - 0
ՇՃ, 29
8T
Ճ, ՇՃ
8T
8, 46
Որտեղ. Ճ
DW DD
: 29 ոօմ 16 - 13 -» շեղում - 13 : -» ՇF - 1 : 46 ոօմ 32 - 14 -» շեղում - 14 : -» ՇF - 0 0Ճ245հ 0Շ2453467հ
BTՏ – Բիթի ստուգում և 1-ի տեղադրում /Biէ T65է aոմ Տ6է (386-) Շարահյուսություն: Նկարագրություն: Դրոշներ:
BTՏ հիմք, շեղում ՇF 81է(հիմք, շեղում) 81է(հիմք, շեղում) 1 ՃF - 2 ՇF ՕF - 2 PF - 2 ՏF - 2 7F - 2
BTR – Բիթի ստուգում և 0-ի տեղադրում /Biէ T65է aոմ R656է (386-) Շարահյուսություն: Նկարագրություն: Դրոշներ:
BTR հիմք, շեղում ՇF 81է(հիմք, շեղում) 81է(հիմք, շեղում) 0 ՃF - 2 ՇF ՕF - 2 PF - 2 ՏF - 2 7F - 2
BTԸ – Բիթի ստուգում և հակադարձում /Biէ T65է aոմ Ըօոք16ո6ոէ (386-) Շարահյուսություն: Նկարագրություն: Դրոշներ:
BTԸ հիմք, շեղում ՇF 81է(հիմք, շեղում) NՕT(81է(հիմք, շեղում)) ՃF - 2 ՇF ՕF - 2 PF - 2 ՏF - 2 7F - 2
Այս 3 հրամանների շարահյուսությունը նույնն է, ինչ 8T հրամանինը։ Հրամանների կատարումը տարբերվում է նրանով, որ, բացի բիթի ստուգումից, յուրաքանչյուր հրաման կատարում է նաև լրացուցիչ գործողություն՝ ընտրված բիթը դարձնելով 1 (8TՏ), 0 (8TR) կամ հակադարձելով (8TՇ)։
Նշված հրամանների գործողության արդյունքում ՇF-ը ստանում է ընտրված բիթի սկզբնական արժեքը, իսկ ՃF, ՕF, PF, ՏF և 7F դրոշների արժեքներն անորոշ են։ Օրինակ 3 ԽՕՕ 8TR ԽՕՕ 8TՏ 8TՇ
ՃՃ, 6187հ ՃՃ, 7 ՇՃ, 12 ՃՃ, ՇՃ ՃՃ, 27
ԽՕՕ 8TR
ՇՃ, 34 ՃՃ, ՇՃ
ԽՕՕ 8TՇ ԽՕՕ 8TՏ 8TR
Է8Ճ, 92457903հ Է8Ճ, 17 ԷՇՃ, 20
Է8Ճ, ԷՇՃ
Է8Ճ, 48
ԽՕՕ 8TՇ
ՇՃ, 40
Է8Ճ, ԷՇՃ
8TՇ ԽՕՕ 8TR 8TՏ ԽՕՕ 8TՇ 8TՏ
Ճ, 12 ՇՃ, 6 Ճ, ՇՃ 8, 9 ԷՇՃ, 22 8, ԷՇՃ Ճ, 37
8TՇ
8, 45
: ՇF - 1, ՃՃ - 6107հ : ՇF - 0, ՃՃ - 7107հ : 27 ոօմ 16 - 11 -» շեղում - 11 : -» ՇF - 0, ՃՃ - 7907հ : 34 ոօմ 16 - 2 -» շեղում - 2 : -» ՇF - 1, ՃՃ - 7903հ : ՇF - 0, Է8Ճ - 92477903հ : ՇF - 0, Է8Ճ - 92577903հ : 48 ոօմ 32 - 16 -» շեղում - 16 : -» ՇF - 1, Է8Ճ - 92567903հ : 40 ոօմ 32 - 8 -» շեղում - 8 ; -» ՇF - 1, Է8Ճ - 92567803հ : ՇF - 0, Ճ - 08245հ : ՇF - 1, Ճ - 08205հ : ՇF - 0, 8 - 0Շ2453667հ : ՇF - 1, 8 - 0Շ2053667հ : 37 ոօմ 16 - 5 -» շեղում - 5 : -» ՇF - 0, Ճ - 08225հ : 45 ոօմ 32 - 13 -» շեղում - 13
: -» ՇF - 1, 8 - 0Շ2051667հ ԽՕՕ 8TՏ Որտեղ. Ճ
ԷՇՃ, 20 8, ԷՇՃ
DW DD
: ՇF - 0, 8 - 0Շ2151667հ
0Ճ245հ 0Շ2453467հ
BՏF – Բիթային որոնում առաջ / Biէ ՏՇaո Fօոwaոմ (386-) Շարահյուսություն: Նկարագրություն: Դրոշներ:
BՏF ընդունիչ, աղբյուր ընդունիչ 8ՏF(աղբյուր) ՃF - 2 ՇF - 2 ՕF - 2 PF - 2 ՏF - 2 7F
Ընդունիչը կարող է լինել ռեգիստր (r6ջ16/r6ջ32), իսկ աղբյուրը՝ ռեգիստր (r6ջ16/r6ջ32) կամ հիշողության հասցե (ո6ո16/ո6ո32)։ Օպերանդների չափերը պետք է համընկնեն: 8ՏF հրամանը որոնում է աղբյուրի մեջ կրտսեր՝ 0 բիթից սկսած առաջին 1 արժեք ունեցող բիթը և նրա համարը (0-ական բիթից հաշված) գրում ընդունիչի մեջ: Եթե աղբյուրի արժեքը 0 է, ապա ընդունիչի արժեքն անորոշ է: ՃF, ՇF, ՕF, PF, ՏF դրոշների արժեքներն անորոշ են: 7F-ը 1 է, եթե աղբյուրի արժեքը 0 է, հակառակ դեպքում՝ 7F - 0։ BՏR – Բիթային որոնում ետ / Biէ ՏՇaո R6v6ո56 (386-) Շարահյուսություն: Նկարագրություն: Դրոշներ:
BՏR ընդունիչ, աղբյուր ընդունիչ 8ՏR(աղբյուր) ՃF - 2 ՇF - 2 ՕF - 2 PF - 2 ՏF - 2 7F
Ընդունիչը կարող է լինել ռեգիստր (r6ջ16/r6ջ32), իսկ աղբյուրը՝ ռեգիստր (r6ջ16/r6ջ32) կամ հիշողության հասցե (ո6ո16/ո6ո32)։ Օպերանդների չափերը պետք է համընկնեն: 8ՏF հրամանը որոնում է աղբյուրի մեջ ավագ՝ 15 կամ 31 բիթից սկսած առաջին 1 արժեք ունեցող բիթը և նրա համարը (0-ական բիթից հաշված) գրում ընդունիչի մեջ: Եթե աղբյուրի արժեքը 0 է, ընդու138
նիչի արժեքն անորոշ է: ՃF, ՇF, ՕF, PF, ՏF դրոշների արժեքներն անորոշ են: 7F-ը 1 է, եթե աղբյուրի արժեքը 0 է, հակառակ դեպքում՝ 7F - 0։ Օրինակ 1. ԽՕՕ ՇՃ, 1256հ 8ՏF ՃՃ, ՇՃ 8ՏR DՃ, ՇՃ
: ՃՃ - 1 : DՃ - 12
2. ԽՕՕ ԷՇՃ, 49782463հ
8ՏF ԷՃՃ, ԷՇՃ
8ՏR ԷDՃ, ԷՇՃ
: ԷՃՃ - 0 : ԷDՃ - 30
3. 8ՏF 8ՏR
ՃՃ, Ճ DՃ, Ճ
: ՃՃ - 2 : DՃ - 14
4. 8ՏF 8ՏR
ԷD1, 8 ԷՏ1, 8
: ԷD1 - 5 : ԷՏ1 - 31
Որտեղ. Ճ DW 8 DD
6Ճ54հ 0Շ2453460հ
ՏETՇՇ – Բայթի արժեքավորում՝ ըստ պայմանի / Տ6է եyէ6 օո Շօոմiէiօո (386-) Շարահյուսություն: Նկարագրություն: Դրոշներ:
ՏETՇՇ ընդունիչ ընդունիչ 1, եթե օօ պայմանը տեղի ունի, և 0՝ հակառակ դեպքում,
Ընդունիչը կարող է լինել ռեգիստր (r6ջ8) կամ հիշողության հասցե (ո6ո8)։ Եթե օօ պայմանը տեղի ունի, ընդունիչը ստանում է 1 արժեք, հակառակ դեպքում՝ 0: Պայմանը որոշվում է ՇF, ՕF, PF, ՏF, 7F դրոշներից մեկի կամ մի քանիսի արժեքներով: Հրամանը չի ազդում դրոշների վրա։
Հրամանի հուշանուն ՏԷTՃ / ՏԷTN8Է
ՏԷTՃԷ / ՏԷTN8 / ՏԷTNՇ
ՏԷT8 / ՏԷTNՃԷ / ՏԷTՇ
ՏԷT8Է / ՏԷTNՃ ՏԷTԷ /
Պայմանի ստուգում՝ ըստ դրոշների
Հրամանի լրիվ անվանումը
ՇF - 0 & 7F - 0
Տեղադրել, եթե բարձր է (Տ6է 1f aԵօv6) / Տեղադրել, եթե ցածր կամ հավասար չէ (Տ6է 1f ոօէ Ե61օw օr 6զսa1)
ՇF - 0
Տեղադրել, եթե բարձր է կամ հավասար (Տ6է 1f aԵօv6 օr 6զսa1) / Տեղադրել, եթե ցածր չէ (Տ6է 1f ոօէ Ե61օw) / Տեղադրել, եթե փոխանցում չկա (Տ6է 1f ոօէ օarr7)
ՇF - 1
Տեղադրել, եթե ցածր է (Տ6է 1f Ե61օw) / Տեղադրել, եթե բարձր կամ հավասար չէ (Տ6է 1f ոօէ aԵօv6 օr 6զսa1) / Տեղադրել, եթե փոխանցում կա (Տ6է 1f օarr7)
ՇF - 1 | 7F - 1
Տեղադրել, եթե ցածր կամ հավասար է (Տ6է 1f Ե61օw օr 6զսa1) / Տեղադրել, եթե բարձր չէ (Տ6է 1f ոօէ aԵօv6)
7F - 1
Տեղադրել, եթե հավասար է (Տ6է 1f 6զսa1) / Տեղադրել, եթե զրո է (Տ6է 1f 26rօ)
7F - 0 & ՏF - ՕF
Տեղադրել, եթե մեծ է (Տ6է 1f ջr6aէ6r) / Տեղադրել, եթե փոքր կամ հավասար չէ (Տ6է 1f ոօէ 16ՏՏ օr 6զսa1)
ՏԷT7 ՏԷTՕ / ՏԷTNԼԷ
ՏԷTՕԷ / ՏԷTNԼ ՏԷTԼ
ՏF - ՕF
ՏF Հ» ՕF
Տեղադրել, եթե մեծ կամ հավասար է (Տ6է 1f ջr6aէ6r օr 6զսa1) / Տեղադրել, եթե փոքր չէ (Տ6է 1f ոօէ 16ՏՏ) Տեղադրել, եթե փոքր է (Տ6է 1f 16ՏՏ)
/ ՏԷTNՕԷ ՏԷTԼԷ /
7F - 1 | ՏF Հ» ՕF
ՏԷTNՕ
/ Տեղադրել, եթե մեծ կամ հավասար չէ (Տ6է 1f ոօէ ջr6aէ6r օr 6զսa1) Տեղադրել, եթե փոքր կամ հավասար է (Տ6է 1f 16ՏՏ օr 6զսa1) / Տեղադրել, եթե մեծ չէ (Տ6է 1f ոօէ ջr6aէ6r) Տեղադրել, եթե հավասար չէ (Տ6է 1f ոօէ 6զսa1) / Տեղադրել, եթե զրո չէ (Տ6է 1f ոօէ 26rօ)
ՏԷTNԷ / ՏԷTN7
7F - 0
ՏԷTNՕ
ՕF - 0
ՏԷTՕ
ՕF - 1
ՏԷTNP / ՏԷTPՕ
PF - 0
ՏԷTP / ՏԷTPԷ
PF - 1
ՏԷTNՏ
ՏF - 0
Տեղադրել, եթե նշան չկա և ոչ բացասական է (Տ6է 1f ոօէ Տ1ջո)
ՏԷTՏ
ՏF - 1
Տեղադրել, եթե նշան կա և բացասական է (Տ6է 1f Տ1ջո)
Տեղադրել, եթե գերհագեցում չկա (Տ6է 1f ոօէ օv6rf1օw) Տեղադրել, եթե գերհագեցում կա (Տ6է 1f օv6rf1օw) Տեղադրել, եթե զույգություն չկա (Տ6է 1f ոօէ քar1է7) / Տեղադրել, եթե կենտ է (Տ6է 1f քar1է7 օմմ) Տեղադրել, եթե զույգություն կա (Տ6է 1f քar1է7) / Տեղադրել, եթե զույգ է (Տ6է 1f քar1է7 6v6ո)
Նկար 1. ՏԵ1cc հրամանի իրականացման պայմանները
Օրինակ 1 ԽՕՕ ԽՕՕ ՃDD ՏԷTՃ
ՃԼ, 43 8Լ, 50 ՃԼ, 8Լ DԼ
: ՃԼ - 43 : 8Լ - 50 : ՃԼ - 93, ՇF - 0 7F - 0 : (ՇF - 0 & 7F - 0) -» DԼ - 1
Օրինակ 2 ԽՕՕ ԽՕՕ
ՃԼ, 100 8Լ, 62
: ՃԼ - 100 : 8Լ - 62
ՏՍ8 ՏԷTԼԷ
8Լ, ՃԼ DԼ
: 8Լ - -38, ՏF - 1, 7F - 0, ՕF - 0 : (7F - 1 | ՏF Հ» ՕF) -» DԼ - 1
Եթե ՏԷTօօ հրամանն օգտագործում ենք ՇԽP հրամանից հետո, պայմանը որոշվում է ՇԽP հրամանի արդյունքով. Օրինակ 1 ԽՕՕ ԽՕՕ ՇԽP ՏԷT8Է
ՃԼ, 43 8Լ, 50 ՃԼ, 8Լ DԼ
: ՃԼ - 43 : 8Լ - 50 : ՇF - 1, 7F - 0, ՏF - 1, ՕF - 0, PF -1 : ՃԼ ≤ 8Լ -» DԼ-1 : (պայմանն է ՇF - 1| 7F - 1)
Օրինակ 2 ԽՕՕ ԽՕՕ ՇԽP ՏԷTԷ
ՃԼ, 100 8Լ, 62 ՃԼ, 8Լ DԼ
: ՃԼ - 100 : 8Լ - 62 : ՇF - 0, 7F - 0, ՏF - 0, ՕF - 0, PF - 0 : ՃԼ Հ» 8Լ -» DԼ - 0 : (պայմանն է 7F - 1)
Ղեկավարությունը փոխանցող հրամաններ Ղեկավարությունը փոխանցող հրամաններն ապահովում են հետևյալ գործողությունների կատարումը. անցում՝ առանց պայմանի (JԽP) կամ պայմանով (Jօօ), ցիկլի կազմակերպում (ԼՕՕP, ԼՕՕPԷ, ԼՕՕP7, ԼՕՕPNԷ,
ԼՕՕPN7),
պրոցեդուրայի կանչ (ՇՃԼԼ) կամ ընդհատում (1NT), վերադարձ պրոցեդուրայից (RԷT) կամ ընդհատումից (1RԷT): Անցումները լինում են 4 տեսակի:
1. Կարճ անցում (Տհօrէ յսոք) – անցման հրամանից մինչև անցման հասցե հեռավորությունը գտնվում է |-128,127| միջակայքում: Օպերանդը r618 է (նշիչ): Փոխվում է 1P/Է1P-ի արժեքը: 2. Մոտիկ անցում (ո6ar յսոք) – անցման հրամանը և անցման հասցեն գտնվում են նույն սեգմենտում: Օպերանդը r6116/r6132/r6ջ16/r6ջ32/ո6ո16/ո6ո32 է: Փոխվում է 1P/Է1P-ի արժեքը: 3. Հեռու անցում (far յսոք) – անցման հրամանը և անցման հասցեն գտնվում են տարբեր սեգմենտներում: Օպերանդը քէr16:16 / քէr16:32 / ո6ո16:16 / ո6ո16:32 է: Փոխվում են ՇՏի և 1P/Է1P-ի արժեքները: 4. Անցում՝ խնդիրների փոխարկումով (էaՏk Տw1էօհ) – բազմախնդրային ռեժիմում անցում է կատարում մի խնդրից մյուսը: Անցման այս տիպը օգտագործվում է միայն պաշտպանված ռեժիմում: Կարճ և մոտիկ անցումների կատարման ժամանակ պրոցեսորը տվյալ սեգմենտի ներսում անցում է կատարում օպերանդով որոշվող հասցեին։ Հասցեն տրվում է բացարձակ կամ հարաբերական շեղումով: Բացարձակ շեղումը հրամանային սեգմենտի սկզբից ունեցած շեղումն է, որը որոշվում է ոչ ուղղակի հասցեավորմամբ՝ ընդհանուր օգտագործման ռեգիստրի կամ հիշողության միջոցով (7/ւ16 կամ 7/ւ32)։ Հարաբերական շեղումը՝ r618, r6116, կամ r6132, հրամանի ցուցիչի ռեգիստրի՝ Է1P-ի ընթացիկ արժեքին համեմատ հարաբերական տեղաշարժն է: Հարաբերական շեղումն ասեմբլեր ծրագրում սովորաբար տրվում է որպես նշիչ, սակայն մեքենայական կոդում այն կոդավորվում է որպես նշանով 8,16 կամ 32-բիթանոց անմիջական արժեք՝ 1ո8/1ո16/1ո32, որը գումարվում է Է1P-ի արժեքին։ Կարճ և մոտիկ անցումների ժամանակ ՇՏ ռեգիստրի արժեքը չի փոխվում:
JMP –Անցում/ Jսոք Շարահյուսություն: Նկարագրություն:
JMP օպերանդ առանց պայմանի անցում
JԽP հրամանն առանց պայմանի և անվերադարձ անցում է կատարում այն հրամանին, որի հասցեն տրված է օպերանդում: Հասցեն կարող է տրվել ուղղակի` նշիչի, ոչ ուղղակի` ռեգիստրի (r6ջ16/r6ջ32) կամ հիշողության հասցեի (ո6ո16/ո6ո32) միջոցով: JԽP հրամանով հնարավոր է կատարել կարճ, մոտիկ, հեռու և խնդիրների փոխարկումով անցումներ: JԽP հրամանը կարճ, մոտիկ և հեռու անցումների դեպքում չի ազդում դրոշների վրա, իսկ խնդիրների փոխարկումով անցման ժամանակ դրոշները փոխվում են: Օրինակ 1 ԽՕՕ DՃ, 1234է JԽP DՃ Այս հրամանն անցում կկատարի ՇՏ:1234է հասցեով: 1234է չի դիտարկվում որպես նշանով հարաբերական շեղում։ Օրինակ 2 ԽՕՕ 8Ճ, 1234է JԽP WՕRD PTR 2000է|8Ճ| Եթե DՏ:3234է-ի պարունակությունը 5678է է, ապա անցում կկատարվի ՇՏ:5678է հասցեին։ Օրինակ 3 ԽՕՕ 8Ճ, 1234է JԽP DWՕRD PTR 2000է|8Ճ| Եթե DՏ:3234է-ի պարունակությունը 5678է է, իսկ DՏ:3236էինը՝ 0Ճ8ՇDէ, ապա անցում կկատարվի 0Ճ8ՇDէ:5678է հասցեին։ Այս հրամանը հեռու, ոչ ուղղակի անցման օրինակ է։
JՇՇ – Պայմանական անցում / Jսոք i1 Ըօոմiէiօո i5 M6է Շարահյուսություն: Նկարագրություն: Դրոշներ:
JՇՇ նշիչ անցում նշիչով որոշվող հրամանին, եթե օօ պայմանը տեղի ունի
Jօօ հրամանները կատարում են կարճ կամ մոտիկ անցում տրված նշիչով որոշվող հրամանին, եթե պայմանը տեղի ունի: Պայմանը որոշվում է կոնկրետ դրոշների արժեքներով կամ ՇՃ ռեգիստրի արժեքով: Հաճախ Jօօ հրամանն օգտագործում են ՇԽP հրամանից անմիջապես հետո և այդ դեպքում պայմանը որոշվում է ՇԽP հրամանի կատարումից առաջացած դրոշների արժեքներով: Պայմանի հուշանվան մեջ մասնակցում են բարձր (aԵօv6) և ցածր (Ե61օw) տերմինները՝ առանց նշանի անցումների դեպքում և մեծ (ջr6aէ6r) ու փոքր (16ՏՏ) տերմինները՝ նշանով անցումների դեպքում։ Առանց նշանի անցումների դեպքում դիտարկվում է ՇF դրոշը, իսկ նշանով անցումների դեպքում՝ ՕF և ՏF դրոշները։ Յուրաքանչյուր հրաման ունի իրեն համարժեք մեկ այլ անվանում։ Համարժեք (նույն մեքենայական կոդն ունեցող) հրամանները բաժանված են ‘/’ սիմվոլով։ Հրամանի հուշանուն
Պայմանի ստուգում՝ ըստ դրոշների կամ ԸՃ ռեգիստրի
JՃ /JN8Է
ՇF - 0 & 7F - 0
JՃԷ /JN8 /JNՇ
ՇF - 0
J8 /JNՃԷ /JՇ
ՇF - 1
Հրամանի լրիվ անվանումը Անցում, եթե բարձր է (Jսոք 1f aԵօv6) / Անցում, եթե ցածր կամ հավասար չէ (Jսոք 1f ոօէ Ե61օw օr 6զսa1) Անցում, եթե բարձր է կամ հավասար (Jսոք 1f aԵօv6 օr 6զսa1) / Անցում, եթե ցածր չէ (Jսոք 1f ոօէ Ե61օw)/ Անցում, եթե փոխանցում չկա (Jսոք 1f ոօէ օarr7 ) Անցում, եթե ցածր է (Jսոք 1f Ե61օw) / Անցում, եթե բարձր կամ հավասար չէ (Jսոք 1f ոօէ aԵօv6 օr 6զսa1) / Անցում, եթե փոխանցում կա (Jսոք 1f օarr7)
J8Է /JNՃ
ՇF - 1 | 7F - 1
JԷ /J7
7F - 1
JՕ /JNԼԷ
7F - 0 & ՏF - ՕF
JՕԷ /JNԼ
ՏF - ՕF
JԼ /JNՕԷ
ՏF Հ» ՕF
JԼԷ /JNՕ
7F - 1 | ՏF Հ» ՕF
JNԷ /JN7
7F - 0
JNՕ
ՕF - 0
JՕ
ՕF - 1
JNP /JPՕ
PF - 0
JP /JPԷ
PF - 1
JNՏ
ՏF - 0
JՏ
ՏF - 1
JՇՃ7
ՇՃ - 0
JԷՇՃ7 (386-)
ԷՇՃ - 0
Անցում, եթե ցածր կամ հավասար է (Jսոք 1f Ե61օw օr 6զսa1) / Անցում, եթե բարձր չէ (Jսոք 1f ոօէ aԵօv6) Անցում, եթե հավասար է (Jսոք 1f 6զսa1)/ Անցում, եթե զրո է (Jսոք 1f 26rօ) Անցում, եթե մեծ է (Jսոք 1f ջr6aէ6r) / Անցում, եթե փոքր կամ հավասար չէ (Jսոք 1f ոօէ 16ՏՏ օr 6զսa1) Անցում, եթե մեծ կամ հավասար է (Jսոք 1f ջr6aէ6r օr 6զսa1) / Անցում, եթե փոքր չէ (Jսոք 1f ոօէ 16ՏՏ) Անցում, եթե փոքր է (Jսոք 1f 16ՏՏ) / Անցում, եթե մեծ կամ հավասար չէ (Jսոք 1f ոօէ ջr6aէ6r օr 6զսa1) Անցում, եթե փոքր կամ հավասար է (Jսոք 1f 16ՏՏ օr 6զսa1) / Անցում, եթե մեծ չէ (Jսոք 1f ոօէ ջr6aէ6r) Անցում, եթե հավասար չէ (Jսոք 1f ոօէ 6զսa1) / Անցում, եթե զրո չէ (Jսոք 1f ոօէ 26rօ) Անցում, եթե գերհագեցում չկա (Jսոք 1f ոօէ օv6rf1օw) Անցում, եթե գերհագեցում կա (Jսոք 1f օv6rf1օw) Անցում, եթե զույգություն չկա (Jսոք 1f ոօէ քar1է7) / Անցում, եթե կենտ է (Jսոք 1f քar1է7 օմմ) Անցում, եթե զույգություն կա (Jսոք 1f քar1է7) /Անցում, եթե զույգ է (Jսոք 1f քar1է7 6v6ո) Անցում, եթե նշան չկա և ոչ բացասական է (Jսոք 1f ոօէ Տ1ջո) Անցում, եթե նշան կա և բացասական է (Jսոք 1f Տ1ջո) Անցում, եթե ՇՃ - 0 (Jսոք 1f ՇՃ 1Տ 26rօ) Անցում, եթե ԷՇՃ - 0 (Jսոք 1f ԷՇՃ 1Տ 26rօ)
Նկար 1. Jcc հրամանի իրականացման պայմանները
Օրինակ 1 Հաշվել և 8Լ-ում պահել տրված Ճ և 8 նշանով թվերից մեծի արժեքը: ԽՕՕ ՃԼ, Ճ ԽՕՕ 8Լ, 8 ՇԽP ՃԼ, 8Լ JԼԷ ո62է ԽՕՕ 8Լ, ՃԼ ո62է: . . . Օրինակ 2 Հաշվել և 8Լ-ում պահել տրված Ճ և 8 առանց նշանի թվերից փոքրի արժեքը: ԽՕՕ ՃԼ, Ճ ԽՕՕ 8Լ, 8 ՇԽP ՃԼ, 8Լ J8Է ո62է ԽՕՕ 8Լ, ՃԼ ո62է: . . . Օրինակ 3 8Լ-ին վերագրել 1, եթե տրված Ճ և 8 նշանով թվերի գումարը բացասական է, հակառակ դեպքում` 8Լ-ին վերագրել 0: ԽՕՕ ՃԼ, Ճ ՃՕR 8Լ, 8Լ ՃDD ՃԼ, 8 JNՏ ո62է 1NՇ 8Լ ո62է: . . .
ԼՕՕP / ԼՕՕPՇՇ – Ցիկլ /ԼՕՕP aՇՇօոմiոջ էօ EԸՃ Շօսոէ6ո Շարահյուսություն: Նկարագրություն: Դրոշներ:
ԼՕՕP /ԼՕՕPՇՇ նշիչ ցիկլի կազմակերպում՝ ըստ ՇՃ/ԷՇՃ ռեգիստրի և 7F դրոշի
Բոլոր ցիկլի հրամանները ՇՃ/ԷՇՃ ռեգիստրի արժեքը (առանց նշանի ամբողջ թիվ) նվազեցնում են 1-ով, ապա կարճ անցում կատարում նշիչով որոշվող հրամանին, եթե հաշվիչը զրո չէ, և օօ պայմանը տեղի ունի: Հրամանի հուշանուն ԼՕՕP
Հրամանի աշխատանքի նկարագրություն 1. ՇՃ - ՇՃ - 1 2. Անցում նշիչին, եթե ՇՃ ≠ 0
ԼՕՕPԷ/ԼՕՕP7
1. ՇՃ - ՇՃ - 1 2. Անցում նշիչին, եթե ՇՃ ≠ 0 և 7F - 1
ԼՕՕPNԷ/ԼՕՕPN7
1. ՇՃ - ՇՃ - 1 2. Անցում նշիչին, եթե ՇՃ ≠ 0 և 7F - 0
Նկար 2. ԼՕՕP /ԼՕՕPcc հրամանների իրականացման պայմանները
Ցիկլի հրամաններն օգտագործվում են ցիկլերի կազմակերպման համար, որտեղ ՇՃ/ԷՇՃ ռեգիստրը հանդես է գալիս որպես ցիկլի հաշվիչ, ընդ որում` ցիկլի մարմնի մեջ մտնող հրամանները գոնե մեկ անգամ կատարվում են: Ցիկլի հրաման օգտագործող ծրագրի կոդն ունի հետևյալ ընդհանուր տեսքը.
Լօօք_1aԵ61:
ԽՕՕ ՇՃ, N
հրաման_1 հրաման_2 հրաման_Ճ ԼՕՕP/ԼՕՕPօօ 1օօք_1aԵ61
Հրաման_1, հրաման_2, ... հրաման_Ճ հրամանների խումբը կազմում են ցիկլի մարմինը: ԼՕՕP հրամանի դեպքում ցիկլի մարմնի մեջ մտնող հրամանները կկատարվեն N (N ≠ 0) անգամ, իսկ ԼՕՕPօօ հրամանների դեպքում, քանի դեռ ՇՃ-ը 0 չէ, և պայմանը տեղի ունի: Պայմանը որոշվում է 7F դրոշով, որն արժեք է ստանում ԼՕՕPօօ-ին նախորդող 7F-ի վրա ազդող հրամանով: Օրինակ 3 Հաշվել և 8Ճ-ում պահել |a,Ե| միջակայքի զույգ թվերի գումարը:
ԽՕՕ ՇՃ, Ե
ՏՍ8 ՇՃ, a 1NՇ ՇՃ : միջակայքի տարրերի քանակը
ՃՕR 8Ճ, 8Ճ
ԽՕՕ DՃ, a
: DՃ-ում պահում ենք միջակայքի : հերթական թիվը ՇՄRՇԼԷ:
TԷՏT DՃ, 1
JN7 ո62է : եթե զույգ չի, անցնել ո62է նշիչին
ՃDD 8Ճ, DՃ
: եթե զույգ է` գումարել 8Ճ-ին ո62է: 1NՇ DՃ
ԼՕՕP ՇՄRՇԼԷ
ԸՃԼԼ – Պրոցեդուրայի կանչ / Ըa11 քոօՇ6մսո6 Շարահյուսություն: Նկարագրություն: Դրոշներ:
ԸՃԼԼ օպերանդ օպերանդով որոշվող պրոցեդուրայի կանչ
ՇՃԼԼ հրամանով տեղի է ունենում օպերանդով որոշվող պրոցեդուրայի կանչ: Օպերանդն անմիջական արժեք է (նշիչ), ընդհանուր օգտագործման ռեգիստր` r6ջ16/r6ջ32, կամ հիշողության հասցե` ո6ո16/ո6ո32, և պարունակում է կանչվող պրոցեդուրայի հասցեն (այսինքն՝ պրոցեդուրայի առաջին հրամանի հասցեն): Եթե օպերանդը նշիչ է (պրոցեդուրայի անունը), ապա օպերանդի արժեքը նշիչի հարաբերական հասցեն է (այսինքն՝ շեղումը պրոցեդուրայի անվան և ՇՃԼԼ հրամանի միջև), և պրոցեդուրայի սկզբի բացարձակ հասցեն կներկայացնի ընթացիկ 1P/Է1P - հարաբերական հասցե: Եթե օպերանդը ռեգիստր կամ հիշողության հասցե է, ապա այն պարունակում է պրոցեդուրայի սկզբի բացարձակ հասցեն (շեղումը սեգմենտի սկզբից): ՇՃԼԼ հրամանն ընթացիկ հրամանի՝ վերադարձի հասցեն, պահում է պահունակում և կատարում անցում օպերանդում նշված հասցեով: Իրական ռեժիմում կա պրոցեդուրայի 2 տիպի կանչ. 1. մոտիկ կանչ պրոցեդուրայի սահմանումն ու կանչը գտնվում են նույն սեգմենտում, 2. հեռու կանչ պրոցեդուրայի սահմանումն ու կանչը կարող են գտնվել տարբեր սեգմենտներում: Մոտիկ կանչի դեպքում պրոցեսորը նախ 1P/Է1P-ի ընթացիկ արժեքը գրում է պահունակի մեջ, ապա անցում կատարում կանչվող պրոցեդուրային՝ 1P/Է1P-ին վերագրելով պրոցեդուրայի սկզբի բացարձակ հասցեն: Հեռու կանչի դեպքում պրոցեսորը պահունակի մեջ գրում է ՇՏ և 1P/Է1P ռեգիստրների ընթացիկ արժեքները, ապա ՇՏ և 1P/Է1P ռեգիստրներին վերագրում կանչվող պրոցեդուրայի սեգմենտի և սեգ150
մենտի սկզբից ունեցած շեղման արժեքները համապատասխանաբար: Օրինակ 1 ՇՃԼԼ ՃՃ Եթե (ՃՃ) - 1234է, ապա ղեկավարությունը կփոխանցվի ՇՏ:1234է հասցեին։ 1234է-ը չի դիտարկվում որպես հարաբերական շեղում։ Օրինակ 2 ՇՃԼԼ WՕRD PTR 2000է|8Ճ| Եթե (8Ճ) - 1234է, DՏ:3234է-ի պարունակությունը՝ 5678է, ապա ղեկավարությունը կփոխանցվի ՇՏ:5678է հասցեով ենթածրագրին։ RET / RETN /RETF – Վերադարձ պրոցեդուրայից / R6էսոո 1ոօո PոօՇ6մսո6 Շարահյուսություն: Նկարագրություն: Դրոշներ:
RET/ RET K / RETN / RETN K / RETF / RETF K
վերադարձ պրոցեդուրայից հիմնական ծրագիր
RԷT հրամանը կատարում է վերադարձ պրոցեդուրայից հիմնական ծրագիր: Կախված պրոցեդուրայի տեսակից՝ NԷՃR կամ FՃR, ասեմբլերը RԷT հրամանը փոխարինում է RԷTN կամ RԷTF հրամաններով: RԷTN-ի դեպքում պահունակից կարդացվում է 1 բառ կամ կրկնակի բառ և գրվում 1P/Է1P-ի մեջ, իսկ RԷTF-ի դեպքում՝ 2 կամ 3 բառ և գրվում 1P/Է1P և ՇՏ-ի մեջ համապատասխանաբար: RԷT Ճ (RԷTN Ճ/ RԷTF Ճ) հրամանն աշխատում է նույն կերպ, ինչ-որ RԷT-ը, միայն թե վերադարձի հասցեն (1P/Է1P կամ 1P/Է1P և ՇՏ) պահունակից հանելուց հետո պահունակից հանվում է նաև Ճ բայթ: Սա օգտագործվում է այն դեպքում, երբ պրոցեդուրային պարամետրեր են փոխանցվել պահունակով:
Նկար 3. ԲԵ1 ն հրամանի իրականացումը
1NT– Ընդհատման կանչ / Ըa11 էօ 1ոէ6ոոսքէ PոօՇ6մսո6 Շարահյուսություն: Նկարագրություն: Դրոշներ:
1NT N ընդհատումը մշակող պրոցեդուրայի կանչ
N-ը ընդհատման համարն է՝ |0,255| միջակայքի թիվ, և 1NT N հրամանով կատարվում է N համարի ընդհատումը մշակող ենթածրագրի կանչ, այլ կերպ ասած՝ ծրագրի ղեկավարությունը փոխանցվում է N համարով որոշվող հասցեում տեղադրված ենթածրագրին, որին անվանում են ընդհատումը մշակող ենթածրագիր (iոէ6ոոսքէ 56ոviՇ6 ոօսէiո6 (1ՏR)): Այս հրամանի իրականացումը կախված է պրոցեսորի ռեժիմից։ Իրական ռեժիմում ընդհատումը մշակող ենթածրագրերի/պրոցեդուրաների հասցեները պահվում են ընդհատման վեկտորների աղյուսակում, իսկ պաշտպանված ռեժիմում՝ ընդհատումների նկարագրիչների (մ6Տօr1քէօr) աղյուսակում (1DT – 1ոէ6rrսքէ D6Տօr1քէօr TaԵ16)։ Կդիտարկենք 1NT հրամանի կատարումը իրական ռեժիմում։ Ընդհատման վեկտորների աղյուսակը տեղադրված է 0000:0000հ
հասցեից, ունի 1ԿԲ երկարություն (1024 - 400է), որտեղ յուրաքանչյուր ընդհատման վեկտորի հատկացված է 4 բայթ։ Ընդհատման վեկտորի առաջին 2 բայթում գրված է ընդհատումը մշակող պրոցեդուրայի սեգմենտի սկզբի հասցեն, իսկ հաջորդ 2 բայթում՝ այդ սեգմենտում ընդհատումը մշակող պրոցեդուրայի շեղման արժեքը: Աղյուսակի առաջին 4 բայթը համապատասխանում են „1NT 0” ընդհատմանը, հաջորդ քառյակը՝ „1NT 1” ընդհատմանը և այլն։ 1NT N հրամանն իրական ռեժիմում իրականացնում է հետևյալ քայլերը. 1. պահունակի մեջ գրվում է FԼՃՕՏ/ԷFԼՃՕՏ արժեքը (PՍՏէ
FԼՃՕՏ/ PՍՏէ ԷFԼՃՕՏ),
2. պահունակի մեջ գրվում է հեռու վերադարձի սեգմենտ:շեղում հասցեն (PՍՏէ ՇՏ: PՍՏէ 1P/Է1P), 3. պրոցեսորը 0:N"4 հասցեից որոշում է ընդհատումը մշակող ենթածրագրի հասցեն, 4. 1F 0, TF 0, 5. ղեկավարությունը փոխանցվում է ընդհատումը մշակող ենթածրագրին (ՇՏ 0:|4 " N|, 1P 0:|4 " N - 2|): 1RET / 1RETԾ (80386-) – Վերադարձ ընդհատումից /1ոէ6ոոսքէ R6էսոո Շարահյուսություն: Նկարագրություն: Դրոշներ:
1RET /1RETԾ
վերադարձ ընդհատումը մշակող պրոցեդուրայից հիմնական ծրագիր բոլոր դրոշների արժեքները փոխվում են
1RԷT/1RԷTD հրամանը կազմակերպում է վերադարձ ընդհատումը մշակող պրոցեդուրայից հիմնական ծրագիր: Դրա համար հրամանը պահունակից կարդում է 3 արժեք և գրում դրանք 1P, ՇՏ և FԼՃՕՏ ռեգիստրների մեջ 1RԷT-ի դեպքում կամ Է1P, ՇՏ և ԷFԼՃՕՏ ռեգիստրների մեջ 1RԷTD-ի դեպքում:
Խնդիրների լուծման օրինակներ 1. Հաշվել և ՇԼ ռեգիստրում պահել տրված բայթային Ճ և 8 բնական թվերի ամենամեծ ընդհանուր բաժանարարը՝ ԱԸԲ.
.ԽՕDԷԼ ՏԽՃԼԼ
.DՃTՃ Ճ D8 D8 .ՇՕDԷ
8ԷՕ1N: ԽՕՕ
ԽՕՕ
Շ1RՇԼԷ: ՇԽP
JԷ JՃ ՏՍ8 JԽP Ճ1: ՏՍ8 JԽP
F1N1Տէ: ԽՕՕ
ԽՕՕ 1NT ԷND
ՃԼ, Ճ 8Լ, 8 ՃԼ, 8Լ F1N1Տէ Ճ1 8Լ, ՃԼ Շ1RՇԼԷ ՃԼ, 8Լ Շ1RՇԼԷ ՇԼ, ՃԼ ՃՃ, 4Շ00է 21է 8ԷՕ1N
: ԽՕՕ ՇԼ, 8Լ
2. Հաշվել և ՇԼ ռեգիստրում պահել N տարրից բաղկացած Ճ միաչափ բայթային զանգվածի դրական տարրերի քանակը.
.ԽՕDԷԼ ՏԽՃԼԼ
.DՃTՃ N ԷՕՍ 5 Ճ D8 -27, 45, -5, 22, 67 .ՇՕDԷ
8ԷՕ1N: ՃՕR
Տ1, Տ1
ՃՕR
Շ1RՇԼԷ: ՇԽP
JԷ ՇԽP JԼԷ 1NՇ NԷՃT: 1NՇ JԽP
F1N1Տէ: ԽՕՕ
1NT ԷND
ՇԼ, ՇԼ Տ1, N F1N1Տէ Ճ|Տ1|, 0 NԷՃT ՇԼ Տ1 Շ1RՇԼԷ ՃՃ, 4Շ00է 21է 8ԷՕ1N
3. Հաշվել և 8Ճ ռեգիստրում պահել առանց նշանի N տարրից բաղկացած Ճ միաչափ բառային զանգվածի զույգ տարրերի գումարը.
.ԽՕDԷԼ ՏԽՃԼԼ
.DՃTՃ N ԷՕՍ 5 Ճ DW 24, 31, 45, 18, 74 .ՇՕDԷ
8ԷՕ1N: ՃՕR
Տ1, Տ1 ԽՕՕ ՇՃ, N ՃՕR 8Ճ, 8Ճ ԽՕՕ ՃՃ, Ճ|Տ1|
Շ1RՇԼԷ: TԷՏT
ՃՃ,1 JN7 NԷՃT ՃDD 8Ճ, ՃՃ NԷՃT: 1NՇ Տ1 1NՇ Տ1 ԼՕՕP Շ1RՇԼԷ ԽՕՕ ՃՃ, 4Շ00է 1NT 21է ԷND 8ԷՕ1N
4. Հաշվել և 8Լ ռեգիստրում պահել N տարրերից բաղկացած Ճ միաչափ բայթային զանգվածի այն տարրերի քանակը, որոնց երկուական ներկայացման մեջ 1-երի քանակը զույգ է։
.ԽՕDԷԼ ՏԽՃԼԼ
.DՃTՃ N ԷՕՍ 5 Ճ D8 -42, 20, -5, 11, 7 .ՇՕDԷ
8ԷՕ1N: ՃՕR
Տ1, Տ1 ԽՕՕ ՇՃ, N ՃՕR 8Լ, 8Լ
Շ1RՇԼԷ: TԷՏT
Ե7է6 քէr Ճ|Տ1|, 0FFհ JNP NԷՃT 1NՇ 8Լ NԷՃT: 1NՇ Տ1 ԼՕՕP Շ1RՇԼԷ ԽՕՕ ՃՃ, 4Շ00է 1NT 21է ԷND 8ԷՕ1N 5. Տ1 ռեգիստրում ստանալ N (N - 5) տարրերից բաղկացած Ճ միաչափ բայթային զանգվածի առաջին 0 արժեք ունեցող տարրի ինդեքսը։ 8Լ ռեգիստրին տալ 1 արժեք, եթե նման տարր կա, հակառակ դեպքում 8Լ-ին վերագրել 0։
.ԽՕDԷԼ ՏԽՃԼԼ
.DՃTՃ N ԷՕՍ 5 Ճ D8 -4, 0, -5, 1, 7 .ՇՕDԷ
8ԷՕ1N: ԽՕՕ
Տ1, -1 ԽՕՕ ՇՃ, N ԽՕՕ 8Լ, 1
RԷPԷՃT: 1NՇ
Տ1
ՏՃ1P:
ՇԽP ԼՕՕPNԷ JԷ ԽՕՕ ԽՕՕ 1NT ԷND
Ճ|Տ1|, 0 RԷPԷՃT ՏՃ1P 8Լ, 0 ՃՃ, 4Շ00է 21է 8ԷՕ1N
: փնտրվող տարրը չկա
Խնդիրներ և վարժություններ 1. Նշանով բայթային ամբողջ թվերի տրված միաչափ զանգվածում հաշվել 7-ից մեծ և 4-ին պատիկ թվերի գումարը: 2. Նշանով բայթային ամբողջ թվերի տրված միաչափ զանգվածում հաշվել միանիշ թվերի քանակը: 3. Նշանով բառային ամբողջ թվերի տրված միաչափ զանգվածից ստանալ զույգ թվերից կազմված նոր ենթազանգված: 4. Տրված սիմվոլային միաչափ զանգվածից ստանալ մեծատառերից կազմված նոր ենթազանգված: 5. Նշանով բայթային ամբողջ թվերի տրված միաչափ զանգվածում գտնել առաջին կենտ թիվը և հաշվել դրան նախորդող թվերի գումարը: 6. Նշանով բայթային ամբողջ թվերի տրված միաչափ զանգվածում գտնել |5: 10| միջակայքին պատկանող արժեքով վերջին թիվը և հաշվել դրան հաջորդող թվերի քանակը: 7. Նշանով բառային ամբողջ թվերի տրված միաչափ զանգվածում գտնել առաջին երկնիշ թիվը և հաշվել դրան հաջորդող թվերի միջին թվաբանականը: 8. Ստեղնաշարից ներածել սիմվոլներ մինչև ՛"՛-ի հանդիպելը: Դրանցում հաշվել թվանշանների քանակը և այն արտածել էկրանին: Թվանշան-սիմվոլների որոնումը և քանակի արտածումն իրականացնել առանձին պրոցեդուրաներով:
9. Ստեղնաշարից ներածել սիմվոլներ մինչև ՛%՛-ի հանդիպելը: Դրանցում հաշվել թվանշանների գումարը և այն արտածել էկրանին: Թվանշան-սիմվոլների որոնումը և գումարի արտածումն իրականացնել առանձին պրոցեդուրաներով: 10. Ստեղնաշարից ներածել սիմվոլներ մինչև ՛#՛-ի հանդիպելը: Դրանցում հաշվել մեծատառերի քանակը և այն արտածել էկրանին: Մեծատառերի որոնումը և քանակի արտածումն իրականացնել առանձին պրոցեդուրաներով: 11. Ստեղնաշարից ներածել սիմվոլներ մինչև ՛$՛-ի հանդիպելը (առավելագույնը 20 սիմվոլ): Դրանցում գտնել փոքրատառերը և առանձին տողով արտածել էկրանին: Փոքրատառերի որոնումն իրականացնել պրոցեդուրայով: 12. Ստեղնաշարից ներածել 15 սիմվոլներից կազմված զանգված: Պրոցեդուրայի միջոցով այդ զանգվածում որոնել փոքրատառերը և դրանք դարձնել համապատասխան մեծատառեր: Դրանցից կազմել նոր ենթազանգված և այն նոր տողից արտածել էկրանին: 13. Ստեղնաշարից ներածել 20 սիմվոլներից կազմված զանգված: Պրոցեդուրայի միջոցով այդ զանգվածում որոնել |20է: 70է| միջակայքի սիմվոլները: Դրանցից կազմել նոր ենթազանգված և այն նոր տողից արտածել էկրանին: Զանգվածում այդպիսի սիմվոլներ չլինելու դեպքում արտածել համապատասխան հաղորդագրություն: 14. Ստեղնաշարից ներածել 26 սիմվոլներից կազմված զանգված: Պրոցեդուրայի միջոցով այդ զանգվածում որոնել թվանշանները: Հաշվել նրանց գումարը և այն պրոցեդուրայի միջոցով նոր տողից արտածել էկրանին: Զանգվածում այդպիսի սիմվոլներ չլինելու դեպքում արտածել համապատասխան հաղորդագրություն:
Տողային հրամաններ Այս հրամաններն աշխատում են տողերի հետ: Տողը (Տէr1ոջ) բայթերից/ բառերից/ կրկնակի բառերից (386-) կազմված հաջորդականություն է։ Տողային հրամաններն իրականացնում են տվյալների տեղափոխություն հիշողության մի տիրույթից մյուսը (ԽՕՕՏ), հիշողության տիրույթների համեմատություն (ՇԽPՏ), որոնում հիշողության տիրույթում (ՏՇՃՏ), հիշողության տիրույթի սկզբնարժեքավորում (ՏTՕՏ) և այլն։ Որոշ տողային հրամաններում (ԽՕՕՏ, ՇԽPՏ) երկու օպերանդներն էլ հիշողության հասցեներ են: Տողային հրամանները յոթն են, և նրանց հուշանունները վերջանում են Տ(Տէr1ոջ) տառով կամ Տ-ին հաջորդող 8,W,D(386-) տառերից մեկով (որով էլ որոշվում է հրամանում մասնակցող միավորի տիպը)։ Տողային հրամաններն ունեն գրության երկու եղանակ՝ առանց օպերանդների և օպերանդների բացահայտ տրմամբ։ Եթե հրամանի հուշանունը վերջանում է 8/W/D տառով, ապա օպերանդները չեն գրվում: Հրամանում օպերանդները ձևական են, և դրանք կարող են ցույց չտալ իրական հասցեն: Տողային հրամաններով աշխատելիս պետք է հիշել հետևյալը. ընդունիչը որոշվում է ԷՏ: D1/ԷD1 -ի, իսկ աղբյուրը` DՏ: Տ1/ԷՏ1 հասցեներով, օպերանդներն օգտագործվում են միավորի տիպը որոշելու համար (ասեմբլեր թարգմանիչը որոշում է տվյալ հրամանը ‘8’, ‘W’ թե ‘D’ տարբերակի թարգմանի)։ Օպերանդների բացահայտ օգտագործումը հնարավորություն է տալիս լռությամբ օգտագործվող DՏ սեգմենտային ռեգիստրը փոխարինելու այլ սեգմենտային ռեգիստրով (ԷՏ, ՕՏ, FՏ, ՇՏ, ՏՏ) սեգմենտի վերաբեռնման նախդիրի միջոցով։ Ընդունիչի սեգմենտային ռեգիստրը՝ ԷՏ-ը, չի թույլատրվում փոխարինել։ Տողային հրամանները մեկ միավորի հետ գործողությունն իրականացնելուց հետո, կախված DF դրոշից, հրամանում
աշխատող ինդեքսային ռեգիստրների արժեքներն ավտոմատ մեծացնում (DF - 0 դեպքում) կամ փոքրացնում (DF - 1 դեպքում) են միավորի չափով՝ 1, 2 կամ 4-ով: Տողային հրամանների հետ կարող են օգտագործվել կրկնման նախդիրներ (RԷP,RԷPԷ/RԷP7, RԷPNԷ/RԷPN7)։ Առանց կրկնման նախդիրների՝ այս հրամաններն աշխատում են միայն մեկ միավորի՝ բայթի (Ե7է6), բառի (wօrմ) կամ կըրկնակի բառի (մwօrմ, 386-) հետ: Եթե հրամանն ունի կրկնման նախդիր, այդ դեպքում գործողությանը կարող են մասնակցել ամենաշատը ՇՃ/ԷՇՃ-ի չափով միավորներ, և յուրաքանչյուր միավորը մշակելուց հետո ՇՃ/ԷՇՃ-ի արժեքը նվազում է 1-ով: Կրկնությունն իրականացվում է ըստ հետևյալ աղյուսակի. Կրկնման նախդիր REP (կրկնել քանի դեռ EԸՃ-ը 0 չի / R6ք6aէ wհ116 ԷՇՃ ոօէ 26rօ) REPE/REPZ (կրկնել քանի դեռ հավասար է / R6ք6aէ wհ116 6զսa1/R6ք6aէ wհ116 26rօ REPNE/REPNZ (կրկնել քանի դեռ հավասար չէ/R6ք6aէ wհ116 ոօէ 6զսa1/R6ք6aէ wհ116 ոօէ 26rօ
Կրկնության ավարտի պայման1
ԷՇՃ/ՇՃ - 0
Կրկնության ավարտի պայման2 -
ԷՇՃ/ՇՃ - 0
7F - 0
ԷՇՃ/ՇՃ - 0
7F - 1
RԷP նախդիրի դեպքում յուրաքանչյուր միավորի մշակումից հետո ՇՃ/ԷՇՃ ռեգիստրի արժեքը նվազում է 1-ով, և եթե այն զրո չէ (զրոյի դեպքում հրամանն ավարտվում է), հրամանի իրականացումը շարունակվում է: RԷPԷ/RԷPNԷ/RԷP7/RԷPN7 նախդիրների դեպքում յուրաքանչյուր միավորի մշակումից հետո ՇՃ/ԷՇՃ ռեգիստրի արժեքը նվազում է 1-ով, և եթե այն զրո չէ (զրոյի դեպքում հրամանն ավարտվում է), հրամանի իրականացումը շարունակվում է՝ կախված նախդիրից և, ըստ դրա, 7F դրոշից: Յուրաքանչյուր միավորի մշա160
կումից հետո հրամանում կիրառվող ինդեքսային ռեգիստրները (D1/ԷD1, Տ1/ԷՏ1) նվազում (DF - 1 դեպքում) կամ աճում (DF - 0 դեպքում) են միավորի չափով: Սովորաբար RԷP նախդիրն օգտագործվում է 1NՏ, ՕՍTՏ, ԽՕՕՏ, ԼՕDՏ, ՏTՕՏ հրամանների հետ, իսկ RԷPԷ, RԷPNԷ, RԷP7, RԷPN7 նախդիրները՝ ՇԽPՏ, ՏՇՃՏ հրամանների հետ։ Կրկնման նախդիրներն օգտագործվում են միայն տողային հրամանների հետ:
ԽՕՕՏ/ԽՕՕՏ8/ԽՕՕՏW/ԽՕՕՏD
ՇԽPՏ/ՇԽPՏ8/ՇԽPՏW/ՇԽPՏD
ՏՇՃՏ/ՏՇՃՏ8/ՏՇՃՏW/ՏՇՃՏD
ԼՕDՏ/ԼՕDՏ8/ԼՕDՏW/ԼՕDՏD
ՏTՕՏ/ՏTՕՏ8/ՏTՕՏW/ՏTՕՏD
1NՏ/1NՏ8/1NՏW/1NՏD
ՕՍTՏ/ՕՍTՏ8/1NՏD
Տողի տեղափոխում/ Խօv6 Տէr1ոջ Տողի համեմատում/ Շօոքar6 Տէr1ոջ Տողում որոնում /Տօaո Տէr1ոջ Տողի բեռնում/Լօaմ Տէr1ոջ Գրառում տողում/Տէօr6 Տէr1ոջ Տողի ներածում կայանից/ 1ոքսէ Տէr1ոջ frօո քօrէ Տողի արտածում կայան/ Օսէքսէ Տէr1ոջ էօ քօrէ
MՕՕՏ /MՕՕՏB / MՕՕՏW /MՕՕՏԾ(386-) – Տեղափոխել տող / Mօv Տէոiոջ Շարահյուսություն: Նկարագրություն:
MՕՕՏ ընդունիչ, աղբյուր Իրականացնել ԽՕՕՏ8 /ԽՕՕՏW /ԽՕՕՏD կախված ընդունիչի և աղբյուրի տիպից
Շարահյուսություն: Նկարագրություն:
MՕՕՏB / MՕՕՏW / MՕՕՏԾ (386-)
8ՄTԷ / WՕRD / DWՕRD PTR ԷՏ:ԷD1/D1
8ՄTԷ / WՕRD / DWՕRD PTR DՏ:ԷՏ1/Տ1
ԷD1/D1 ԷD1/D1 - 1 / 2 / 4, եթե DF - 0 ԷՏ1/Տ1 ԷՏ1/Տ1 - 1 / 2 / 4, եթե DF - 0 ԷD1/D1 ԷD1/D1 - 1 / 2 / 4, եթե DF - 1 ԷՏ1/Տ1 ԷՏ1/Տ1 – 1 / 2 / 4, եթե DF - 1
Դրոշներ:
Ընդունիչը և աղբյուրը հիշողության հասցե (ո6ո8/ո6ո16 /ո6ո32) են: Հրամանի կատարման արդյունքում աղբյուրով որոշվող հասցեից միավորի չափ բայթ (1, 2 կամ 4) պատճենվում է ընդունիչով որոշվող հասցեի մեջ, և փոխվում են ինդեքսային ռեգիստրների արժեքները միավորի չափով և ըստ DF դրոշի: Հրամանը կարող է ունենալ կրկնման RԷP նախդիր, որի դեպքում հրամանը կրկնվում է ՇՃ/ԷՇՃ ռեգիստրի արժեքի չափով: Հրամանի ավարտին ՇՃ/ԷՇՃ ռեգիստրի արժեքը զրո է: Օրինակ Հիշողության T հասցեից 6 բառ պատճենել հիշողության Ճ հասցե: .DՃTՃ T DW 5, 6, 7, 56, -24, 37 Ճ DW 6 մսք(2) .ՇՕDԷ … PՍՏէ DՏ PՕP ԷՏ : DՏ - ը և ԷՏ - ը նույն արժեքն ունեն ՇԼD : մաքրում ենք DF դրոշը, ինդեքսն աճելու է ԼԷՃ Տ1, T ԼԷՃ D1, Ճ ԽՕՕ ՇՃ, 6
RԷP ԽՕՕՏW
ԸMPՏ /ԸMPՏB /ԸMPՏW /ԸMPՏԾ(386-) –Տողերի համեմատում /Ըօոքaո6 Տէոiոջ Շարահյուսություն: Նկարագրություն:
Շարահյուսություն: Նկարագրություն:
ԸMPՏ ընդունիչ, աղբյուր Իրականացնել ՇԽPՏ8 /ՇԽPՏW /ՇԽPՏD՝ կախված ընդունիչի և աղբյուրի տիպից
ԸMPՏB / ԸMPՏW / ԸMPՏԾ (386-)
ՇԽP 8ՄTԷ / WՕRD / DWՕRD PTR ԷՏ:ԷD1/D1,
8ՄTԷ / WՕRD / DWՕRD PTR DՏ:ԷՏ1/Տ1
ԷD1/D1 ԷD1/D1 - 1 / 2 / 4, եթե DF - 0 ԷՏ1/Տ1 ԷՏ1/Տ1 - 1 / 2 / 4, եթե DF - 0 ԷD1/D1 ԷD1/D1 - 1 / 2 / 4, եթե DF - 1 ԷՏ1/Տ1 ԷՏ1/Տ1 - 1 / 2 / 4, եթե DF - 1 Դրոշներ:
ՃF ՇF ՕF PF ՏF 7F
Ընդունիչը և աղբյուրը հիշողության հասցե (ո6ո8/ո6ո16/ ո6ո32) են: Այս հրամանն ընդունիչի արժեքից հանում է աղբյուրի արժեքը և ըստ դրա՝ փոփոխում է վիճակի դրոշները: Հրամանը կարող է ունենալ կրկնման RԷPԷ/RԷP7 կամ RԷPNԷ/ RԷPN7 նախդիրը, որի դեպքում հրամանը կրկնվում է ամենաշատը ՇՃ/ԷՇՃ ռեգիստրի արժեքի չափով՝ հաջորդաբար համեմատելով միավորի չափ բայթեր ընդունիչից և աղբյուրից: Աշխատանքն ավարտվում է կամ ՇՃ/ԷՇՃ ռեգիստրի արժեքը զրո դառնալու կամ ստուգվող պայմանը խախտվելու դեպքում: Հրամանը կարելի է օգտագործել` 2 տողերում առաջին (DF - 0 դեպքում) կամ վերջին (DF 1 դեպքում) համընկնող (RԷPNԷ/RԷPN7 նախդիրով) կամ չհամընկնող (RԷPԷ/RԷP7 նախդիրով) միավորի տեղը որոշելու համար: Նշում Եթե տողերում վերջին միավորը չի բավարարում նախդիրի պայմանին, ապա դա ՇՃ/ԷՇՃ-ի արժեքից չի երևում, քանի որ այս դեպքում այն զրո է, և տողն ավարտվել է: Այնպես որ պետք է լրացուցիչ ստուգվի պայմանին բավարարող միավորի առկայությունը: ՏԸՃՏ/ՏԸՃՏB/ՏԸՃՏW/ՏԸՃՏԾ(386-) – Որոնում տողում /ՏՇaո Տէոiոջ Շարահյուսություն: Նկարագրություն:
Շարահյուսություն: Նկարագրություն:
ՏԸՃՏ ընդունիչ Իրականացնել ՏՇՃՏ8 / ՏՇՃՏW / ՏՇՃՏD` կախված ընդունիչի և կուտակիչի տիպից
ՏԸՃՏB / ՏԸՃՏW / ՏԸՃՏԾ (386-)
ՇԽP 8ՄTԷ / WՕRD / DWՕRD PTR ԷՏ:ԷD1/D1,
Ճ1 / ՃՃ / ԷՃՃ
ԷD1/D1 ԷD1/D1 - 1 / 2 / 4, եթե DF - 0 ԷD1/D1 ԷD1/D1 - 1 / 2 / 4, եթե DF - 1 Դրոշներ:
ՃF ՇF ՕF PF ՏF 7F
Ընդունիչը հիշողության հասցե (ո6ո8/ո6ո16/ո6ո32) է: Որպես երկրորդ օպերանդ՝ հանդես է գալիս կուտակիչը՝ ՃԼ/ՃՃ/ԷՃՃ ռեգիստրը: Այս հրամանն ընդունիչի արժեքից հանում է կուտակիչի՝ ՃԼ/ՃՃ/ԷՃՃ արժեքը և ըստ դրա՝ փոփոխում է վիճակի դրոշները: Հրամանը կարող է ունենալ կրկնման RԷPԷ/RԷP7 կամ RԷPNԷ/ RԷPN7 նախդիրը, որի դեպքում հրամանը կրկնվում է ամենաշատը ՇՃ/ԷՇՃ ռեգիստրի արժեքի չափով՝ հաջորդաբար համեմատելով ընդունիչի միավորի չափ բայթերի արժեքները կուտակիչի արժեքի հետ: Աշխատանքն ավարտվում է կամ ՇՃ/ԷՇՃ ռեգիստրի արժեքը զրո դառնալու կամ ստուգվող պայմանը խախտվելու դեպքում: Յուրաքանչյուր միավորը համեմատելիս ինդեքսային D1/ԷD1 ռեգիստրի արժեքը փոխվում է: Կրկնման նախդիրով ՏՇՃՏ հրամանը կարելի է օգտագործել կուտակիչի արժեքի հետ տողում առաջին (DF - 0 դեպքում) կամ վերջին (DF - 1 դեպքում) համընկնող (RԷPNԷ/RԷPN7) կամ չհամընկնող (RԷPԷ/RԷP7) միավորի տեղը որոշելու համար: Նշում Եթե տողերում վերջին միավորը չի բավարարում նախդիրի պայմանին, ապա դա ՇՃ/ԷՇՃ-ի արժեքից չի երևում, քանի որ այս դեպքում այն զրո է, և տողն ավարտվել է: Այնպես որ պետք է լրացուցիչ ստուգվի պայմանին բավարարող միավորի առկայությունը: Օրինակ Հիշողության T հասցեում գրված 6 բայթերի արժեքներից գտնել վերջին 15 թիվը:
DՃTՃ ՏԷՕԽԷNT
T D8 15, 6, 7, 15,6, -24,
DՃTՃ ԷNDՏ
ՇՕD ՏԷՕԽԷNT
ՃՏՏՍԽԷ ՏTՃRT:
ՇՏ:ՇՕD, DՏ:DՃTՃ
ՏTD
ԼԷՃ Տ1, T
ՃDD Տ1, 5
ԽՕՕ ՃԼ, 15
ԽՕՕ ՇՃ, 6
RԷPNԷ ՏՇՃՏ8
: DF - 1, ինդեքսը նվազելու է : Տ1-ն տողի վերջն է : փնտրվող արժեքը : ընդհանուր քանակը : փնտրում
ԼՕԾՏ /ԼՕԾՏB /ԼՕԾՏW /ԼՕԾՏԾ(386-) –Տողի բեռնում/Լօaմ Տէոiոջ Շարահյուսություն: Նկարագրություն:
Շարահյուսություն: Նկարագրություն:
ԼՕԾՏ աղբյուր Իրականացնել ԼՕDՏ8/ԼՕDՏW/ԼՕDՏD` կախված կուտակիչի և աղբյուրի տիպից
ԼՕԾՏB / ԼՕԾՏW / ԼՕԾՏԾ (386-)
ՃԼ/ՃՃ/ԷՃՃ 8ՄTԷ /WՕRD/DWՕRD PTR
DՏ:ԷՏ1/Տ1 ԷՏ1/Տ1 ԷՏ1/Տ1 - 1 / 2 / 4, եթե DF - 0 ԷՏ1/Տ1 ԷՏ1/Տ1 – 1 / 2 / 4, եթե DF - 1
Դրոշներ:
ՃF ՇF ՕF PF ՏF 7F
Աղբյուրը հիշողության հասցե (ո6ո8/ո6ո16/ո6ո32) է: Այս հրամանն աղբյուրով որոշվող հասցեից արժեքը պատճենում է կուտակիչի (ՃԼ/ՃՃ/ԷՃՃ) մեջ: Միավորը պատճենելիս ինդեքսային ռեգիստրը՝ ԷՏ1/Տ1, նվազում (DF - 1 դեպքում) կամ աճում (DF - 0 դեպքում) է միավորի չափով: Հրամանը կարող է ունենալ կրկնման RԷP նախդիր, որի դեպքում կուտակիչի մեջ կմնա տողի վերջին միավորի արժեքը, սակայն դա կարելի է անել առանց RԷP նախդիրի, հետևաբար նախդիր այս հրամանի համար չարժի օգտագործել: Հրամանը կարելի է օգտագործել ցիկլում՝ տողից հերթական միավորը կուտակիչի մեջ բեռնելու համար:
ՏTՕՏ/ՏTՕՏB/ՏTՕՏW/ՏTՕՏԾ(386-) - Գրառում տողում/ Տէօո6 Տէոiոջ Շարահյուսություն: Նկարագրություն:
ՏTՕՏ ընդունիչ Իրականացնել ՏTՕՏ8/ՏTՕՏW/ՏTՕՏD՝ կախված ընդունիչի և կուտակիչի տիպից
Շարահյուսություն: Նկարագրություն:
ՏTՕՏB / ՏTՕՏW / ՏTՕՏԾ (386-)
8ՄTԷ/WՕRD/DWՕRD PTR ԷՏ:ԷD1/D1 ՃԼ/ՃՃ/ԷՃՃ
ԷD1/D1 ԷD1/D1 - 1 / 2 / 4, եթե DF - 0 ԷD1/D1 ԷD1/D1 – 1 / 2 / 4, եթե DF - 1
Դրոշներ:
ՃF ՇF ՕF PF ՏF 7F
Ընդունիչը հիշողության հասցե (ո6ո8/ո6ո16/ո6ո32) է: Այս հրամանը կուտակիչի (ՃԼ/ՃՃ/ԷՃՃ) արժեքը պատճենում է ընդունիչում, և ինդեքսային ԷD1/D1 ռեգիստրի արժեքը նվազեցնում (DF - 1 դեպքում) կամ ավելացնում (DF - 0 դեպքում) է միավորի չափով: Հրամանը կարող է ունենալ կրկնման RԷP նախդիր, որի դեպքում հրամանը կրկնվում է ՇՃ/ԷՇՃ ռեգիստրի արժեքի չափով՝ կուտակիչի արժեքը հաջորդաբար գրանցելով ընդունիչ տողում: Հրամանը կարելի է օգտագործել ցիկլում՝ կուտակիչի արժեքը տողում հերթական միավորի տեղը գրանցելու համար: Օրինակ Հիշողության T հասցեում գրված 6 բառային տողից անջատել կենտ թվերը և գրել Ճ հասցեում:
DՃTՃ ՏԷՕԽԷNT
T DW 5, 6, 7, 59, 24, 38 Ճ DW 6 մսք(2)
DՃTՃ ԷNDՏ
ՇՕD ՏԷՕԽԷNT
ՃՏՏՍԽԷ
ՇՏ:ՇՕD, DՏ:DՃTՃ, ԷՏ:DՃT
ՏTՃRT:
N:
PՍՏէ PՕP ՇԼD ԼԷՃ ԼԷՃ ԽՕՕ ԼՕDՏW TԷՏT JԷ ՏTՕՏW ԼՕՕP
DՏ ԷՏ
: DՏ –ը և ԷՏ –ը նույն արժեքն ունեն : մաքրում ենք DF դրոշը, ինդեքսն : աճելու է
Տ1, T D1, ԷՏ:Ճ ՇՃ, 6 ՃՃ, 1 է N
1NՏ /1NՏB /1NՏW /1NՏԾ(386-) –Տողի ներածում կայանից /1ոքսէ Տէոiոջ Շարահյուսություն: Նկարագրություն:
1NՏ ընդունիչ, ԾՃ Իրականացնել 1NՏ8/1NՏW/1NՏD(386-)՝ կախված ընդունիչի տիպից
Շարահյուսություն: Նկարագրություն:
1NՏB / 1NՏW / 1NՏԾ (386-)
8ՄTԷ / WՕRD / DWՕRD PTR ԷՏ:ԷD1/D1
DՃ-ով որոշվող կայանից արժեքը ԷD1/D1 ԷD1/D1 - 1 / 2 / 4, եթե DF - 0 ԷD1/D1 ԷD1/D1 – 1 / 2 / 4, եթե DF - 1
Դրոշներ:
ՃF ՇF ՕF PF ՏF 7F
Ընդունիչը հիշողության հասցե (ո6ո8/ո6ո16/ո6ո32) է: Այս հրամանով DՃ ռեգիստրի արժեքով որոշվող կայանից միավորի չափով բայթի արժեքը գրվում է ընդունիչում և ինդեքսային ԷD1/D1 ռեգիստրի արժեքը նվազեցվում (DF - 1 դեպքում) կամ ավելացվում (DF - 0 դեպքում) է միավորի չափով:
Հրամանը կարող է ունենալ կրկնման RԷP նախդիր, որի դեպքում հրամանը կրկնվում է ՇՃ/ԷՇՃ ռեգիստրի արժեքի չափով` հաջորդաբար ընդունիչ տողում գրանցելով կայանից կարդացված հերթական միավորը: ՕՍTՏ/ՕՍTՏB/ՕՍTՏW/ՕՍTՏԾ(386-) – Տողի արտածում կայան /Օսէքսէ Տէոiոջ Շարահյուսություն: Նկարագրություն:
ՕՍTՏ ԾՃ, աղբյուր Իրականացնել ՕՍTՏ8/ՕՍTՏW/ՕՍTՏD(386-)՝ կախված աղբյուրի տիպից
Շարահյուսություն: Նկարագրություն:
ՕՍTՏB / ՕՍTՏW / ՕՍTՏԾ (386-)
DՃ-ով որոշվող կայան
8ՄTԷ / WՕRD /DWՕRD PTR DՏ:ԷՏ1/Տ1
ԷՏ1/Տ1 ԷՏ1/Տ1 - 1 / 2 / 4, եթե DF - 0 ԷՏ1/Տ1 ԷՏ1/Տ1 – 1 / 2 / 4, եթե DF - 1
Դրոշներ:
ՃF ՇF ՕF PF ՏF 7F
Աղբյուրը հիշողության հասցե (ո6ո8/ո6ո16/ո6ո32) է: Այս հրամանով աղբյուրի տողից միավորի չափով բայթի արժեքը գրվում է DՃ ռեգիստրի արժեքով որոշվող կայանում, և ինդեքսային ԷՏ1/Տ1 ռեգիստրի արժեքը նվազեցվում (DF - 1 դեպքում) կամ ավելացվում (DF - 0 դեպքում) է միավորի չափով: Հրամանը կարող է ունենալ կրկնման RԷP նախդիր, որի դեպքում հրամանը կրկնվում է ՇՃ/ԷՇՃ ռեգիստրի արժեքի չափով՝ հաջորդաբար աղբյուրի տողից միավորները պատճենելով DՃ ռեգիստրի արժեքով որոշվող կայանում:
Խնդիրների լուծման օրինակներ 1. Տրված տողում յուրաքանչյուր ‘8’ սիմվոլ փոխարինել ‘Ճ’ սիմվոլով։ Արտածել ստացված տողն էկրանին:
.ԽՕDԷԼ ՏԽՃԼԼ
.ՏTՃՇՃ 100հ
.DՃTՃ ՏTR1NՕ1 D8
ՏTR1NՕ1_ԼԷN
ԷՕՍ .ՇՕDԷ ԽՃ1N: ԽՕՕ ԽՕՕ ԽՕՕ ԼԷՃ ՇԼD ԽՕՕ DԷՇ Լ1: ԽՕՕ RԷPNԷ ՏՇՃՏ8 JN7 DԷՇ ԽՕՕ ՏTՕՏ8 1NՇ ԼՕՕP Լ2: ԼԷՃ ԽՕՕ 1NT ԽՕՕ 1NT ԷND ԽՃ1N
‘Ճ8ՇDԷFՕէ1J88Ճ8’, ’$’ $ - ՏTR1NՕ1
ՃՃ , (DՃTՃ
DՏ, ՃՃ ԷՏ, ՃՃ
D1, ՏTR1NՕ1
ՇՃ, ՏTR1NՕ1_ԼԷN
ՇՃ ՃԼ, ‘8’ Լ2 D1 ՃԼ, ‘Ճ’ ՇՃ Լ1
DՃ, ՏTR1NՕ1
Ճէ, 9 21է ՃՃ, 4Շ00է 21է
2. Գրել ծրագրի հատված, որը ՃՏՇ117 Տէr1ոջ (այսինքն՝ տող, որն ավարտվում է 0 բայթով) տողից կհեռացնի վերջի բացատանիշերը։ .DՃTՃ TNՃԽԷ D8 ‘DէՃէRՃN ’ , 0 ԼԷNՕTէ
ԷՕՍ $ - TNՃԽԷ
ԽՕՕ
ՃՃ, (DՃTՃ
ԽՕՕ DՏ, ՃՃ ԽՕՕ ԷՏ, ՃՃ ՏTD ԼԷՃ
D1, TNՃԽԷ - (ԼԷNՕTէ - 2)
ԽՕՕ
ՇՃ, ԼԷNՕTէ - 1
ԽՕՕ ՃԼ , ‘ ‘ RԷPԷ ՏՇՃՏ8 JԷ Լ2 ԽՕՕ 8ՄTԷ PTR |D1 - 2| , 0 JԽP ԷՃ1T Լ2: . . . 3. Գրել ծրագիր, որը տրված տողի մեջ փնտրի տրված ենթատողը։ Եթե ենթատողը գտնվել է, արտածել ‘ԽՃTՇէ’ հաղորդագրությունը, հակառակ դեպքում՝ ‘Nօ ԽՃTՇէ’ հաղորդագրությունը։
.ԽՕDԷԼ ՏԽՃԼԼ
.ՏTՃՇՃ 100հ
.DՃTՃ Տ6ո_ոa2 D8 Տ6ո_r6a1 D8 Տ6ոէ6ոօ6 D8 127 մսք (2) Ճ67_ոa2 D8 Ճ67_r6a1 D8 Ճ67wօrմ D8 20 DՍP(2) ոՏջ1 D8 0մհ, 0aհ, “Էոէ6r k67wօrմ: $” ոՏջ2 D8 0մհ, 0aհ, “Էոէ6r Տէr1ոջ: $”
ոՏջ3 ոՏջ4 .ՇՕDԷ ոa1ո: ԽՕՕ ԽՕՕ ԽՕՕ :ներածել ենթատողը ԽՕՕ ԽՕՕ 1NT ԽՕՕ ԽՕՕ 1NT : ներածել տողը N6w_Տ6ոէ: ԽՕՕ ԽՕՕ 1NT
D8 D8
0մհ, 0aհ, “NՕ ԽՃTՇէ.$” 0մհ, 0Ճհ, “ԽՃTՇէ.$”
ՃՃ, (DՃTՃ
DՏ, ՃՃ ԷՏ, ՃՃ DՃ, օffՏ6է ոՏջ1 Ճէ, 9 21է DՃ, օffՏ6է k67_ոa2 Ճէ, 10 21է
DՃ, օffՏ6է ոՏջ2 Ճէ, 9 21է
ԽՕՕ DՃ, օffՏ6է Տ6ո_ոa2 ԽՕՕ Ճէ, 10 1NT 21է : փնտրում է տողի մեջ ենթատողը : Տ1 -ում ենթատողի հասցեն է : D1- ում տողի հասցեն է : 8Ճ – ում տողի մեջ ընթացիկ դիրքը : DՃ-ում տողի մեջ սիմվոլների քանակը ՇԼD ԽՕՕ ՃԼ, Տ6ո_r6a1 ՏՍ8 ՃԼ, k67_r6a1 JԼ ոօ_ոaէօհ
Շ8W ԽՕՕ DՃ, ՃՃ Շ DՃ : 8Ճ- ը տողի առաջին սիմվոլն է ցույց տալիս ԽՕՕ 8Ճ, օffՏ6է Տ6ոէ6ոօ6 Շօոքar6: ԽՕՕ D1, 8Ճ ԽՕՕ Տ1, օffՏ6է k67wօrմ ԽՕՕ ՃԼ, k67_r6a1 Շ8W ԽՕՕ ՇՃ, ՃՃ RԷPԷ ՇԽPՏ8 : համեմատել սիմվոլները, : կրկնել մինչև ՇՃ - 0 կամ : հավասարության խախտվելը J7 ոaէօհ 1NՇ 8Ճ DԷՇ DՃ J7 ոօ_ոaէօհ JԽP օօոքar6 Խaէօհ: ԽՕՕ DՃ, օffՏ6է ոՏջ4 ԽՕՕ Ճէ, 9 1NT 21է JԽP f1ո1Տհ Nօ_ոaէօհ: ԽՕՕ DՃ, օffՏ6է ոՏջ3 ԽՕՕ Ճէ, 9 1NT 21է F1ո1Տհ: ԽՕՕ ՃՃ, 4օ00է 1NT 21է ԷND ոa1ո
Խնդիրներ և վարժություններ 1. Որոշել Ճ փոփոխականի արժեքը հետևյալ հրամանների կատարումից հետո. .DՃTՃ Ճ D8 ‘123456789 $’ .ՇՕDԷ
ԽՕՕ ՃՃ, (DՃTՃ
ԽՕՕ DՏ, ՃՃ
ԽՕՕ ԷՏ, ՃՃ
ԽՕՕ ՇՃ, 4
ԼԷՃ Տ1, Ճ - 2 ԼԷՃ D1, ԷՏ:Ճ - 4 ՇԼD RԷP ԽՕՕՏ8 2. Որոշել Ճ և 8 տողերի և ՃԼ ռեգիստրի արժեքները հետևյալ հրամանների կատարումից հետո.
ա) .DՃTՃ
8 D8 Շ D8
'Fջմ74' 5 մսք(2)
.ՇՕDԷ
բ) .DՃTՃ
D8 Ճ D8
'Եa76օ' 'Եa4f6'
.ՇՕDԷ
PՍՏէ DՏ PՕP ԷՏ ՇԼD ԼԷՃ D1, Շ ԼԷՃ Տ1, 8
ԽՕՕ ՇՃ, 5
RԷP ԽՕՕՏ8
ԼԷՃ D1, Շ
ԽՕՕ ՃԼ, 'Ճ'
ՏTՕՏ8
PՍՏէ PՕP ՇԼD ԼԷՃ ԼԷՃ ԽՕՕ
RԷPԷ ՇԽPՏ8
ԼՕDՏ8
DՏ ԷՏ D1, 8 Տ1, Ճ ՇՃ, 5
գ) .DՃTՃ
Ճ D8 D8 Շ
3. 4.
5.
6.
7.
8.
'685a5' 5 մսք('0')
դ) .DՃTՃ
Ճ D8 8 D8
'Եa76օ' 'Եa4f6'
.ՇՕDԷ .ՇՕDԷ PՍՏէ DՏ PՍՏէ DՏ PՕP ԷՏ PՕP ԷՏ ՇԼD ՇԼD ԼԷՃ D1, Ճ ԼԷՃ D1, Շ ԽՕՕ ՃԼ, '5' ԼԷՃ Տ1, Ճ ԽՕՕ ՇՃ, 5 ԼՕDՏ8
RԷPNԷ ՏՇՃՏ8
ԽՕՕ ՇՃ, 5
ԼԷՃ Տ1, Շ
RԷP ՏTՕՏ8
ԽՕՕՏ8 Ներածել 2 սիմվոլային տող: Ստանալ և արտածել նրանց «միակցում» տողը: Ներածել 2 սիմվոլային տող: Արտածել տողերի առաջին համընկող զույգը: Համընկնող զույգ չլինելու դեպքում արտածել հաղորդագրություն: Ներածել 2 սիմվոլային տող: Արտածել տողերի չհամընկնող զույգերը: Չհամընկնող զույգ չլինելու դեպքում արտածել հաղորդագրություն: Ներածել սիմվոլային տող (առավելագույնը 20 սիմվոլ): Արտածել տողում ‘Ճ’ սիմվոլի հանդիպումների քանակը: Տողում ‘Ճ’ սիմվոլ չլինելու դեպքում արտածել հաղորդագրություն: Ներածել փոքրատառերից բաղկացած սիմվոլային տող: Ստանալ և արտածել համապատասխան մեծատառերից բաղկացած տողը: Ներածել սիմվոլային տող: Գտնել վերջին ‘Շ’ սիմվոլը և տողի մնացած մասը լցնել ‘"’ սիմվոլներով: Արտածել ստացված տողը: Տողում ‘Շ’ սիմվոլ չլինելու դեպքում արտածել հաղորդագրություն:
9.
10.
11.
12.
13.
14.
Ներածել սիմվոլային տող: Ստանալ ենթատող միայն տառերից և արտածել այն: Տողում տառ չլինելու դեպքում արտածել հաղորդագրություն: Հիշողության Շ հասցեում սահմանված է 75 սիմվոլներից կազմված տող: Եթե այն կարգավորված է աճման կարգով, ապա ստանալ և արտածել տողի վերջին սիմվոլի քառակի կրկնումով ստացվող տողը, հակառակ դեպքում՝ ստանալ և արտածել տողի առաջին սիմվոլի քառակի կրկնումով ստացվող տողը: Հիշողության Ճ և 8 հասցեներում սահմանված են 50 սիմվոլներից կազմված 2 տողեր: Դրանցում որոնել ‘7’ սիմվոլը (ենթադրվում է, որ այն 2 տողերում էլ կա) և դրան հաջորդող սիմվոլներից սկսած՝ համեմատել տողերը: ՃԼ ռեգիստրում գրանցել 1, եթե դրանք հավասար են, 0՝ հակառակ դեպքում: Ստեղնաշարից մուտքագրել 20 սիմվոլներից կազմված 2 տողեր և դրանք համեմատել: Եթե հավասար են, ապա ստանալ և արտածել ‘ՃՃՃՃՃՄՄՄՄՄ’ տողը: Հակառակ դեպքում՝ ստանալ և արտածել 2 տողերի առաջին չհամընկնող սիմվոլների հնգակի կրկնումով ստացվող տողը: Ստեղնաշարից մուտքագրել 25 սիմվոլներից կազմված տող: Դրանում որոնել ’Ճ’ սիմվոլը: Եթե այն առկա է, ապա ստանալ և արտածել ՛ """ՃՃՃ""" ՛ տողը: Հակառակ դեպքում արտածել ‘Tհ6r6 1Տո’է Տ7ոԵօ1 Ճ’ հաղորդագրությունը: Տրված է. Ճ D8 25 DՍP(16 DՍP(2)): Դիտարկելով Ճ-ն որպես 16-սիմվոլանոց 25 բառերից կազմված զանգված՝ լուծել հետևյալ խնդիրները. ա) Հաշվել զանգվածի սիմետրիկ տողերի քանակը և գրանցել այն ՃԼ ռեգիստրում: բ) Հաշվել սիմվոլների նվազման կարգով դասավորված տողերի քանակը: գ) Որոշել՝ զանգվածում կան արդյոք գոնե երկու միանման տողեր:
Դրոշների մշակման հրամաններ Դրոշների հետ աշխատող հրամաններն առանց օպերանդի հրամաններ են, որոնք աշխատում են դրոշների ռեգիստրի կամ նրա որոշակի դրոշների հետ: ՏTՇ, ՇԼՇ, ՇԽՇ, ՇԼD, ՏTD, ՏT1 և ՇԼ1 հրամանների դեպքում փոխվում է միայն հրամանի մեջ օգտագործվող դրոշը, մյուս դրոշների արժեքները չեն փոխվում: ՇԼD և ՏTD հրամանները կիրառվում են տողերի հետ աշխատելիս և որոշում են ինդեքսների աճելը (ՇԼD) կամ նվազելը (ՏTD): ՇԼ1 և ՏT1 հրամաններն իրական ռեժիմում աշխատում են 1F դրոշի հետ: ՇԼ1 հրամանի արդյունքում պրոցեսորը անտեսում է դիմակավորվող արտաքին ընդհատումները: ՏT1-ն անում է ՇԼ1-ի հակառակ գործողությունը` պրոցեսորը կարող է ընդունել արտաքին սարքերից ընդհատումները: ՏTԸ – ԸF դրոշի 1-ով արժեքավորում /Տ6է Ըaոոy F1aջ Շարահյուսություն: Նկարագրություն:
ՏTԸ ՇF 1
ԸԼԸ – ԸF դրոշի 0-ով արժեքավորում /Ը16aո Ըaոոy 11aջ Շարահյուսություն: Նկարագրություն:
ԸԼԸ ՇF 0
ԸMԸ – ԸF դրոշի հակադարձում /Ըօոք16ո6ոէ Ըaոոy F1aջ Շարահյուսություն: Նկարագրություն:
ԸMԸ
ՇF NՕT(ՇF)
ԸԼԾ – ԾF դրոշի 0-ով արժեքավորում /Ը16aո Ծiո6Շէiօո F1aջ Շարահյուսություն: Նկարագրություն:
ԸԼԾ DF 0
ՏTԾ – ԾF դրոշի 1-ով արժեքավորում /Տ6է Ծiո6Շէiօո F1aջ Շարահյուսություն: Նկարագրություն:
ՏTԾ DF 1
ՏT1 – 1F դրոշի 1-ով արժեքավորում /Տ6է 1ոէ6ոոսքէ F1aջ Շարահյուսություն: Նկարագրություն:
ՏT1 1F 1
ԸԼ1 – 1F դրոշի 0-ով արժեքավորում /Ը16aո 1ոէ6ոոսքէ F1aջ Շարահյուսություն: Նկարագրություն:
ԸԼ1 1F 0
ԼՃHF – ՃH ռեգիստրի բեռնում վիճակի դրոշներով /Լօaմ Տէaէս5 F1aջ5 iոէօ ՃH R6ջi5է6ո Շարահյուսություն: Նկարագրություն: Դրոշներ:
ԼՃHF Ճէ FԼՃՕՏ –ի կրտսեր բայթը
Բեռնում է Ճէ ռեգիստրը FԼՃՕՏ դրոշների ռեգիստրի կրտսեր բայթի արժեքով: Այսպիսով՝ Ճէ ռեգիստրի 1 բիթը ստանում է 1 արժեք, 3 և 5 բիթերը՝ 0 արժեք, իսկ մյուս բիթերը՝ ՇF (0 բիթ), PF (2 բիթ), ՃF (4 բիթ), 7F (6 բիթ) և ՏF (7 բիթ) դրոշների արժեքները: ՏՃHF – Վիճակի ռեգիստրների բեռնում ՃH ռեգիստրից /Տէօո6 ՃH iոէօ F1aջ5 Շարահյուսություն: Նկարագրություն: Դրոշներ:
ՏՃHF ՃF, ՇF, PF, ՏF, 7F Ճէ ՃF ՇF PF ՏF 7F
Բեռնում է FԼՃՕՏ/ ԷFԼՃՕՏ դրոշների ռեգիստրի կրտսեր բայթի ՇF, PF, ՃF, 7F և ՏF դրոշները Ճէ ռեգիստրի 0, 2, 4, 6 և 7 բիթերի արժեքներով համապատասխանաբար: FԼՃՕՏ/ԷFԼՃՕՏ դրոշների ռեգիստրի 1, 3 և 5 բիթերի արժեքները չեն փոխվում: PՍՏHF/PՍՏHFԾ – Դրոշների EFԼՃՇՏ ռեգիստրի արժեքը ուղարկել պահունակ /Pս5հ EFԼՃՇՏ R6ջi5է6ո օոէօ էհ6 ՏէaՇk Շարահյուսություն: Նկարագրություն: Դրոշներ:
PՍՏHF / PՍՏHFԾ
ՏTՃՇՃ FԼՃՕՏ/ԷFԼՃՕՏ
Պահունակի մեջ է գրում FԼՃՕՏ (PՍՏէF-ի դեպքում) կամ ԷFԼՃՕՏ (PՍՏէFD-ի դեպքում) դրոշների ռեգիստրի պարունակությունը:
PՕPF/PՕPFԾ – Դրոշների EFԼՃՇՏ ռեգիստրի արժեքը հանել պահունակից /Pօք ՏէaՇk iոէօ EFԼՃՇՏ R6ջi5է6ո Շարահյուսություն: Նկարագրություն: Դրոշներ:
PՕPF / PՕPFԾ
FԼՃՕՏ/ԷFԼՃՕՏ ՏTՃՇՃ
բոլոր դրոշները
PՕPF հրամանը կարդում է պահունակից 2 բայթ և գրում ԷFԼՃՕՏ-ի կրտսեր 2 բայթի՝ FԼՃՕՏ ռեգիստրի մեջ, իսկ PՕPFD հրամանը կարդում է պահունակից 4 բայթ և գրում ԷFԼՃՕՏ ռեգիստրի մեջ:
Այլ հրամաններ NՕP – Դատարկ հրաման/Nօ Օք6ոaէiօո Շարահյուսություն: Նկարագրություն: Դրոշներ:
NՕP --|Է|1P
ԼՕԸK – Կապուղու փակում/ Ճ556ոէ ԼօՇk Շարահյուսություն: Նկարագրություն: Դրոշներ:
ԼՕԸK
Այս նախդիրն օգտագործվում է տվյալ հրամանի կատարման ժամանակ կապուղին այլ նպատակների չծառայեցնելու համար: Նախդիրը կարելի է օգտագործել հետևյալ հրամաններից առաջ և այն դեպքում, երբ ընդունիչ օպերանդը հիշողություն է՝ ՃDD, ՃDՇ, 1NՇ, ՏՍ8, Տ88, DԷՇ, NԷՕ, ՃND, ՕR, ՃՕR, NՕT, 8TՇ, 8TR, 8TՏ, ՃՇէՕ: Եթե ԼՕՇՃ նախդիրն օգտագործվել է նշված հրամաններից որևէ մեկի համար, և աղբյուր օպերանդը հիշողություն է, ապա հրամանի կատարման ժամանակ հնարավոր է գեներացվի «անորոշ գործողության կոդ» (#ՍD) բացառությունը: Այլ հրամաններից առաջ ԼՕՇՃ նախդիրն օգտագործելու դեպքում գեներացվում է «անորոշ գործողության կոդ» (#ՍD) բացառությունը:
ՀՐԱՄԱՆԱԳՐԵՐ
Հրամանագրերն (մ1r6օէ1v6) ասեմբլեր ծրագրի այն նախադասություններն են, որոնք չեն թարգմանվում մեքենայական հրամանի։ Դրանք ղեկավարում են ոչ թե միկրոպրոցեսորի, այլ ասեմբլեր թարգմանչի կամ կապերի խմբագրիչի (компоновщик, 11ոk6r) կամ բեռնիչի աշխատանքը։ Հրամանագրերը, օրինակ, կարող են օգտագործվել` ասեմբլեր թարգմանչին հաղորդելու համար, թե ինչպիսի հաստատուններ և փոփոխականներ են օգտագործվում ծրագրում, թե որոնք են տվյալների սեգմենտներ և այլն։ Հրամանագրերը նաև հնարավորություն են տալիս ղեկավարելու լիսթինգի ձևավորման գործընթացը։ Հրամանագրերին անվանում են նաև կեղծ հրամաններ (պսևդոհրամաններ)։ Հրամանագրի շարահյուսությունը հետևյալն է. Լանուն| Հհրամանագրի_անվանում> ԼՀօպարանդԼներ>| Լ; մեկնաբանություն|
Ինչպես տեսնում ենք, հրամանագրի կառուցվածքը հիմնականում համընկնում է ասեմբլերի հրամանի հետ։ Միակ տարբերությունը այն է, որ անունից հետո ‘:’ չի օգտագործվում։ ՀՀրամանագրի_անվանում»-ը, ինչպես և հրամանի հուշանունը, բանալի բառեր են։ Հրամանագրերն ունեն տարբեր շարահյուսություն՝ կախված օգտագործված ռեժիմից (ԽՃՏԽ թե 1DԷՃԼ)։ Ե՛վ Խ1օrօՏօfէ ՃՏՏ6ոԵ16r (ոaՏո.626), և՛ 8օr1aոմ (TսrԵօ) ՃՏՏ6ոԵ16r (էaՏո.626) կոմպիլյատորներն ունեն ԽՃՏԽ ռեժիմ, իսկ 1DԷՃԼ ռեժիմ ունի միայն էaՏո կոմպիլյատորը։ Հրամանագրերի օգտագործումը կախված է ասեմբլեր-թարգմանչի ընտրությունից, ինչպես նաև թարգմանչի տարբերակից։ Կդիտարկենք առավել հաճախ օգտագործվող հրամանագրերը, որոնց կարելի է օգտագործել և՛ էaՏո, և՛ ոaՏո թարգմանիչների համար։
Անունների սահմանման հրամանագրեր EՕՍ հրամանագիր Շարահյուսություն: ՀԱնուն» EՕՍ Հօպերանդ»
EՕՍ հրամանագիրն օգտագործվում է հաստատուն սահմանելու նպատակով։ Այս հրամանագիրն անվանը վերագրում է արժեք, որը որոշվում է աջակողմյան օպերանդով։ Օպերանդը կարող է լինել կա՛մ հաստատուն, կա՛մ հաստատուն արտահայտություն, կա՛մ ցանկացած տեքստ, կա՛մ անուն։ Օրինակ 1 օպերանդը հաստատուն է կամ հաստատուն արտահայտություն: N ԷՕՍ 100 Ճ ԷՕՍ 2 " N - 1 : Ճ - 201 Օրինակ 2 օպերանդը տեքստ է: T
ԷՕՍ |Տ1||8Ճ - 20| : այս եղանակն օգտագործվում է հա: ճախ հանդիպող երկար տողին կարճ : նշանակում տալու նպատակով
WP ԷՕՍ WՕRD PTR
1NՇ WP |8Ճ|
: համարժեք է 1NՇ WՕRD PTR |8Ճ|
ԽՏջ ԷՕՍ “էԷԼԼՕ Wօr1մ$”
: ԽՏջ - “էԷԼԼՕ Wօr1մ$”
Օրինակ 3 օպերանդն անուն է: Ճ Շ
D8 ԷՕՍ DW
Ճ
: համարժեք է Շ DW Ճ
ԷՕՍ հրամանագիրը կրում է տեղեկատվական բնույթ, և այն չի ազդում մեքենայական կոդի վրա։ Այդ պատճառով այն կարող է տեղադրվել ասեմբլեր ծրագրի ցանկացած տեղում։ - հրամանագիր Շարահյուսություն: Անուն- Հհաստատուննամբողջնարտահայտություն»
Այս հրամանագիրը նման է ԷՕՍ հրամանագրին, սակայն, ի տարբերություն ԷՕՍ հրամանագրի, անվան արժեքը հետագայում կարող է փոխվել։ Օրինակ Ճ - 10 Ճ DW Ճ Ճ-Ճ-4 8 D8 Ճ
: համարժեք է ‘Ճ DW 10’ : համարժեք է ‘8 DW 14’
ԼՃBEԼ հրամանագիր Շարահյուսություն: ՀԱնուն» ԼՃBEԼ Հտիպ»
Որտեղ Հտիպ»-ը կարող է ընդունել 8ՄTԷ, WՕRD, DWՕRD, FWՕRD, ՕWՕRD, T8ՄTԷ, NԷՃR, FՃR արժեքները։ Այս հրամանագիրը հնարավորություն է տալիս սահմանելու կամ վերասահմանելու փոփոխականի կամ նշիչի հետ կապված տիպը։ Օրինակ 1 ՃRRՃՄ1 ԼՃ8ԷԼ WՕRD ՃRRՃՄ2 D8 100 DՍP(0) Այստեղ ՃRRՃՄ1-ը սահմանված է որպես 50-բառային զանգված, իսկ ՃRRՃՄ2-ը` որպես 100-բայթանի զանգված. երկու զանգվածներն ունեն հիշողության միևնույն տիրույթը։ Այսպիսով` հիշողության միևնույն տիրույթը կարող է դիտարկվել և՛ որպես բայթային (ՃRRՃՄ1), և՛ որպես բառային (ՃRRՃՄ2) զանգված:
Օրինակ 2 ՕՃR3 ԼՃ8ԷԼ DWՕRD WՕRD1 ԼՃ8ԷԼ WՕRD 8ՄTԷ1 D8 8ՄTԷ2 D8 WՕRD2 ԼՃ8ԷԼ WՕRD 8ՄTԷ3 D8 50է 8ՄTԷ4 D8 66է Այս օրինակում կարելի է կատարել դիմում ՕՃR3 կրկնակի բառի յուրաքանչյուր բառի կամ բայթի:
Սեգմենտի հրամանագիր Սեգմենտի սահմանումն ունի հետևյալ տեսքը. ՀՍեգմենտինանուն» ՏEՇMENT |հավասարեցում| |միավորում| |բիթայնություն| |դաս| Հնախադասություններ» ՀՍեգմենտինանուն» ENԾՏ
Դիտարկենք ՏԷՕԽԷNT հրամանագրի տրման դաշտերի նշանակությունը. |հավասարեցում| (a11ջո) սեգմենտի հավասարեցման դաշտն է, որը հաղորդում է կապերի խմբագրին (11ոk6r) սեգմենտի սկզբի հասցեի տեղադրության մասին։ Ընդունում է հետևյալ հնարավոր արժեքները. BYTE հավասարեցում չի կատարվում։ Սեգմենտը կարող է սկսվել հիշողության կամայական հասցեից, WՕRԾ սեգմենտը սկսվում է 2-ին պատիկ հասցեից (այսինքն՝ հավասարեցումը կատարվում է բառի սահմանից), ԾWՕRԾ սեգմենտը սկսվում է 4-ին պատիկ հասցեից (այսինքն՝ հավասարեցումը կատարվում է կրկնակի բառի սահմանից),
PՃRՃ սեգմենտը սկսվում է 16-ին պատիկ հասցեից, PՃՇE սեգմենտը սկսվում է 256-ին պատիկ հասցեից, MEMPՃՇE սեգմենտը սկսվում է 4ԿԲ-ին պատիկ հասցեից (այսինքն՝ 16-ական ներկայացման վերջին 3 թվանշանները 0 են)։ Լռությամբ հավասարեցման տիպը PՃRՃ է։ |Միավորում| (Շօոեiո6) Միավորման դաշտն է, որը հաղորդում է կապերի խմբագրիչին, թե ինչպես պետք է միավորել նույն անուն ունեցող տարբեր մոդուլների սեգմենտները։ Միավորման դաշտն ընդունում է հետևյալ հնարավոր արժեքները. PR1ՕՃTE սեգմենտը չի միավորվում այլ մոդուլում գտնվող նույն անունով այլ սեգմենտների հետ, PՍBԼ1Ը ստիպում է կապերի խմբագրիչին միավորել նույն անունով բոլոր սեգմենտները։ Նոր միավորված սեգմենտը ստացվում է անընդհատ։ Օբյեկտների բոլոր հասցեները (շեղումները) հաշվարկվում են նոր սեգմենտի սկզբից, ԸՕMMՕN նույն անունով բոլոր սեգմենտները տեղադրում է միևնույն հասցեից։ Այսինքն՝ տվյալ անունով սեգմենտները համատեղ են օգտագործում հիշողության միևնույն տիրույթը։ Արդյունքում միավորված սեգմենտն ունենում է ամենամեծ սեգմենտի չափը, ՃT 2222 սեգմենտը տեղադրվում է պարագրաֆի՝ 2"16 բացարձակ հասցեով (պարագրաֆը 16-ին պատիկ հիշողության տիրույթ է), ՏTՃԸK որոշում է պահունակ սեգմենտ։ Նման է PՍ8Լ1Շին՝ բացառությամբ նրա, որ ՏՏ ռեգիստրը դառնում է պահունակ սեգմենտի սեգմենտային ռեգիստրը։ ՏP ռեգիստրը ցույց է տալիս միավորված սեգմենտի վերջի վրա։ Եթե ոչ մի պահունակ սեգմենտ սահմանված չէ, կապերի խմբագիրը նախազգուշացնում է, որ պահունակ սեգմենտը չի գտնվել։ Լռությամբ միավորման դաշտն ունի PR1ՕՃTԷ արժեք:
|Բիթայնություն| Սեգմենտի բիթայնության դաշտը 386- պրոցեսորների համար կարող է լինել 16 կամ 32-բիթանոց։ Կարող է ընդունել հետևյալ արժեքները. ՍՏE16 նշանակում է սեգմենտի հասցեավորման եղանակը 16-բիթանի է։ Ֆիզիկական հասցեի ձևավորման ժամանակ կարող է օգտագործվել միայն 16-բիթանոց շեղում։ ՍՏE32 սեգմենտը 32-բիթանի է։ Ֆիզիկական հասցեի ձևավորման համար օգտագործվում է 32-բիթանոց շեղում։ Այդ պատճառով սեգմենտը կարող է պարունակել 4ԳԲ կոդ կամ տվյալներ։ |Դաս| - դասը չակերտների մեջ պարփակված սիմվոլների հաջորդականություն է։ Այս դաշտն օգնում է կապերի խմբագրիչին որոշել սեգմենտների տեղադրման կարգը տարբեր մոդուլների սեգմենտները դասավորելիս։ Կապերի խմբագրիչը միավորում է հիշողության մեջ նույն դասի բոլոր սեգմենտները։ Դասի անունը կարող է լինել կամայական, սակայն լավ է, եթե այն արտացոլում է սեգմենտի նշանակությունը։ Սովորաբար կոդ սեգմենտի համար օգտագործվում է 'օօմ6' անվանումը: ENԾՏ հրամանագրով նշվում է սեգմենտի վերջը։ ՏEՇMENT և ENԾՏ հրամանագրերը պետք է ունենան նույն Հսեգմենտի_անուն»-ը։
ՇRՕՍP հրամանագիր Շարահյուսություն: անուն ՕRՕՍP սեգմենտ |, սեգմենտ|...
Այս հրամանագիրը կարող է օգտագործվել սեգմենտները խըմբավորելու համար։ Խմբերը հնարավորություն են տալիս խմբի բոլոր սեգմենտներին դիմելու համար օգտագործել մեկ անվանում։
ՃՏՏՍME հրամանագիր Շարահյուսություն:
ՃՏՏՍME սեգմենտային_ռեգիստր:արժեք,… Կամ
ՃՏՏՍME NՕTէ1NՕ
որտեղ սեգմենտային ռեգիստրը ՇՏ, DՏ, ԷՏ, ՏՏ, FՏ, ՕՏ ռեգիստրներից մեկն է, իսկ արժեքը կարող է լինել սեգմենտի անուն, խմբի անուն, ՏԷՕ արտահայտություն կամ NՕTէ1NՕ։ Նշված հրամանագիրը կապում է սեգմենտային ռեգիստրը սեգմենտի, խմբի, կոնկրետ արտահայտության հետ կամ չեղարկում է տվյալ սեգմենտային ռեգիստրի արժեքը։ ‘ՃՏՏՍԽԷ NՕTէ1NՕ’ օգտագործելու դեպքում չեղարկվում է սեգմենտային ռեգիստրների և սեգմենտի միջև հայտարարված կապը։ Եթե օգտագործվել են սեգմենտի նկարագրության պարզեցված հրամանագրեր, ասեմբլերը լռությամբ նշանակում է ՃՏՏՍԽԷ հրամանագիր, և հետագայում ՃՏՏՍԽԷ չօգտագործելու դեպքում այդ արժեքները չեն փոխվում։
Հիշողության մոդելի և սեգմենտի սահմանման պարզեցված հրամանագրեր Պարզ ծրագրերի համար, որոնք կազմված են միայն կոդ, տվյալների և պահունակ սեգմենտներից, հարմար է օգտագործել սեգմենտների նկարագրության պարզեցված հրամանագրերը (.DՃTՃ, .ՇՕDԷ, .ՏTՃՇՃ)։ Այս դեպքում ծրագրավորողը պարտադրված չէ նշելու սեգմենտի ատրիբուտները։ Ծրագրի վերջը նշելու համար հրամանագիր չի օգտագործվում։ Սեգմենտն ավարտվում է, երբ սկսվում է այլ սեգմենտի սահմանում։ Սեգմենտի նկարագրության պարզեցված հրամանագրեր օգտագործելու համար նախ անհրաժեշտ է սահմանել հիշողության մոդելը .ԽՕDԷԼ հրամանա185
գրի միջոցով։ Այս հրամանագիրը ղեկավարում է սեգմենտների տեղաբաշխումը և իրականացնում ՃՏՏՍԽԷ հրամանագրի ֆունկցիոնալությունը։ Շարահյուսություն: ՀհիշողությանՄոդել» |,Հմոդիֆիկատոր»|
.MՕԾEԼ
|կոդ-սեգմենտի-անուն|
|,Հլեզու»|
ՀՀիշողության Մոդել» պարամետրը պարտադիր է: Այդ պարամետրի միջոցով է որոշվում ծրագրի սեգմենտների մոդելը: Մոդել
Կոդի տիպ
Տվյալների տիպ
T1NՄ
NԷՃR
NԷՃR
ՏԽՃԼԼ
NԷՃR
NԷՃR
ԽԷD1ՍԽ
FՃR
NԷՃR
ՇՕԽPՃՇT
NԷՃR
FՃR
ԼՃRՕԷ
FՃR
FՃR
FԼՃT
NԷՃR
NԷՃR
Մոդելի նշանակությունը Կոդը և տվյալները միավորված են մեկ խմբում, որի անունը DՕRՕՍP է: Օգտագործվում է ՇՕԽ ձևաչափի ծրագրեր ստեղծելու համար: Կոդը զբաղեցնում է մեկ սեգմենտ, տվյալները միավորված են մեկ խըմբում, որի անունը DՕRՕՍP է: Կոդը զբաղեցնում է մի քանի սեգմենտ: Ղեկավարումը փոխանցող բոլոր հղումները ունեն FՃR տիպ: Տվյալները միավորված են մեկ խըմբում: Տվյալների վրա բոլոր հղումները ունեն NԷՃR տիպ: Կոդը զբաղեցնում է մեկ սեգմենտ: Տվյալների վրա բոլոր հղումները ունեն FՃR տիպ: Ե՛վ կոդը, և՛ տվյալները զբաղեցնում են մի քանի սեգմենտ: Կոդը և տվյալները գտնվում են մեկ 32-բիթանոց սեգմենտում:
Աղյուսակ 1. Հիշողության մոդելի տեսակները
ՀԼեզու» պարամետրը թույլ է տալիս որոշ չափով դյուրացնել ասեմբլեր մոդուլն այլ ալգորիթմական լեզուներով գրված մոդուլների հետ միավորելուց առաջացող ինտերֆեյսային պրոբլեմները։ Այս պարամետրի անհրաժեշտությունը կապված է տարբեր բարձր մակարդակի լեզուներում պրոցեդուրայի կանչի ժամանակ պարամետրերի փոխանցման հերթականության և պահունակը պարամետրերից ազատելու կանոնների տարբերության հետ։ Այս պարամետրը կարող է ընդունել Շ, ՇPP, ՏTDՇՃԼԼ, 8ՃՏ1Շ, PՃՏՇՃԼ, FՕRTRՃN, PRՕԼՕՕ արժեքները։ Եթե այս պարամետրը նշված չէ, այն համարվում է NՕԼՃNՕՍՃՕԷ: Օրինակ .ԽՕDԷԼ .ԽՕDԷԼ
Լarջ6, Շ Տոa11, PaՏօa1
ՀՄոդիֆիկատոր»-ը կարող է ընդունել
NԷՃRՏTՃՇՃ,
FՃRՏTՃՇՃ, ՍՏԷ16, ՍՏԷ32, DՕՏ, ՕՏ2 արժեքներ։ Այս ոչ պարտադիր պարամետրը կարող է փոխել մոդելի որոշ հատկություններ, ընդ որում՝ կարելի է օգտագործել մի քանի մոդիֆիկատորներ միաժամանակ։ NԵ4RՏ144Խ ցույց է տալիս, որ պահունակ սեգմենտը կներառվի DՕRՕՍP խմբում (եթե DՕRՕՍP խումբը կա) և ՏՏ-ը ցույց կտա DՕRՕՍP-ը, F4RՏ144Խ պահունակ սեգմենտը չպետք է ներառվի DՕRՕՍP-ում, և ՏՏ-ը չի սկզբնարժեքավորվի, ՆՏԵ16 ցույց է տալիս (եթե ընտրվել է 80386- պրոցեսորը), որ ընթացիկ մոդելի բոլոր սեգմենտները 16-բիթանի են, ՆՏԵ32 ցույց է տալիս, որ ընթացիկ մոդելի բոլոր սեգմենտները 32բիթանի են, DOՏ, OՏ_DOՏ ցույց է տալիս, որ տվյալ ծրագիրը նախատեսված է DՕՏ օգտագործման համար, OՏ2, OՏ_OՏ2 ցույց է տալիս, որ տվյալ ծրագիրը նախատեսված է ՕՏ/2-ի օգտագործման համար:
Լռությամբ TՃՏԽ-ը օգտագործում է NԷՃRՏTՃՇՃ DՕՏ և ՍՏԷ16 (ՍՏԷ32, եթե ընտրվել է 80386- պրոցեսորը): Ոչ պարտադիր Հկոդ-սեգմենտի-անուն> պարամետրը կարող է օգտագործվել ԼՃRՕԷ մոդելում՝ լռությամբ նշանակված անվանումը փոխելու նպատակով։ Պարզեցված հրամանագրերով սեգմենտների սահմանման դեպքում ծրագիրը կարող է ունենալ միայն սահմանված տիպի սեգմենտներ։ Սեգմենտների սահմանման հրամանագրերը տրված են Աղյուսակ 2-ում: Հրամանագրի ձևաչափը .ՇՕDԷ |անուն| .DՃTՃ .ՇՕNՏT .DՃTՃ2
.ՏTՃՇՃ |չափ| .FՃRDՃTՃ |անուն|
.FՃRDՃTՃ2
|անուն|
Նշանակությունը Կոդ սեգմենտի սկիզբն է կամ շարունակությունը: Սկզբնարժեքավորված տվյալների սեգմենտի սկիզբն է կամ շարունակությունը: Օգտագործվում է նաև NԷՃR տիպի տվյալների համար: Ծրագրի հաստատունների սեգմենտի սկիզբն է կամ շարունակությունը: Չսկզբնարժեքավորված տվյալների սեգմենտի սկիզբն է կամ շարունակությունը: Օգտագործվում է նաև NԷՃR տիպի տվյալների համար: Ծրագրի պահունակ սեգմենտի սկիզբն է կամ շարունակությունը: |Չափ| պարամետրի միջոցով տրվում է պահունակի չափը: FՃR տիպի սկզբնարժեքավորված տվյալների սեգմենտի սկիզբն է կամ շարունակությունը: FՃR տիպի չսկզբնարժեքավորված տվյալների սեգմենտի սկիզբն է կամ շարունակությունը:
Աղյուսակ 2. Սեգմենտի հայտարարման պարզեցված հրամանագրեր
Որոշ սեգմենտների նկարագրությունը հնարավորություն է տալիս ունենալու մի քանի անվանական սեգմենտներ։
.ԽՕDԷԼ հրամանագիրն օգտագործելու դեպքում թարգմանիչը ստեղծում է մի քանի նախապես սահմանված անուններով հաստատուններ (օրինակ՝ (DՃTՃ – տվյալների սեգմենտի հասցեն):
Պրոցեսորի հրամանագրեր Լռությամբ ասեմբլեր թարգմանիչը օգտագործում է 8086 պրոցեսորի հրամանների համակարգը և տալիս է հաղոդագրություն սխալի մասին, եթե օգտագործվել է հրաման, որը այդ պրոցեսորը չի սատարում։ Այլ պրոցեսորներում ի հայտ եկած հրամանների օգտագործման թույլտվության համար առաջարկվում են ասեմբլերի հետևյալ հրամանագրերը. .8086- օգտագործվում է լռությամբ։ Թույլատրում է օգտագործել միայն 8086-ի հրամանները, .186- թույլատրվում են 80186-ի հրամանները, .286 և .286с- թույլատրվում են 80286-ի ոչ արտոնյալ հրամանները, .286р- թույլատրվում են 80286-ի բոլոր հրամանները, .386 և .386с- թույլատրվում են 80386-ի ոչ արտոնյալ հրամանները, .386р- թույլատրվում են 80386-ի բոլոր հրամանները, .486 և .486с- թույլատրվում են 80486-ի ոչ արտոնյալ հրամանները, .486р- թույլատրվում են 80486-ի բոլոր հրամանները, .586 և .586с- թույլատրվում են Ք5 (Քօոtiuւ) ոչ արտոնյալ հրամանները, .586р- թուլյատրվում են Ք5 (Քօոtiuւ)-ի բոլոր հրամանները, .686 – թույլատրվում են Ք6 (Քօոtiuւ Ք7o, Քօոtiuւ 11)-ի ոչ արտոնյալ հրամանները, .686р- թույլատրվում են Ք6 (Քօոtiuւ Ք7o, Քօոtiuւ 11)-ի բոլոր հրամանները, .8087 – թուլյատրվում են 8087 կից պրոցեսորի հրամանները, .11X – թույլատրվում են 14 MM հրամանները, .ն3D – թույլատրվում են 4MD 3D հրամանները:
Պայմանական թարգմանության հրամանագրեր Պայմանական թարգմանության հրամանագրերը թույլ են տալիս ղեկավարել ասեմբլեր թարգմանության գործընթացը։ Կախված պայմանից՝ ասեմբլերը կարող է ընտրել կամ բաց թողնել նախադասությունների մի ամբողջ բլոկ։ 1F222 հրամանագրի շարահյուսությունը 1F222 Trս6-բլոկի-մարմին
EMԾ1F կամ 1F222 Trս6-բլոկի-մարմին
EԼՏE Fa1Տ6-բլոկի-մարմին
ENԾ1F Որտեղ 1F222 կարող է լինել հետևյալ հրամանագրերից որևէ մեկը. 1F, 1FԾEF, 1FNԾEF, 1FB, 1FNB, 1F1ԾN, 1F1ԾN1, 1FԾ1F, 1FԾ1F1: 1F222-ում տրվում է կոնկրետ պայման։ Եթե պայմանը տեղի ունի, ապա թարգմանությանը մասնակցում է Trս6-բլոկի-մարմին-ը, հակառակ դեպքում` Fa1Տ6-բլոկի-մարմին-ը (ԷԼՏԷ-ով տարբերակի դեպքում։ Օրինակ ոսոԵ6r ԷՕՍ 253 1F ոսոԵ6r ԼԷ 65535 Տէrօka D8 32 DՍP(30հ) 6ոմՏէr D8 ԷND1F 1FNDԷF Տէrօka Տէrօka D8 16 DՍP(30հ) 6ոմՏէr D8 ԷND1F
Տվյալ օրինակում թարգմանության կենթարկվի հետևյալ հատվածը. Տէrօka D8 32 DՍP(30հ) 6ոմՏէr D8 222-ից կախված՝ պայմանները տրվում են տարբեր եղանակներով: Ստորև բերված են 1F222-ի տրման շարահյուսությունը և բացատրություն, թե երբ պայմանը տեղի ունի։ 1F հաստատուն-արտահայտություն պայմանը տեղի ունի, եթե արտահայտության արժեքը 0 չէ։ 1FԾEF անուն – պայմանը տեղի ունի, եթե անունը սահմանված է: 1FNԾEF անուն – պայմանը տեղի ունի, եթե անունը սահմանված չէ: 1FԾ1F արգումենտն1, արգումենտն2 – պայմանը տեղի ունի, եթե արգումենտ_1-ը և արգումենտ_2-ը տարբեր (մ1ff6r6ոէ) են: 1FԾ1F1 արգումենտն1, արգումենտն2 – պայմանը տեղի ունի, եթե արգումենտ_1-ը և արգումենտ_2-ը տարբեր են՝ առանց հաշվի առնելու մեծատառ-փոքրատառը (օրինակ՝ “1FD1F1 ՀԷՃՃ»,Հ6aՃ»” պայմանը տեղի ունի): 1F1ԾN արգումենտն1, արգումենտն2 պայմանը տեղի ունի, եթե արգումենտ_1-ը և արգումենտ_2-ը նույնն (1մ6ոէ1օa1) են: 1F1ԾN1 արգումենտն1, արգումենտն2 պայմանը տեղի ունի, եթե արգումենտ_1-ը և արգումենտ_2-ը նույնն են՝ առանց հաշվի առնելու մեծատառ-փոքրատառը: 1FB արգումենտ պայմանը տեղի ունի, եթե արգումենտը դատարկ է (Ե1aոk): 1FNB արգումենտ պայմանը տեղի ունի, եթե արգումենտը դատարկ չէ: Արգումենտները գրվում են Հ» նշանների մեջ: Արգումենտներով տրված հրահանգներն օգտագործվում են մակրոսահմանումներում փոխանցված պարամետրերի/ արգումենտների արժեքները վերահսկելու նպատակով:
Սխալի գեներացման հրամանագիր (.ERR) Այս հրամանագիրը հանդիպելիս ասեմբլերը սխալի մասին հաղորդագրություն է տալիս էկրանին և լիսթինգի ֆայլում ու կանխում է օբյեկտային կոդի ֆայլի ստեղծումը։ Շարահյուսություն:
.ԷRR |հաղորդագրություն|
Օրինակ Եթե ընթացիկ հաշվիչի արժեքը գերազանցում է 64ԿԲ-ը, ապա թարգմանությունը չի շարունակվի, և կտրվի հաղորդագրություն սխալի մասին։ 1F $ ՕT 65535 .ԷRR ԷND1F Կան նաև .ԷRR հրամանագրի պայմանով տարատեսակներ (.ԷRRDԷF, .ԷRR8 …)՝ 1F-ի բոլոր դեպքերի նման։
1NԸԼՍԾE հրամանագիր Շարահյուսություն: 1NԸԼՍԾE 1i16ոaո6
1NՇԼՍDԷ հրամանագրում նշված ֆայլի պարունակությունը զետեղվում է հրամանագրի տեղում։ Օրինակ 1NՇԼՍDԷ մ:\էaՏո\ոaօrօ.aՏո 1NՇԼՍDԷ Խ7Խaօrօ.aՏո
PՍBԼ1Ը, EՃTERN/EՃTRN հրամանագրեր Այս հրամանագրերն օգտագործվում են, երբ անհրաժեշտություն է լինում մի մոդուլում հայտարարված պրոցեդուրան, փոփոխականը կամ հաստատունը օգտագործելու այլ մոդուլում։ Մոդուլ ասելով՝ կհասկանանք առանձին թարգմանության ենթակա ծրագրի միավոր։ Այն անունները, որոնք պետք է օգտագործվեն այլ մոդուլներում, հայտարարվում են PՍ8Լ1Շ, իսկ անունները, որոնք օգտագործվել են տվյալ մոդուլում, բայց սահմանվել են այլ մոդուլում՝ հայտարարվում են որպես ԷՃTRN (62է6rոa1 – արտաքին)։ Շարահյուսություն: PՍBԼ1Ը |լեզու| անուն |, |լեզու| անուն|...
EՃTRN |լեզու| անուն:տիպ|,…|
ՔՆBՄ14-ը ցույց է տալիս, որ հայտարարված անունը կարող է օգտագործվել այլ մոդուլներում։ ԷՃTRN-ը ցույց է տալիս, որ անունը սահմանվել է այլ մոդուլում։
«Լեզու»-ն (Շ, PՃՏՇՃԼ, 8ՃՏ1Շ, FՕRTRՃN, ՃՏՏԷԽ8ԼԷR
կամ PRՕԼՕՕ) ցույց է տալիս, որ տվյալ անվան նկատմամբ պետք է կիրառվեն տվյալ լեզվի համաձայնեցումները։ «Տիպ»-ը կարող է ընդունել NԷՃR, FՃR, PRՕՇ, 8ՄTԷ, WՕRD,
DWՕRD, DՃTՃPTR, ՇՕDԷPTR, FWՕRD, PWՕRD, ՕWՕRD,
T8ՄTԷ, Ճ8Տ կամ կառուցվածքի անուն ( ՏTRՍՇ) արժեքները։ Օրինակ Ենթադրենք, ծրագիրը բաղկացած է երկու ֆայլերից։ Մի ֆայլը պարունակում է մի շարք փոփոխականներ, որոնք օգտագործվելու են երկրորդում, իսկ երկրորդը օգտագործում է այդ փոփոխականները՝ չիմանալով, թե որտեղ են դրանք սահմանված։ :Մոդուլ #1 ֆայլի անունը - f1.aՏո: էaՏո f1 .ԽՕDԷԼ ՏԽՃԼԼ PՍ8Լ1Շ Օar1, Օar2, Prօօ1 .DՃTՃ
Օar1 Օar2 .ՇՕDԷ PRՕՇ1
PRՕՇ1 ԷND
WՕRD WՕRD PRՕՇ ԽՕՕ ՃDD RԷT ԷNDP
NԷՃR ՃՃ, Օar2 Օar1, ՃՃ
: Մոդուլ #2: ֆայլի անունը - f2.aՏո: էaՏո f2
.ԽՕDԷԼ ՏԽՃԼԼ
ԷՃTRN Օar1:WՕRD, Օar2:WՕRD, Prօօ1:NԷՃR .ՇՕDԷ ԽՕՕ Օar1, 2 ԽՕՕ Օar2, 3 ՇՃԼԼ Prօօ1 ԷND Մոդուլ #2-ը հղում է կատարում Օar1, Օar2 և Prօօ1 անուններին, այնինչ դրանք արտաքին են։ Հետևաբար անհրաժեշտ է դրանք հայտարարել 62է6rո հրամանագրի օգնությամբ։ f1.aՏո ֆայլի թարգմանության արդյունքում կստացվի f1.օԵյ ֆայլը, իսկ f2.aՏո ֆայլի թարգմանության արդյունքում՝ f2.օԵյ-ն։ f.626 կատարվող ֆայլը ստանալու համար կարելի է օգտագործել հետևյալ հրամանը՝ T11ոk f1.օԵյ f2.օԵյ f.626
ՊՐՈՑԵԴՈՒՐԱ
Ասեմբլերում պրոցեդուրան ծրագրի հատված (ենթածրագիր) է, որն իրականացնում է որոշակի խնդիր։ Պրոցեդուրաներն օգտագործվում են. ծրագրի կառուցվածքն ավելի պարզ և իմաստալի դարձնելու նպատակով, ծրագրի ֆունկցիոնալությունն ավելի հեշտ թեստավորելու նպատակով, կրկնություններից խուսափելու նպատակով: Շ---ում ֆունկցիան կատարում է նմանատիպ դեր, ինչ պրոցեդուրան ասեմբլերում։
Պրոցեդուրայի նկարագրություն Պրոցեդուրայի նկարագրությունն ունի հետևյալ տեսքը. Հպրոցեդուրայի-անուն> PRՕԸ ՀՊարամետրերի ցուցակ» Հպրոցեդուրայի մարմին> Հպրոցեդուրայի-անուն> ENԾP
PRՕՇ և ԷNDP հրամանագրերը նշում են պրոցեդուրայի նկարագրության սկիզբն ու վերջը: ՀՊրոցեդուրայի-անուն»-ը նույնարկող է: ՀՊրոցեդուրայի մարմին»-ը բաղկացած է պրոցեդուրայում կատարվող հրամաններից: Վերջին կատարվող հրամանը RԷT հրամանն է, որն ապահովում է պրոցեդուրայից վերադարձ հիմնական ծրագիր: 8086 պրոցեսորում Հպարամետրերի ցուցակ»-ը պարունակում էր միայն 1 պարամետր` Հտիպ»:
ՀՏիպ»-ն ունի 2 հնարավոր արժեք՝ NԷՃR և FՃR, լռությամբ արժեքը` NԷՃR: NԷՃR-ի դեպքում պրոցեդուրայի կանչն ու նկարագրությունը պետք է լինեն նույն սեգմենտում, այսինքն՝ NԷՃR տիպ ունեցող պրոցեդուրան կարող է կանչվել միայն այն սեգմենտում, որտեղ նկարագրված է: FՃR-ի դեպքում պրոցեդուրայի կանչն ու նկարագրությունը կարող են լինել նաև տարբեր սեգմենտներում, այսինքն՝ FՃR տիպ ունեցող պրոցեդուրան կարող է կանչվել ոչ միայն այն սեգմենտում, որտեղ նկարագրված է: Ներկայիս ասեմբլեր թագմանիչները, բացի Հտիպ» պարամետրից, PRՕՇ հրամանագրի համար ապահովում են լրացուցիչ պարամետրեր, որոնք ծրագրորդին հնարավորություն են տալիս խուսափելու ավելորդ գործողություններից։ Ընդհանուր դեպքում ՀՊարամետրերի ցուցակ»-ն ունի հետևյալ տեսքը. Հլեզվի մոդիֆիկատոր> Հլեզու> Հտիպ> Հ1Բ4 արգումենտների_ցուցակ> ՀԲԵ1UԲNՏ արժեքների_ցուցակ> ՀԼՕԸ1Լ արգումենտների_ցուցակ> ՀUՏԵՏ արժեքների_ցուցակ>
Բոլոր պարամետրերն էլ ոչ պարտադիր են։ Լեզվի մոդիֆիկատոր – հայտնում է ասեմբլերին, որ պրոցեդուրայի մարմնի մեջ պետք է ընդգրկել պրոցեդուրայի սկզբի և ավարտի հատուկ ծրագրի կոդ, որը կապահովի W1NDՕWՏ-ի կամ օվերլեյների կառավարչի՝ ՕRՕՕԽ (օv6r1a7 ոaոaջ6r) հետ կապը (1ոէ6rfaօ6): Կարող է ունենալ հետևյալ արժեքները՝ NՕRԽՃԼ, W1NDՕWՏ, ՕDDNԷՃR, ՕDDFՃR: Եթե պրոցեդուրայի նկարագրության մեջ լեզվի մոդիֆիկատորը բացակայում է, ապա ասեմբլերը վերցնում է .ԽՕDԷԼ հրամանագրում հայտարարված լեզվի մոդիֆիկատորի արժեքը, իսկ .ԽՕDԷԼ հրամանագրի բացակայության կամ NՕRԽՃԼ արժեքի դեպքում ասեմբլերը գեներացնում է պրոցեդուրայի սկզբի և վերջի ստանդարտ կոդ: Լեզու – այս պարամետրը կարող է ունենալ հետևյալ արժեքները՝
NՕԼՃNՕՍՃՕԷ (ՃՏՏԷԽ8ԼԷR), 8ՃՏ1Շ, PRՕԼՕՕ, FՕRTRՃN, Շ, (Շ--), PՃՏՇՃԼ:
Ասեմբլերը լեզվի նշված արժեքով որոշում է պոցեդուրայի սկզբի և վերջի ավտոմատ ավելացվող լրացուցիչ կոդը, որը կազմակերպում է պրոցեդուրային պահունակի միջոցով փոխանցվող արգումենտների և լոկալ փոփոխականների հետ աշխատանքը: Լռությամբ և NՕԼՃNՕՍՃՕԷ արժեքի դեպքում լրացուցիչ կոդ չի ավելացվում, բայց
այս դեպքում պահունակով պրոցեդուրային արժեքներ փոխանցելը և պահունակից դրանք հեռացնելը կատարում է ծրագրորդը: 8ՃՏ1Շ, FՕRTFՃN,PՃՏՇՃԼ արժեքների դեպքում արգումենտները պրոցեդուրային փոխանցվում են ձախից աջ հերթականությամբ և պրոցեդուրայից կանչող ծրագիր վերադառնալուց պահունակից արգումենտները պետք է հանի պրոցեդուրան, իսկ Շ, ՇPP և PRՕԼՕՕ արժեքների դեպքում արգումենտները պրոցեդուրային են փոխանցվում աջից ձախ հերթականությամբ, և պրոցեդուրայից կանչող ծրագիր վերադառնալիս պահունակից արգումենտները պետք է հանի կանչող ծրագիրը: 4RG արգումենտների_ցուցակ – այստեղ նշվում են պրոցեդուրային փոխանցվող արժեքները: RԵ1ՆRNՏ արժեքների_ցուցակ – այստեղ նշվում են պրոցեդուրայից կանչող ծրագրին վերադարձվող արժեքները: ՄO44Մ արգումենտների_ցուցակ – այստեղ նշվում են պրոցեդուրայի լոկալ փոփոխականները: ՆՏԵՏ արժեքների_ցուցակ (ՆՏԵՏ արժեք1 արժեք2 …) – պրոցեդուրայի սկըզբում պահունակի մեջ է գրում, իսկ պրոցեդուրայի վերջում՝ պահունակից հանում արժեքների_ցուցակում նշված ռեգիստրների արժեքները: ՍՏԷՏ-ի միջոցով կարող ենք պրոցեդուրայում օգտագործել ռեգիստրներ՝ առանց կանչող ծրագրում նրանց փոխվելու: Օրինակ՝ ՍՏԷՏ ՇՃ ՃՃ Տ1–ով կարող ենք պրոցեդուրայում օգտագործել ՇՃ ՃՃ և Տ1 ռեգիստրները, բայց կանչող ծրագրում նրանց նախնական արժեքները չեն փոխվի: Նշում 1. ՍՏԷՏ պարամետրը կարելի է օգտագործել միայն այն պրոցեդուրաներում, որտեղ տրված է լեզուն .ԽՕDԷԼ հրամանագրի կամ պրոցեդուրայի «լեզու» պարամետրի միջոցով (NՕԼՃNՕՍՃՕԷ արժեքը չի ընդունվում): Նշում 2. Պարամետրերի հնարավոր արժեքները տարբեր ֆիրմաների ասեմբլերներում (TՃՏԽ,ԽՃՏԽ և այլն) կամ ասեմբլերների տարբեր տարբերակներում կարող են տարբերվել:
Պրոցեդուրայի նկարագրությունը կարող է գտնվել ծրագրում հրամանային սեգմենտի մեջ ցանկացած տեղ, միայն թե պետք է ապահովել, որ պրոցեդուրայի հրամանները սկսեն կատարվել միայն պրոցեդուրայի կանչ հանդիպելիս: Եթե այն այլ պրոցեդուրայի մեջ է, ապա դա կարելի է անել լրացուցիչ JԽP հրամանի միջոցով, որով կապահովվի անցում պրոցեդուրայի նկարագրության վրայով:
.ԸՕԾE … JԽP
Ճ
PR_NՃԽԷ PRՕԸ
…
PR_NՃԽԷ ENԾP
Ճ: …
ՇՃԼԼ PR_NՃԽԷ
… ԽՕՕ Ճէ, 4Շէ 1NT 21է ENԾ Բայց սովորաբար պրոցեդուրայի նկարագրությունը ծրագրի հրամանային սեգմենտում տեղադրում են հիմնական մասից առաջ կամ հետո: ; հիմնական մասից առաջ
; հիմնական մասից հետո
.ԸՕԾE
PR_NՃԽԷ PRՕԸ
…
PR_NՃԽԷ ENԾP
.ԸՕԾE …
ՇՃԼԼ PR_NՃԽԷ
… ԽՕՕ Ճէ, 4Շէ 1NT 21է
…
ՇՃԼԼ PR_NՃԽԷ
… ԽՕՕ Ճէ, 4Շէ 1NT 21է ENԾ
PR_NՃԽԷ PRՕԸ
…
PR_NՃԽԷ ENԾP
ENԾ
Եթե ծրագիրը մեծ է և պրոցեդուրաների քանակը շատ, ապա սովորաբար պրոցեդուրաների նկարագրությունները գրվում են առանձին ֆայլում, իսկ հիմնական ծրագրին կցվում է այդ ֆայլը 1NՇԼՍDԷ հրամանագրով: Նշում Հաճախ օգտագործվող պրոցեդուրաները (օրինակ՝ մուտքի/ելքի հետ կապված) կարելի է դարձնել առանձին մոդուլ (թարգմանության միավոր), ստանալ նրանց օբյեկտային կոդը (.օԵյ) և ստացված օբյեկտային կոդը կցել տարբեր ծրագրերի։ Ասեմբլերը թույլատրում է պրոցեդուրաների ներդրվածություն, սակայն խորհուրդ չի տրվում օգտագործել ներդրված պրոցեդուրաներ, քանի որ այս մոտեցման դեպքում խախտվում է ծրագրի կառուցվածքայնությունը։
Պրոցեդուրայի կանչ Պրոցեդուրան աշխատեցնելու համար հիմնական ծրագրում գրում ենք պրոցեդուրայի կանչի ՇՃԼԼ հրամանը: Պրոցեդուրայի NԷՃR տիպի դեպքում ասեմբլերը ՇՃԼԼ հանդիպելիս կատարում է մոտիկ կանչ. պահունակի մեջ գրում է 1P/Է1P ռեգիստրի արժեքը, իսկ FՃR տիպի դեպքում կատարվում է հեռու կանչ. պահունակի մեջ են գրվում ՇՏ և 1P/Է1P ռեգիստրների արժեքները: Այսպիսով՝ պահունակի մեջ գրվում է ՇՃԼԼ-ին հաջորդող հրամանի հասցեն՝ վերադարձի հասցեն: Ապա անցում է կատարվում պրոցեդուրային` 1P/Է1P կամ ՇՏ և 1P/Է1P՝ ռեգիստրներին վերագրելով պրոցեդուրայի սկզբի հասցեն: Արդյունքում կատարվում է ծրագրի ղեկավարության փոխանցում հիմնական ծրագրից պրոցեդուրային, այսինքն` ծրագրում հաջորդ կատարվող հրամանը լինում է պրոցեդուրայի առաջին հրամանը:
Օրինակ ՇՃԼԼ PRՕՇ_NՃԽԷ հրամանի դեպքում կկատարվի հետևյալը. NEՃR 1. 1P/Է1P ՏTՃՇՃ
2. 1P/Է1P - ՕFFՏԷT PRՕՇ_NՃԽԷ
FՃR
1. ՇՏ ՏTՃՇՃ
2. 1P/Է1P ՏTՃՇՃ
3. ՇՏ - ՏԷՕ PRՕՇ_NՃԽԷ
4. 1P/Է1P - ՕFFՏԷT PRՕՇ_NՃԽԷ
Վերադարձ պրոցեդուրայից հիմնական ծրագիր Պրոցեդուրայից հիմնական ծրագիր վերադառնալու համար պրոցեդուրայի մարմնում գրում ենք ‘RԷT’ կամ ‘RԷT Ճ’ հրամանը, որը պետք է լինի պրոցեդուրայի վերջին կատարվող հրամանը: Ճ-ն թիվ է։ Լրացուցիչ Ճ պարամետրն օգտագործվում է այն դեպքում, երբ պրոցեդուրային պարամետրեր են փոխանցվել պահունակով, և հիմնական ծրագիր վերադառնալիս պետք է պահունակից հանել այդ պարամետրերը (Ճ-ն պարամետրերի զբաղեցրած բայթերի քանակն է)։ Կախված պրոցեդուրայի տեսակից՝ RԷT հրամանը կփո200
խարինվի RԷTN (NԷՃR տիպի դեպքում) կամ RԷTF (FՃR տիպի դեպքում) հրամանով և կկատարվեն հետևյալ գործողությունները. NEՃR
FՃR
1. ՏTՃՇՃ 1P/Է1P 2. Եթե Ճ-ն տրված է, ապա
ՏP/ԷՏP ՏP/ԷՏP - Ճ
1. 2. 3.
ՏTՃՇՃ 1P/Է1P
ՏTՃՇՃ ՇՏ
Եթե Ճ-ն տրված է, ապա
ՏP/ԷՏP ՏP/ԷՏP - Ճ
Քանի որ մինչ այդ ՇՃԼԼ հրամանով պահունակի մեջ էին գրվել 1P/Է1P (NԷՃR տիպի դեպքում) կամ ՇՏ և 1P/Է1P (FՃR տիպի դեպքում) ռեգիստրների արժեքները, ապա RԷT հրամանի այս գործողությունները կապահովեն ղեկավարության փոխանցում պրոցեդուրայից հիմնական ծրագիր, այսինքն՝ ծրագրում հաջորդ կատարվող հրամանը կլինի ծրագրում ՇՃԼԼ հրամանին հաջորդող հրամանը:
Պարամետրերի փոխանցում պրոցեդուրային Պրոցեդուրային պարամետրեր կարելի է փոխանցել. ըստ արժեքի – պրոցեդուրային փոխանցվում է պարամետրի արժեքը, ավելի ստույգ՝ արժեքի պատճենը և պրոցեդուրայի մեջ պարամետրի արժեքի փոփոխությունը չի ազդում հիմնական ծրագրում այդ պարամետրի ունեցած արժեքի վրա, ըստ հղման – պրոցեդուրային փոխանցվում է պարամետրի հասցեն, որտեղից պրոցեդուրան կարդում է պարամետրի արժեքը, ըստ վերադարձվող արժեքի – սա նախորդ երկուսի միավորումն է. պրոցեդուրային փոխանցվում է պարամետրի հասցեն, պրոցեդուրան կարդում է այդ հասցեից պարամետրի արժեքը, աշխատում նրա հետ և արդյունքը գրանցում նույն հասցեով,
ըստ արդյունքի – պրոցեդուրային փոխանցվում է հասցե, որտեղ պրոցեդուրան գրում է իր աշխատանքի արդյունքը: Այս տարբերակը նախորդից տարբերվում է նրանով, որ փոխանցված հասցեից պրոցեդուրան արժեք չի կարդում, ծրագրի կոդի մեջ – պրոցեդուրային փոխանցվող պարամետրերը գտնվում են անմիջապես կոդ սեգմենտի մեջ՝ պրոցեդուրայի կանչի ՇՃԼԼ հրամանից անմիջապես հետո: Այդ պարամետրերի հասցեն գրվում է պահունակի մեջ որպես վերադարձի կետի հասցե և հասանելի է 8P/Է8P ռեգիստրով: Այս դեպքում պրոցեդուրան աշխատանքն ավարտելուց առաջ պետք է փոխի վերադարձի կետի արժեքը՝ դարձնելով այն պարամետրերից հետո ծրագրում առաջին հրամանի հասցեն: Պարամետրեր պրոցեդուրային կարելի է փոխանցել 3 եղանակով՝ ռեգիստրի միջոցով, հիշողության (փոփոխականների) միջոցով, պահունակի միջոցով: Փոխանցում ռեգիստրի միջոցով այս եղանակով (ինչպես DՕՏ կանչերում) տվյալները (արժեք, ցուցիչ) պրոցեդուրային փոխանցելու համար օգտագործվում են պրոցեսորի ռեգիստրները։ Ռեգիստրով փոխանցելը ամենապարզ ձևն է, բայց ռեգիստրների սահմանափակ քանակի պատճառով այս ձևով հնարավոր չէ փոխանցել շատ պարամետրեր: Մեծածավալ տվյալների փոխանցման համար կարելի է օգտագործել ցուցիչներ։ Փոխանցում հիշողության միջոցով այս եղանակը համարժեք է գլոբալ փոփոխականներ օգտագործելուն։ Այս եղանակը խորհուրդ չի տրվում օգտագործել, քանի որ առկա են գլոբալ փոխոխականների օգտագործման բոլոր վտանգները։ Փոխանցում պահունակի միջոցով այս եղանակի օգտագործման դեպքում նախքան պրոցեդուրայի կանչը պարամետրերը ուղարկվում են պահունակ, իսկ պրոցեդուրան օգտագործում է պահունակը պարամետրերին դիմելու համար։ Պահունակին դիմելուց անհրաժեշտ է ի նկատի ունենալ, որ վերադարձի հասցեն պրոցեդուրա202
յի կատարման ժամանակ գտնվում է պահունակում (այդ պատճառով պարամետրերին հասանելիությունը պրոցեդուրայում ապահովվում է բազային ցուցիչ (8P/Է8P) ռեգիստրի միջոցով, որը հենց նախատեսված է պահունակի կադրի հետ աշխատելու համար)։ Պահունակի միջոցով պարամետրերի փոխանցումը Շ լեզվում պարամետրերի փոխանցման ամենատարածված եղանակն է։ Քանի որ պրոցեդուրայի կանչից հետո պահունակում գրվում է վերադարձի հասցեն՝ 1P/Է1P կամ ՇՏ և 1P/ Է1P, ապա պարամետրերին հասանելիությունը պրոցեդուրայում կարելի է ապահովվել 8P/Է8P ռեգիստրով հետևյալ կերպ. 1. 8P/Է8P-ի արժեքը պահվում է պահունակում, 2. 8P/Է8P-ին վերագրվում է ՏP/ԷՏP-ի արժեքը, 3. 16-բիթանոց պահունակի դեպքում 8P-ն ավելացվում է 4 կամ 6-ով՝ կախված պրոցեդուրայի տիպից` NԷՃR / FՃR (4 բայթ՝ NԷՃR-ի դեպքում, որպեսզի անցում կատարվի պահունակում գրված 1P-ի և 8P-ի արժեքների վրայով, 6 բայթ՝ FՃR-ի դեպքում, որպեսզի անցում կատարվի պահունակում գրված 1P-ի, ՇՏ-ի և 8P-ի արժեքների վրայով): 32-բիթանոց պահունակի դեպքում Է8P-արժեքը ավելանում է 8-ով (NԷՃR) կամ 10-ով (FՃR) համապատասխանաբար, 4. |8P|-ում է պրոցեդուրային փոխանցված վերջին պարամետրը, |8P - 2/4|-ում՝ նախավերջին պարամետրը և այսպես շարունակ: Պրոցեդուրան կարդում է դրանք և աշխատում: Պրոցեդուրայի աշխատանքի ավարտին պետք է պահունակից հանել ոչ միայն 1P/Է1P-ի կամ ՇՏ-ի և 1P/ Է1P-ի արժեքները, այլև պրոցեդուրային փոխանցված պարամետրերը: Դա արվում է RԷT Ճ հրամանով: Օրինակ 1 Պարամետրերի փոխանցում ըստ արժեքի, պահունակով։ ԽՃՃ պրոցեդուրան պահունակով ստանում է երկու առանց նշանի բառային արժեքներ և վերադարձնում նրանցից մեծի արժեքը ՃՃ ռեգիստրում.
ԽՃՃ
PRՕՇ
: Ստանալ պահունակով փոխանցված 2 առանց նշանի : բառային արժեքներից առավելագույնը : Մուտք – 1-ին պարամետր` 2 բայթ՝ պահունակում (Ճ) : 2-րդ պարամետր` 2 բայթ՝ պահունակում (Մ) : ելք – ՃՃ (ՃՃ - ոa2 (Ճ, Մ))
PՍՏէ ԽՕՕ
8P 8P, ՏP
: պահունակի կադրը տես
: Նկար 1-ում
Լ1:
ԽՃՃ
PՍՏէ ԽՕՕ
8Ճ ՃՃ, |8P - 4|
ԽՕՕ
8Ճ, |8P - 6|
ՇԽP JՃԷ ԽՕՕ PՕP PՕP RԷT ԷNDP
ՃՃ, 8Ճ Լ1 ՃՃ, 8Ճ 8Ճ 8P
: |8P - 4| - ում Մ փոփո: խականի արժեքն է
: |8P - 6| - ում Ճ փոփո: խականի արժեքն է
Պահունակի նախորդ պարունակությունը
Պարամետր 1 (Ս)
Պարամետր 2 (Y)
Վերադարձի հասցե
BՔ-ի սկզբնական արժեքը
ՏP, 5P
շեղումը 8P-ից
Նկար 1. Պահունակի կադրը՝ 1ՕՕ 5P, ՏP հրամանից հետո
ԽՃՃ պրոցեդուրայի կանչը կարելի է իրականացնել հետևյալ կերպ. .DՃTՃ Ճ Մ
DW DW
.ՇՕDԷ … PՍՏէ PՍՏէ ՇՃԼԼ …
Ճ Մ ԽՃՃ
Նկար 2. Պահունակի կադրերն ըստ կատարվող գործողությունների
Օրինակ 2 Պարամետրի փոխանցում ըստ արդյունքի, ռեգիստրով: 1NPՍT պրոցեդուրան ներածում է սիմվոլային տող: Պրոցեդուրան որպես պարամետր DՃ-ում ստանում է հասցե, որտեղ պահում է ներածված տողը: 1NPՍT PRՕՇ : մուտք - ներածվող տողի հասցեն DՃ-ում : ելք – ներածված տողը, որի հասցեն տրված էր DՃ-ում
1NPՍT
PՍՏէ ԽՕՕ 1NT PՕP RԷT ԷNDP
ՃՃ Ճէ, 10 21է ՃՃ
1NPՍT պրոցեդուրայի կանչը կարելի է իրականացնել հետևյալ կերպ. .DՃTՃ Տէr1ոջ D8 10, 11 մսք(2) .ՇՕDԷ … ԼԷՃ DՃ, Տէr1ոջ ՇՃԼԼ 1NPՍT … Օրինակ 3 Պարամետրի փոխանցում ըստ հղման, ռեգիստրով: ՕՍTPՍT պրոցեդուրան արտածում է սիմվոլային տող: Պրոցեդուրան որպես պարամետր DՃ-ում ստանում է արտածվող տողի հասցեն: ՕՍTPՍT PRՕՇ : մուտք - արտածվող տողի հասցեն DՃ-ում : ելք - -
ՕՍTPՍT
PՍՏէ ԽՕՕ 1NT PՕP RԷT ԷNDP
ՃՃ Ճէ, 9 21է ՃՃ
ՕՍTPՍT պրոցեդուրայի կանչը կարելի է իրականացնել հետևյալ կերպ.
.DՃTՃ Տէr1ոջ D8
“Tհ1Տ Տէr1ոջ w111 Ե6 քr1ոէ6մ$”
… ԼԷՃ ՇՃԼԼ …
DՃ, Տէr1ոջ ՕՍTPՍT
.ՇՕDԷ
Օրինակ 4 Պարամետրի փոխանցում ըստ վերադարձվող արժեքի, ռեգիստրով: ՏՍԽ պրոցեդուրան ՃՃ-ում ստանում է առանց նշանի թիվ և վերադարձնում թվի թվանշանների գումարը ՃՃ-ում:
ՏՍԽ 2ԷՕՇ
: մուտք - ՃՃ-ում առանց նշանի թիվ : ելք – ՃՃ-ում թվի թվանշանների գումարը
Շ1RՇԼԷ:
F1N1Տէ:
ՏՍԽ
PՍՏէ ՃՕR
8Ճ ՇՃ 8Ճ, 8Ճ
ԽՕՕ ՇԽP JԷ ՃՕR D1Օ ՃDD JԽP ԽՕՕ PՕP RԷT ԷNDP
ՇՃ, 10 ՃՃ, 0 F1N1Տէ DՃ, DՃ ՇՃ 8Ճ, DՃ Շ1RՇԼԷ ՃՃ, 8Ճ DՃ ՇՃ
DՃ
8Ճ
ՏՍԽ պրոցեդուրայի կանչը կարելի է իրականացնել հետևյալ կերպ.
.DՃTՃ Ճ
DW
12345
.ՇՕDԷ … ԽՕՕ ՇՃԼԼ …
ՃՃ, Ճ ՏՍԽ
Օրինակ 5 Պարամետրի փոխանցում ծրագրի կոդի մեջ: Pr1ոէՏէr1ոջ պրոցեդուրան հիմնական ծրագրի կոդից ստանում է տողի հասցեն և արտածում այն: Ապա փոխում է պահունակում գրված վերադարձի հասցեն այնպես, որ 1P-ում հայտնվի փոխանցված տողին հաջորդող հասցեն. Pr1ոէՏէr1ոջ
Շ1RՇԼԷ:
F1N1Տէ:
Pr1ոէՏէr1ոջ
PRՕՇ PՍՏէ ԽՕՕ PՍՏէ ԽՕՕ ԽՕՕ ՇԽP JԷ ԽՕՕ 1NT 1NՇ JԽP 1NՇ ԽՕՕ PՕP PՕP RԷT ԷNDP
8P 8P, ՏP ՃՃ DՃ Տ1 Ճէ, 2 Տ1, |8P - 2| Ե7է6 քէr ՇՏ:|Տ1|, ’$’ F1N1Տէ DԼ, ՇՏ:|Տ1| 21է Տ1 Շ1RՇԼԷ Տ1 |8P - 2|, Տ1 Տ1 DՃ ՃՃ 8P
Pr1ոէՏէr1ոջ պրոցեդուրայի կանչը կարելի է իրականացնել հետևյալ կերպ. .ՇՕDԷ … ՇՃԼԼ D8 …
Pr1ոէՏէr1ոջ “Tհ1Տ 1Տ ո7 Տէr1ոջ$”
Անդրադարձ (ռեկուրսիվ) պրոցեդուրաներ Ասեմբլերը թույլատրում է օգտագործել անդրադարձ պրոցեդուրաներ, երբ պրոցեդուրան կարող է ուղղակի կամ անուղղակի դիմում կատարել ինքն իրեն։ Դիտարկենք անդրադարձ պրոցեդուրաների մի քանի օրինակ։ Օրինակ 1 Ֆակտորիալ հաշվելու անդրադարձ պրոցեդուրա Faօէօr1a1 PRՕՇ : մուտք 2-բայթանի ո պարամետր պահունակում : ելք ՃՃ (a2 - ո! ) PՍՏէ 8P ԽՕՕ 8P, ՏP ԽՕՕ ՃՃ, |8P - 4| : ստանալ ո-ը ՇԽP ՃՃ, 0 : ստուգենք ո » 0, թե ոչ JՃ Լ1 : այո՝ շարունակել ԽՕՕ ՃՃ, 1 : ոչ՝ վերադարձ JԽP Լ2 Լ1: DԷՇ ՃՃ PՍՏէ ՃՃ : Faօէօr1a1(ո-1) ՇՃԼԼ Faօէօr1a1 : ներքևի հրամանները կատարվում են, երբ տեղի է ունենում
: վերադարձ անդրադարձ կանչից
Լ2: Faօէօr1a1
ԽՕՕ ԽՍԼ PՕP RԷT ԷNDP
8Ճ, |8P - 4| 8Ճ 8P
: ստանալ ո-ը : (DՃ:ՃՃ) - ՃՃ " 8Ճ : : մաքրել պահունակը
Օրինակ 2 Անդրադարձ պրոցեդուրա, որը տպում է մուտքային ՃՃ ռեգիստրի արժեքը՝ որպես առանց նշանի տասական թիվ. Pr1ոէ PRՕՇ : մուտք ՃՃ : ելք ---
Dօո6:
Pr1ոէ
PՍՏէ ԽՕՕ ՃՕR D1Օ ՕR J7 ՇՃԼԼ ՃDD ԽՕՕ 1NT PՕP RԷT ԷNDP
8Ճ DՃ 8Ճ, 10 DՃ, DՃ 8Ճ ՃՃ, ՃՃ մօո6 քr1ոէ DԼ, ‘0’ Ճէ, 2 21հ ՃՃ DՃ
ՃՃ
8Ճ
Խնդիրների լուծման օրինակներ 1. Ստեղնաշարից ներածել 2 սիմվոլային տող, ստանալ նրանց միակցում տողը և արտածել այն: Տողերի միակցումը և “Էոէ6r” գործողության իրականացումը կազմակերպել պրոցեդուրայով (ՇՕNՇՃTԷ և ԷNTR պրոցեդուրաներ): Տողերի հասցեները ՇՕNՇՃTԷ պրոցեդուրային փոխանցել պահունակով (պարամետրերի փոխանցում՝ ըստ հղման, պահունակով). ՏTԷՃ ՏTԷՃ DՃTՃ
DՃTՃ
ՏԷՕԽԷNT DW ԷNDՏ ՏԷՕԽԷNT Տէr1ոջ1 Տէr1ոջ2 Տէr1ոջ3 Էոէr ԷNDՏ
ՏTՃՇՃ DՍP(2)
‘ՏTՃՇՃ’
‘DՃTՃ’ D8 10, 11 DՍP(2) D8 10, 11 DՍP(2) D8 19 DՍP(2) D8 10, 13, ’$’
ՇՕD ՏԷՕԽԷNT ‘ՇՕDԷ’
ՃՏՏՍԽԷ ՇՏ:ՇՕD, DՏ:DՃTՃ, ՏՏ:ՏTԷՃ
ԽՃ1N
PRՕՇ FՃR
PՍՏէ DՏ ՃՕR ՃՃ, ՃՃ PՍՏէ ՃՃ ԽՕՕ
ՃՃ, DՃTՃ
ԽՕՕ DՏ, ՃՃ : առաջին տողի ներածում ԽՕՕ Ճէ, 10 ԼԷՃ DՃ, Տէr1ոջ1 1NT 21է ՇՃԼԼ ԷNTR :երկրորդ տողի ներածում
ԼԷՃ 1NT ՇՃԼԼ
DՃ, Տէr1ոջ2 21հ ԷNTR
: տողերի հասցեները հիշենք պահունակում PՍՏէ ՕFFՏԷT Տէr1ոջ3 PՍՏէ ՕFFՏԷT Տէr1ոջ1 PՍՏէ ՕFFՏԷT Տէr1ոջ2 : տողերի միակցում ՇՃԼԼ ՇՕNՇՃTԷ ՇՃԼԼ ԷNTR : ստացված տողի արտածում ԽՕՕ Ճէ, 9 ԼԷՃ DՃ, Տէr1ոջ3 1NT 21է RԷT ԽՃ1N ԷNDP ԷNTR
ԷNTR
PRՕՇ PՍՏէ ԽՕՕ ԽՕՕ 1NT ԽՕՕ 1NT PՕP RԷT ԷNDP
ՃՃ DՃ Ճէ, 2 DԼ, 10 21է DԼ, 13 21է DՃ ՃՃ
ՇՕNՇՃTԷ PRՕՇ : մուտք տողերի հասցեները պահունակում են : ելք – առաջինի մեջ հաջորդ երկուսի միակցումը
PՍՏէ ԽՕՕ
8P 8P, ՏP
ՃDD PՍՏէ ԽՕՕ ԽՕՕ PՍՏէ PՕP ՇԼD ՃՕR ԽՕՕ
8P, 4 Տ1 D1 D1, |8P - 4| Տ1, |8P - 2| DՏ ԷՏ Շէ, Շէ ՇԼ, |Տ1 - 1|
ՃDD
Տ1, 2
RԷP
ԽՕՕՏ8
ՇՃ : D1 - Տէr1ոջ3 տողի հասցե : Տ1 - Տէr1ոջ1 տողի հասցե
: ՇՃ - Տէr1ոջ1 տողի տար: րերի քանակ : Տ1 - Տէr1ոջ1 տողի իրա: կան սկզբի հասցե : Տէr1ոջ3-ում ստացանք
: Տէr1ոջ1-ի պատճենը` ԽՕՕ ԽՕՕ
Տ1, |8P| ՇԼ, |Տ1 - 1|
ՃDD
Տ1, 2
RԷP ԽՕՕ ՏTՕՏ8
ԽՕՕՏ8 ՃԼ, '$'
PՕP ՇՃ PՕP 8P RԷT ՇՕNՇՃTԷ ԷNDP ՇՕD ԷNDՏ ԷND
ԽՃ1N
D1
: առաջին տողը կցվեց : Տ1 - Տէr1ոջ2 տողի հասցե : ՇՃ - Տէr1ոջ2 տողի տար: րերի քանակ : Տ1 - Տէr1ոջ2 տողի իրա: կան սկզբի հասցե : կցվեց նաև երկրորդ տողը
: ստացված տողի վերջում : ավելացնում ենք '$' Տ1
2. Ներածել առանց նշանի տասական թիվ (|0,65535| միջակայքի) սիմվոլային տողի տեսքով և ՃՃ ռեգիստրում ստանալ թիվը: Տողից թվի ստացումը կազմակերպել պրոցեդուրայով: Ներածված տողում ոչ թվանշանների առկայության կամ թվի արժեքի պահանջվող միջակայքին չպատկանելու դեպքում տալ սխալի մասին հաղորդագրություն.
.ԽՕDԷԼ ՏԽՃԼԼ
.DՃTՃ NսոԵ6r D8 6, 7 մսք(2) Խ6Տ1 D8 “1է 1Տ ոօէ a ոսոԵ6r$” Խ6Տ2 D8 “էհ1Տ ոսոԵ6r 1Տ օսէ օf raոջ6$” .ՇՕDԷ Տէarէ: ԽՕՕ
ՃՃ, (DՃTՃ
ԽՕՕ DՏ, ՃՃ ԽՕՕ Ճէ, 10 ԼԷՃ DՃ, ոսոԵ6r 1NT 21է ՇՃԼԼ Tօ_NսոԵ6r ՇԽP DՃ, 0 JԷ f1ո1Տհ ՇԽP DՃ, -1 JԷ ԷRR1 ՇԽP DՃ, -2 JԷ ԷRR2 JԽP f1ո1Տհ Էrr1: ԽՕՕ Ճէ, 9 ԼԷՃ DՃ, ո6Տ1 1NT 21է JԽP f1ո1Տհ Էrr2: ԽՕՕ Ճէ, 9 ԼԷՃ DՃ, ո6Տ2 1NT 21է
F1ո1Տհ:
ԽՕՕ ՃՃ, 4Շ00է 1NT 21է Tօ_NսոԵ6r PRՕՇ : Մուտք DՃ` սիմվոլային տողի հասցեն : ելք DՃ` սխալի կոդը, եթե սխալ կա (-1` թիվ չէ, -2` միջակայքից : դուրս է): Եթե սխալ չկա` DՃ - 0 և ՃՃ - թիվը
Շ1rօ16:
P2: P1: Pr_f1ո:
PՍՏէ ՃՕR ԽՕՕ ԽՕՕ ՃDD ԽՕՕ ՃՕR ԽՍԼ TԷՏT JN7 ԽՕՕ ՇԽP J8 ՇԽP JՃ ՃND ՃDD 1NՇ ԼՕՕP ՃՕR JԽP ԽՕՕ JԽP ԽՕՕ PՕP RԷT
ՇՃ D1 ՇՃ, ՇՃ Տ1, DՃ ՇԼ, |Տ1 - 1| Տ1, 2 D1, 10 ՃՃ, ՃՃ D1 DՃ, DՃ ք2 DԼ, |Տ1| DԼ, ’0’ ք1 DԼ, ’9’ ք1 DԼ, 0Fէ ՃՃ, DՃ Տ1 օ1rօ16 DՃ, DՃ քr_f1ո DՃ, -2 քr_f1ո DՃ, -1 Տ1 D1
Տ1
ՇՃ
Tօ_NսոԵ6r
ԷNDP ԷND Տէarէ 3. Ներածել երկչափ սիմվոլային զանգված` (5 2 6) չափի: Կարգավորել զանգվածի տողերը աճման կարգով «պղպջակի» մեթոդով և արտածել ստացված երկչափ զանգվածը: Զանգվածի տողի արտածումը և աճման կարգով կարգավորումն իրականացնել պրոցեդուրաներով:
.ԽՕDԷԼ ՏԽՃԼԼ
.DՃTՃ N ԷՕՍ Խ ԷՕՍ ոaՏ D8 N մսք (Խ մսք(2)) .ՇՕDԷ 86ջ1ո: ԽՕՕ ՃՃ, (Daէa ԽՕՕ DՏ, ՃՃ : Զանգվածի ներածում էկրանից ԽՕՕ Ճէ, 1 ՃՕR 8Ճ, 8Ճ ԽՕՕ ՇՃ, N օ1rօ161: PՍՏէ ՇՃ ՃՕR Տ1, Տ1 ԽՕՕ ՇՃ, Խ օ1rօ162: 1NT 21է ԽՕՕ ոaՏ|8Ճ||Տ1|, ՃԼ 1NՇ Տ1 ԼՕՕP օ1rօ162 ՇՃԼԼ ԷNTR PՕP ՇՃ ՃDD 8Ճ, Տ1 ԼՕՕP օ1rօ161 ՇՃԼԼ ԷNTR : Զանգվածի տողերի կարգավորում աճման կարգով
ԼԷՃ 8Ճ, ոaՏ ԽՕՕ ՇՃ, N օ1rօ163: ՇՃԼԼ 8սԵ16_Տօrէ_Տէr1ոջ ՃDD 8Ճ, Խ ԼՕՕP օ1rօ163 : Զանգվածի արտածում էկրանին ԼԷՃ 8Ճ, ոaՏ ԽՕՕ ՇՃ, N օ1rօ164: ՇՃԼԼ Pr1ոէՏէr1ոջ ՇՃԼԼ ԷNTR ՃDD 8Ճ, Խ ԼՕՕP օ1rօ164 ԽՕՕ ՃՃ, 4Շ00է 1NT 21է Pr1ոէՏէr1ոջ PRՕՇ : Մուտք 8Ճ` զանգվածի տողի հասցեն : ելք ---PՍՏէ ՃՃ 8Ճ ՇՃ Տ1 ՃՕR Տ1, Տ1 ԽՕՕ ՇՃ, Խ ԽՕՕ Ճէ, 2 P1: ԽՕՕ DԼ, |8Ճ||Տ1| 1NT 21հ ԽՕՕ DԼ, ’ ‘ 1NT 21է 1NՇ Տ1 ԼՕՕP P1 PՕP Տ1 ՇՃ 8Ճ ՃՃ RԷT Pr1ոէՏէr1ոջ ԷNDP ԷNTR PRՕՇ PՍՏէ ՃՃ DՃ
ԽՕՕ Ճէ, 2 ԽՕՕ DԼ, 10 1NT 21է ԽՕՕ DԼ,13 1NT 21է PՕP DՃ ՃՃ RԷT ԷNTR ԷNDP 8սԵԵ16_Տօrէ_Տէr1ոջ PRՕՇ : «Պղպջակի» մեթոդը հետևյալն է. : fօr(1 - 0: 1 Հ N - 1: 1 --) fօr(յ - 1 - 1: յ Հ N: յ --) : 1f (Ճ|1| » Ճ|յ|) օհaոջ6(Ճ|1|, Ճ|յ|) : Մուտք 8Ճ` զանգվածի տողի հասցեն : ելք կարգավորված տող PՍՏէ ՃՃ Տ1 D1 8Ճ ՃՕR Տ1, Տ1 Ճ2: ՇԽP Տ1, Խ - 1 JԷ F1N ԽՕՕ D1, Տ1 1NՇ D1 ԽՕՕ ՃԼ, |8Ճ||Տ1| Ճ1: ՇԽP D1, Խ JԷ F1N1 ՇԽP ՃԼ, |8Ճ||D1| JԼԷ NՕ ՃՇէՕ ՃԼ, |8Ճ||D1| ԽՕՕ |8Ճ||Տ1|, ՃԼ 1NՇ D1 JԽP Ճ1 f1ո1: 1NՇ Տ1 JԽP Ճ2 f1ո: PՕP 8Ճ D1 Տ1 ՃՃ
RԷT 8սԵ16_Տօrէ_Տէr1ոջ ԷND
ԷNDP 8ԷՕ1N
Խնդիրներ և վարժություններ 1. Նկարագրել ոչ անդրադարձ պրոցեդուրա, որը տպում է մուտքային ՃՃ ռեգիստրի արժեքը՝ ա) որպես առանց նշանի տասական թիվ, բ) որպես նշանով տասական թիվ: 2. Ներածել նշանով տասական թիվ (|-32768,32767| միջակայքի) սիմվոլային տողի տեսքով և ՃՃ ռեգիստրում ստանալ թիվը: Տողից թվի ստացումը կազմակերպել պրոցեդուրայով: 3. Կազմել ծրագիր, որը հաշվում է բնական թվերից կազմված բայթային զանգվածի տարրերի ամենամեծ ընդհանուր բաժանարարը: Երկու թվերի ամենամեծ ընդհանուր բաժանարարը հաշվել պրոցեդուրայով: 4. Ներածել 35 սիմվոլներից բաղկացած զանգված: Դրանից առանձնացնել ենթազանգված այն սիմվոլներից, որոնց 0 և 1 համարի բիթերը 1 են, իսկ 7 և 5 համարի բիթերը՝ 0: Մեկ սիմվոլի համար պայմանը ստուգել պրոցեդուրայով: 5. Ներածել 27 սիմվոլներից բաղկացած զանգված: Դրանում հաշվել այն սիմվոլների քանակը, որոնցում 1 և 3 համարի բիթերում 0 է, իսկ 2 և 5 համարի բիթերում՝ 1: Այդպիսի սիմվոլներում 4 և 7 համարի բիթերը դարձնել 0, իսկ 6 համարի բիթի արժեքը՝ հակադարձել: Մեկ սիմվոլի հետ աշխատանքն իրականացնել պրոցեդուրայով: 6. Նկարագրել պրոցեդուրա, որը, ստանալով Ճ նշանով բառը (Ճ DW 2), վերադարձնում է այն ամենամեծ N-ը, որի դեպքում. ա) 2-ի N աստիճանը փոքր կամ հավասար է Ճ-ի բացարձակ արժեքից, բ) 4-ի N աստիճանը փոքր կամ հավասար է Ճ-ի բացարձակ արժեքից,
գ) 8-ի N աստիճանը փոքր կամ հավասար է Ճ-ի բացարձակ արժեքից: Օգտագործել այդ պրոցեդուրան տրված Ճ բառի համար և արտածել N-ը: 7. Նկարագրել PR1NTW16 պրոցեդուրան, որը տպում է տրված բառփոփոխականի (Ճ DW 2) արժեքը քառանիշ 16-ական առանց նշանի թվի տեսքով: Պրոցեդուրային պարամետրը փոխանցել. ա) ռեգիստրով, բ) պահունակով: Գրել ծրագրի հատված, որն այդ պրոցեդուրայի միջոցով տպում է տրված Մ կրկնակի բառի (Մ DD 2) արժեքը 16-ական տեսքով: 8. Տրված է հետևյալ նկարագրությունը. D D8 : օր Խ D8 : ամիս Մ DW : տարի Նկարագրել TRՍԷDՃTԷ(DD, ԽԽ, ՄՄ, P) պրոցեդուրան, որը վերադարձնում է P - 1, եթե DD.ԽԽ.ՄՄ-ը ճիշտ ամիս-ամսաթիվ է, և P - 0` հակառակ դեպքում (ուշադրություն դարձնել նահանջ տարվա ստուգմանը): Պրոցեդուրային պարամետրերը փոխանցել. ա) ռեգիստրներով, բ) պահունակով: Կիրառել պրոցեդուրան D, Խ, Մ եռյակների տարբեր արժեքների համար: 9. Տրված է 40 տարրից բաղկացած նշանով բառ-փոփոխականների զանգված: Արտածել զանգվածի տարրերը: Մի տարրի արտածումն իրականացնել պրոցեդուրայով (պահունակ չօգտագործել): 10. Տրված է Ճ D8 80 DՍP(2) : նշանով թվերի զանգված DW նկարագրությունը: Գրել ՏՍԽ(Ճ, N, Տ) պրոցեդուրան, որը Տ պարամետրին վերագրում է N հատ նշանով բայթերի Ճ զանգվածի տարրերի գումարը: Կիրառել այն՝ ՏՍԽ(Ճ,80,8) կանչն իրագործելու համար:
11. Նկարագրել F(Ճ, N, P) պրոցեդուրան, որը հաշվում է N հատ բայթերի զանգվածի այն տարրերի քանակը, որոնք հավասար են P բայթին, և արդյունքը վերադարձնում ՃԼ ռեգիստրով: Կիրառել այդ պրոցեդուրան հետևյալ հաշվարկի համար. Ճ - F(Ճ, 50, F(8, 30, Ճ)) , որտեղ Ճ-ն 50 բայթից բաղկացած զանգված է, 8-ն 30 բայթից բաղկացած զանգված է, իսկ Ճ-ն՝ բայթային փոփոխականը: 12. Տրված են 70 բառ-փոփոխականից կազմված Ճ զանգվածը և 40 բառ-փոփոխականից կազմված Մ զանգվածը: Եթե Ճ-ում կան կրկնվող տարրեր, իսկ Մ-ի բոլոր տարրերը իրարից տարբեր են, ապա DԼ ռեգիստրին վերագրել 1, հակառակ դեպքում՝ 0: Նկարագրել համապատասխան պրոցեդուրա և այն օգտագործելով՝ գրել գլխավոր ծրագիր, որը լուծում է նշված խնդիրը: 13. Նկարագրել պրոցեդուրա, որն արտածում է ՃՃ ռեգիստրի արժեքը՝ որպես առանց նշանի թիվ՝ թվարկության այն համակարգով, որի հիմքը (2-ից մինչև 10) փոխանցվում է 8Լ ռեգիստրով (ուշադրություն դարձնել բաժանման ժամանակ գերհագեցման հնարավորությանը): Գրել գլխավոր ծրագիր, որը ստուգում է պրոցեդուրայի աշխատանքը տարբեր դեպքերի համար: 14. Գրել ՏՍԽՃ(8Ճ, ՇՃ, ՃՃ) պրոցեդուրան, որտեղ 8Ճ-ով փոխանցվում է զանգվածի սկզբնական հասցեն, իսկ ՇՃ-ով՝ տարրերի քանակը: Զանգվածի տարրերն առանց նշանի բառեր են, որոնք հանդիսանում են տվյալների սեգմենտի ինչ-որ նշանային բայթերի հասցեներ: Պրոցեդուրան պետք է հաշվի այդ բոլոր բայթերի գումարը և վերադարձնի ՃՃ ռեգիստրի միջոցով: Գրել գլխավոր ծրագրի հատված՝ տվյալ պրոցեդուրայի կիրառմամբ: 15. Տրված է առանց նշանի թվերի Ճ զանգվածը. Ճ DW DՍP 25(2) Կարգավորել զանգվածն ըստ տարրերի առաջին թվանշանների նվազման կարգի: Նկարագրել համապատասխան պրոցեդուրա(ներ) և կիրառել խնդիրը լուծող գլխավոր ծրագրում:
ՄԱԿՐՈ Մակրոն ասեմբլերի հզոր միջոց է։ Մակրոներն ապահովում են տեքստի փոխարինման ճկուն մեխանիզմ։ Մակրոյի օգնությամբ ծրագրի ինչ-որ հատվածի կարելի է անուն տալ և հետագայում այդ հատվածը կրկնել բազմիցս` օգտագործելով մակրոկանչի հրամանագիրը։ Թարգմանիչը յուրաքանչյուր մակրոկանչ փոխարինում է մակրոնկարագրության տեքստով։ Մակրոն կարող է ունենալ պարամետրեր։ Մակրոյի հետ կապվում են հետևյալ հասկացությունները. 1. մակրոնկարագրություն, 2. մակրոկանչ, 3. մակրոգեներացում, 4. մակրոընդլայնում:
Մակրոնկարագրություն Մակրոնկարագրությունն ունի հետևյալ տեսքը. Հմակրոյի անուն> M44RO Հձևական պարամետրերի ցուցակ> Հմակրոյի մարմին> ԵNDM
որտեղ Հմակրոյի անուն»-ը և Հձևական պարամետրերի ցուցակ»-ը նույնարկողներ են, իսկ Հմակրոյի մարմին»-ը՝ հրամաններ կամ մակրոկանչեր:
Մակրոկանչ Մակրոկանչի տեսքը հետևյալն է. Հ մակրոյի անուն > Հ փաստացի պարամետրերի ցուցակ >,
որտեղ Հ փաստացի պարամետրերի ցուցակ»-ը արժեքների ցուցակ է: Հանդիպելով մակրոկանչին՝ թարգմանիչը ծրագրի մեջ` նրա տեղում, զետեղում է համապատասխան մակրոյի մարմինը՝ նախապես մարմնի մեջ ձևական պարամետրերը փոխարինելով փաստացի պարամետրերով: Արդյունքում ստացված տեքստը կոչվում է մակրոընդլայնում: Պրոցեսը, որը փոխարինում է կանչը մակրոընդլայնումով, կոչվում է մակրոգեներացում: Ընդհանուր դեպքում մակրոնկարագրությունը կարող է տեղադրվել ծրագրի ցանկացած հատվածում նախքան մակրոկանչը։ Սակայն առավել ընդունված է մակրոնկարագրություննների տեղադրումը կատարել հետևյալ երկու եղանակով. 1. անմիջապես ծրագրում. սովորաբար ծրագրի սկզբում` բոլոր սեգմենտներից դուրս: 2. ֆայլում, որը կկցվի ծրագրին 1ոօ1սմ6 հրամանագրով: Ֆայլի մեջ մակրոյի նկարագրությունը կարելի է գրել տեքստային որևէ խմբագրիչով (օրինակ՝ Nօէ6քaմ, ոչ Խ1օrօՏօfէ Wօrմ): Եթե ֆայլի մեջ կան «ավելորդ» մակրոնկարագրություններ, ապա 1ոօ1սմ6ից հետո կարելի է օգտագործել “PՍRՕԷ Հանունների ցուցակ »” հրամանագիրը, որով էլ այդ անուններով մակրոնկարագրությունները կչեղարկվեն։ Մակրոյի և պրոցեդուրայի տարբերությունը. 1. Մակրոյում կան պարամետրեր, իսկ պրոցեդուրայում չկան: 2. Պրոցեդուրայի կանչը մեքենայական հրաման է, մակրոյի կանչը` հրամանագիր: 3. Մակրոկանչի փոխարինումն ընդլայնումով` մակրոգեներացումը, կատարում է թարգմանիչը, իսկ պրոցեդուրայի կանչն իրականացվում է պրոցեսորի կողմից ծրագրի կատարման ժամանակ:
Օրինակ : 1ո1է1 մակրոնկարագրություն 1ո1է1 ԽՃՇRՕ PՍՏէ DՏ
ՃՕR ՃՃ, ՃՃ
PՍՏէ ՃՃ ԷNDԽ : 1ո1է2 մակրոնկարագրություն 1ո1է2 ԽՃՇRՕ մ_ո 1ո1է1 1FNF8 Հմ_ո» ԽՕՕ ՃՃ, մ_ո
ԽՕՕ DՏ, ՃՃ
ԷND1F ԷNDԽ Ծրագրի մեջ կարելի է գրել կա՛մ 1N111, կա՛մ դրան համարժեք 1N112, կա՛մ էլ 1N112 D414, եթե ունենք D414 անունով տվյալների սեգմենտ: Եթե մակրոնկարագրությունը պարունակում է նշիչ, ապա մակրոկանչը մեկ անգամից ավել օգտագործելու դեպքում կառաջանա սխալ. նշիչը կրկնվում է: Սխալից խուսափելու համար, մակրոյի նկարագրության մեջ` անմիջապես M44RO-ի տողից հետո, պետք է օգտագործել “ՄO44Մ Հնշիչների ցուցակ»” հրամանագիրը: Սրանով թարգմանչին ստիպում ենք, որ յուրաքանչյուր գեներացման ժամանակ նշիչները փոխվեն:
Կրկնման հրամանագրեր Կրկնման հրամանագրերը մակրոմիջոցների տարատեսակ են և ապահովում են տեքստի փոխարինման և կրկնման հնարավորություն։ Գոյություն ունեն չորս տիպի կրկնման հրամանագրեր.
1. Տեսքը REPT ամբողջատիպ արտահայտություն մարմին ENԾM
Այս հրամանագրով մարմինը կրկնվում է արտահայտության արժեքի չափով: Օրինակ RԷPT : կրկնել 3 անգամ
ՏէԼ ՃՃ, 1
ԷNDԽ Վերոհիշյալ RԷPT հրամանագիրը կփոխարինվի՝
ՏէԼ ՃՃ, 1
ՏէԼ ՃՃ, 1
ՏէԼ ՃՃ, 1
տեքստով։ 2. Տեսքը WH1ԼE արտահայտություն մարմին ENԾM
Այս հրամանագրով մարմինը կրկնվում է, քանի դեռ արտահայտության արժեքը հավասար չէ 0-ի: Օրինակ 1-0
Wէ1ԼԷ 1 Հ 4
D8 20 : կրկնել չորս անգամ 1-1-1 ԷNDԽ 3. Տեսքը 1RP պարամետր, Հարժեքների_ ցուցակ> մարմին ENԾM
Այս հրամանագրով թարգմանիչը գեներացնում է տեքստ՝ կրկնելով մարմինը արժեքների ցուցակի արժեքների քանակով և յուրաքանչյուր կրկնության ժամանակ մարմնում հանդիպող պարամետրի փոխարեն տեղադրելով ցուցակի հերթական արժեքը: Օրինակ 1RP է, Հ10, 30, 7» D8 է ENԾM 4. Տեսքը 1RPԸ արգումենտ, սիմվոլային տող մարմին ENԾM
Տողը սիմվոլների հաջորդականություն է: Եթե տողում, տառից ու թվանշանից բացի, նաև հանդիպում է այլ սիմվոլ, ապա Հ » նշանները պետք է դրվեն: Օրինակ 1. 1RՔ4 է, aԵ4 : D8 ‘a’ D8 ‘&է&’ : նույնն է ինչ սա D8 ‘Ե’ ԵNDM : D8 ‘4’ 2. 1RPՇ է, aԵ4 a&է D8 ԷNDԽ Կգեներացվի՝ aa D8 aԵ D8 a4 D8
3. 1RPՇ
է, 8Ճ ԽՕՕ Է&է&Ճ, 50
ԷNDԽ Կգեներացվի՝
ԽՕՕ ԽՕՕ
Է8Ճ, 50 ԷՃՃ, 50
EՃ1TM հրամանագիր Եթե մակրոգեներացման ժամանակ թարգմանիչը հանդիպում է ԵՍ11M հրամանագրին, ապա մակրոգեներացումն ավարտվում է:
Խնդիրներ և վարժություններ 1. Նկարագրել կրկնման հրամանագիր, որը լուծում է հետևյալ խնդիրը. ա) Dէ ռեգիստրում ստանալ ՃԼ, 8Լ, ՇԼ և DԼ ռեգիստրներում տրված թվերի գումարը, բ) զրոյացնել DWՕRD տիպի Ճ, 8 և Շ փոփոխականները, գ) D8 հրամանագրի միջոցով հիշողությունում 40 բայթի համար տեղ հատկացնել՝ դրանք սկզբնարժեքավորելով առաջին 40 կենտ թվերով (1, 3, 5, .., 79): 2. Ճ, Մ, 7 կրկնակի բառային փոփոխականների նկատմամբ հետևյալ գործողությունները նկարագրել աջ կողմում տրված մակրոների միջոցով (Լ-ը նշիչ է). ա) Ճ - Մ
: DԽՕՕ Ճ, Մ
բ) Ճ - Մ - 7
: DՃDD Ճ, Մ, 7
գ) Ճ - Մ - 7 : DՏՍ8 Ճ, Մ, 7 դ) Եթե Ճ !- Մ` անցնել Լ-ին
: DJNԷ Ճ, Մ, Լ
3. Գրել վերջնական ծրագրի տեքստը, որը կկառուցի մակրոգեներատորը՝ ըստ հետևյալ ծրագրային հատվածի.
ա) N ԷՕՍ 5
բ) 1RP Շ, Հ1NՇ Ճ, JԷ Լ»
1RP ՕP, ՀN, %N, N % N» Շ
ՃDD ՃՃ, ՕP
ԷNDԽ ԷNDԽ
գ) 1RP W, ՀՏW, ՀՃ, 2»» ԽՕՕ&W ԷNDԽ ե) 1RP T, ՀՃ8, Շ»
1RPՇ Ս, T
DW Ս, T&Ս, T&&Ս ԷNDԽ DW Ս, T&Ս ԷNDԽ
դ) 1RPՇ Շէ, Հ! % “ »
ՃDD ՃԼ, '&Շէ'
ԷNDԽ զ) 1RP Շ, ՀՃ, ԼԼ, Խ»
Շ ԷՕՍ Շ&Շ&ՇՇ
D8 'Շ&Շ&ՇՇ' ԷNDԽ
4. Նկարագրել DԷF Ճ, T, N, Օ մակրո, որը սահմանում է N հատ Օ մեծություններից կազմված Ճ զանգված: Զանգվածի տարրերի տիպը տրվում է T պարամետրով՝ T - 8-ն 8ՄTԷ տիպի է, T - W-ն WՕRD տիպի է, իսկ T - D-ն՝ DWՕRD տիպի: Գրել ծրագրի վերջնական տեքստը, որը կկառուցի մակրոգեներատորը՝ ըստ հետևյալ ծրագրային հատվածի. Ճ ԷՕՍ 4 DԷF Շ, 8, , ' " ' DԷF
W, W, Ճ - 1,ՀTՄPԷ Շ»
DԷF D, %Ճ - 1, %(TՄPԷ W) DԷF Ճ, 8, 1, Հ1, 2, 3» 5. Գրել ծրագիր, որը մուտքագրում է է, Խ և Տ թվերը և ստուգում է՝ արդյոք դրանք բավարարում են հետևյալ պայմաններին՝ 0 ≤ է ≤ 23, 0 ≤ Խ ≤ 59 և 0 ≤ Տ ≤ 59: Եթե բավարարում են, ապա ընդունելով այդ թվերը որպես օրվա որոշակի պահի՝ ժամ (է), րոպե (Խ) և վայրկյան (Տ)՝ ծրագիրը պետք է արտածի օրվա ժամը՝ 1 վայրկյանով ավելի: Ծրագրում սահմանել 2 մակրո, որոնցից մեկը կստուգի a ≤ Ճ ≤ Ե պայմանը, իսկ մյուսը՝ Ճ-ի արժեքը կավելացնի 1-ով, և, եթե Ճ » Ե՝ Ճ-ը կզրոյացնի: 6. Նշանով բայթային թվերի նկատմամբ հետևյալ գործողությունները նկարագրել ձախ կողմում տրված մակրոների միջոցով.
ա) Ճ8Տ R,7 : R - aԵՏ(7), որտեղ R-ը ռեգիստր է, 7-ը՝ փոփոխական, բ) ՏՍԽ 7, N : ՃՃ - 7 զանգվածի բայթային տարրերի գումարը (N » 0), գ) ԽՃՃ 7, N : ՃԼ - 7 զանգվածի N քանակով բայթային տարրերից մեծագույնի արժեքը: 7. Հետևյալ հրամանները սահմանել մակրոյի միջոցով. ա) PՍՏէ Լ (Լ-ը բառային փոփոխական է), բ) PՕP Լ (Լ-ը բառային փոփոխական է), գ) ՇՃԼԼ P (P - ն ո6ar պարամետրով պրոցեդուրա է), դ) RԷT N (մոտիկ վերադարձ պրոցեդուրայից), ե) ԼՕՕP Լ (Լ - ը նշիչ է): 8. Տրված է. Ճ DW 1234է Ճ ԽՃՇRՕ R, Ս ԽՕՕ R, Ս ԷNDԽ ԽՃՇRՕ R, Օ Ճ R, ՀՕ» ԷNDԽ Շ ԽՃՇRՕ R, Օ Ճ R, Օ ԷNDԽ Որոշել Ճէ և ՃԼ ռեգիստրների արժեքները ծրագրի հետևյալ հատվածի կատարման արդյունքում.
Ճէ, Հ8ՄTԷ PTR Ճ»
Շ
ՃԼ, Հ8ՄTԷ PTR Ճ»:
9. Սահմանել ԽՃՃ2 Խ, Ճ, Մ մակրոն՝ Խ - ԽՃՃ(Ճ, Մ)-ը հաշվելու համար: Ապա դրա հիման վրա սահմանել. ԽՃՃ3 Խ, Ճ, Մ, 7 մակրոն՝ Խ - ԽՃՃ(Ճ, Մ, 7)-ը հաշվելու համար, որտեղ Խ, Ճ, Մ, 7-ը նշանով բայթային փոփոխականներ են:
Գրել ԽՃՃ3 Ճ, Հ8ՄTԷ PTR 8», Շ - 1, D մակրոհրամանի մակրոընդլայնումը: 10. Նկարագրել Տ1ՕN Ճ (Ճ-ը բայթային, բառային կամ կրկնակի բառային փոփոխական է) մակրոն, որը ՃԼ ռեգիստրում ստանում է 1, եթե Ճ » 0, ստանում է 0, եթե Ճ - 0, և -1, եթե Ճ Հ 0: Գրել մակրոընդլայնումներ Տ1ՕN W և Տ1ՕN D մակրոհրամանների համար, որտեղ W-ն բառային փոփոխական է, իսկ D-ն՝ կրկնակի բառային փոփոխական: 11. Նկարագրել NՍԼԼ Ճ, N, T մակրոն (Ճ-ը N քանակով բայթային տարրերից կազմված զանգված է, N » 0, T - F1RՏT, եթե զրոյացվում է զանգվածի առաջին տարրը, T - ԼՃՏT, եթե զրոյացվում է զանգվածի վերջին տարրը): Գրել մակրոընդլայնում NՍԼԼ Ճ, 100, ԼՃՏT մակրոհրամանի համար: 12. Նկարագրել ՏՍԽ Ճ մակրոն (Ճ-ը զանգված է՝ կազմված k » 0 քանակով բայթային փոփոխականներից), որը հաշվում է Ճ զանգվածի զույգ տարրերի գումարը և գրանցում DՃ ռեգիստրում: Գրել ՏՍԽ ՀՃ, 8, Շ» մակրոհրամանի մակրոընդլայնումը: 13. Նկարագրել Խ1N Ճ մակրոն (Ճ-ը զանգված է՝ կազմված k » 0 քանակով բայթային փոփոխականներից), որը գտնում է Ճ զանգվածի ամենափոքր տարրը և գրանցում ՃԼ ռեգիստրում: Գրել Խ1N ՀՃ, 8, Ճ» մակրոհրամանի մակրոընդլայնումը:
ԸՆԴՀԱՏՈՒՄ
Ընդհատումը իրադարձություն է, որը ստիպում է պրոցեսորին դադարեցնել իր հերթական հրամանի կատարումը և ղեկավարությունը տալ ընդհատումը մշակող ենթածրագրին։ Իրական ռեժիմում առանձնացնում են ընդհատումների երկու տեսակ՝ ծրագրային (1NT N) և ապարատային։ Ապարատային ընդհատման օրինակ է ստեղնի սեղմումը, մկնիկի դիրքի փոխելը և այլն։ Պաշտպանված ռեժիմում ընդհատումների տեսակին ավելանում է ևս մեկը՝ բացառություն (1NT հրամանի կատարման մասին տե՛ս «Ղեկավարությունը փոխանցող հրամաններ» բաժինը)։ 1NT հրամանի միջոցով հասանելի են 81ՕՏ-ի և DՕՏ-ի օգտակար ենթածրագրեր։
1NT 21հ ընդհատման մի քանի ֆունկցիաներ Իրական ռեժիմում ասեմբլերով մուտքի/ելքի կազմակերպման համար կարելի է օգտվել DՕՏ ընդհատումներից։ 21է ընդհատումը բազմաֆունկցիոնալ է, և նրա ֆունկցիոնալությունը որոշվում է Ճէ ռեգիստրի արժեքով։ 1NT 21հ ՃH - 1 ԾՕՏ Սիմվոլի ներածում ստեղնաշարից Մուտք չկա Վերադարձ ՃԼ-ում ներածված սիմվոլն է (այսինքն՝ սիմվոլի ՃՏՇ11 կոդը) Օրինակ ԽՕՕ Ճէ, 1 INT 21H : համակարգիչը սպասում է մինչև ստեղնաշարից : որևէ սիմվոլ ներածվի և ներածված սիմվոլը գրում : է ՃԼ ռեգիստրում օրինակ՝ ՛Ճ՛ սիմվոլը սեղմելու : դեպքում ՃԼ ռեգիստրը կընդունի 41հ արժեք, : այսինքն` ՛Ճ՛ սիմվոլի ՃՏՇ11 կոդը
1NT 21հ ՃH - 2 կամ ՃH - 6 ԾՕՏ Սիմվոլի արտածում էկրան Մուտք – DԼ ռեգիստրում արտածվող սիմվոլն է (այսինքն՝ սիմվոլի ՃՏՇ11 կոդը) Վերադարձ չկա Օրինակ ԽՕՕ Ճէ, 2 ԽՕՕ DԼ, ’Ճ’ 1NT 21է : էկրանին կարտածվի ՛Ճ՛ սիմվոլը 1NT 21հ ՃH - 9 ԾՕՏ Սիմվոլային տողի արտածում էկրան Մուտք DՏ:DՃ-ում արտածվող սիմվոլային տողի հասցեն է: Տողը պետք է ավարտվի ՛$՛-ով: Վերադարձ չկա Օրինակ .DՃTՃ Խ7Տէr1ոջ D8 “է611օ$”
ԽՕՕ Ճէ, 9
ԼԷՃ DՃ, Խ7Տէr1ոջ 1NT 21է : էկրանին կարտածվի “է611օ” 1NT 21հ ՃH - 10 ԾՕՏ – Սիմվոլային տողի մուտք ստեղնաշարից Մուտք DՏ:DՃ - ներածվող սիմվոլային տողի հասցեն Վերադարձ DՏ:DՃ - ներածված սիմվոլային տողը Ներածում է սիմվոլային տող (մինչև ՛ԷNTԷR՛ ստեղնի ներածումը) և պահում այն DՏ:DՃ-ով որոշվող տողում, որի առաջին բայթը մինչև ներածումը պետք է պարունակի ներածվող տողի սիմվոլների առավելագույն քանակը (ներառյալ ՛ԷNTԷR՛-ը), իսկ երկրորդ բայթը՝ ներածումից հետո պարունակում է ներածված տողի սիմվոլների փաստացի քանակը (առանց ՛ԷNTԷR՛-ի):
Օրինակ Ներածել սիմվոլային տող՝ առավելագույնը 10 սիմվոլ։ .DՃTՃ N ԷՕՍ 10 Խ7Տէr1ոջ D8 N-1, 2, N - 1 մսք (2) .ՇՕDԷ
ԽՕՕ Ճէ, 10
ԼԷՃ DՃ, Խ7Տէr1ոջ 1NT 21է : „Ճ8Շ” մուտքագրելուց : հետո Խ7Տէr1ոջ - 1 հասցեում կգրվի 3 : |Խ7Տէr1ոջ - 2| ‘Ճ’ : |Խ7Տէr1ոջ - 3| ‘8’ : |Խ7Տէr1ոջ - 4| ‘Շ’ : |Խ7Տէr1ոջ - 5| 13 (Էոէ6r-ի կոդը) 1NT 21հ – ՃH - 4ԸH ԾՕՏ Ծրագրի աշխատանքի ավարտ Մուտք – ՃԼ - ավարտի կոդ Վերադարձ – չկա Կազմակերպում է ծրագրի աշխատանքի ավարտը և ղեկավարությունը փոխանցում է օպերացիոն համակարգին: Ավարտի կոդի 0 արժեքը նշանակում է ծրագրի նորմալ ավարտ:
Խնդիրների լուծման օրինակներ 1. Ներածել 1 սիմվոլ, և եթե այն մեծատառ է, արտածել համապատասխան փոքրատառը, հակառակ դեպքում արտածել “1է 1Տ ոօէ a օaք1էa1 16էէ6r” տողը:
.ԽՕDԷԼ ՏԽՃԼԼ
.ՏTՃՇՃ 100հ .DՃTՃ ո6ՏՏaջ6 D8 ‘Tհ6r6 1Տ ոօէ a օaք1էa1 16էէ6r$’ .ՇՕDԷ ԽՃ1N: ԽՕՕ
ՃՃ, (DՃTՃ
ԽՕՕ DՏ, ՃՃ ԽՕՕ Ճէ, 1 1NT 21է ՇԽP ՃԼ, ’Ճ’ J8 ոօ_16էէ6r ՇԽP ՃԼ, ’7’ JՃ ոօ_16էէ6r ՕR ՃԼ, 32 : ՃDD ՃԼ, 32 ԽՕՕ Ճէ, 2 ԽՕՕ DԼ, ՃԼ 1NT 21է JԽP f1ո1Տհ ոօ_16էէ6r: ԽՕՕ Ճէ, 9 ԼԷՃ DՃ, ո6ՏՏaջ6 1NT 21է F1ո1Տհ: ԽՕՕ ՃՃ, 4Շ00է 1NT 21է ԷND ԽՃ1N
2. Ներածել սիմվոլային տող: Առանձնացնել թվանշանների ենթատող և արտածել այն էկրանին նոր տողի սկզբից: Թվանշան չլինելու դեպքում արտածել հաղորդագրություն:
.ԽՕDԷԼ ՏԽՃԼԼ
.ՏTՃՇՃ 100հ .DՃTՃ ո6ՏՏaջ6 D8 6ոէr D8 Տէr1ոջ D8 ՏսԵՏէr1ոջ D8 .ՇՕDԷ ԽՃ1N: ԽՕՕ ԽՕՕ ԽՕՕ ԼԷՃ 1NT ԽՕՕ ԼԷՃ 1NT ՃՕR ԽՕՕ ԽՕՕ ՃՕR
ՇՄRՇԼԷ: ԽՕՕ
ՇԽP J8 ՇԽP JՃ ԽՕՕ 1NՇ ո62է: 1NՇ
‘Tհ6r6 1Տ ոօէ a ոսոԵ6r$’ 10,13,’$’ 10,11 մսք(2) 10 մսք(2)
ՃՃ, (DՃTՃ
DՏ, ՃՃ Ճէ, 10 DՃ, Տէr1ոջ 21է Ճէ, 9 DՃ, 6ոէr 21է ՇՃ, ՇՃ ՇԼ, Տէr1ոջ|1| Տ1, 2 D1, D1 ՃԼ, Տէr1ոջ|Տ1| ՃԼ, ’0’ ո62է ՃԼ, ’9’ ո62է ՏսԵՏէr1ոջ|D1|, ՃԼ D1 Տ1
ոօ_ոսոԵ6r: f1ո1Տհ:
ԼՕՕP TԷՏT J7 ԽՕՕ ԼԷՃ 1NT JԽP ԼԷՃ 1NT ԽՕՕ 1NT ԷND
ՇՄRՇԼԷ D1, D1 ոօ_ոսոԵ6r Ե7է6 քէr ՏսԵՏէr1ոջ|D1|, ’$’ DՃ, ՏսԵՏէr1ոջ 21է f1ո1Տհ DՃ, ո6ՏՏaջ6 21է ՃՃ, 4Շ00է 21է ԽՃ1N
Խնդիրներ և վարժություններ 1. Գրել ծրագիր, որն արտածում է լատինական այբուբենի տառերը հետևյալ հաջորդականությամբ՝ Ճa8Ե…72: 2. Ներածել 2 սիմվոլային տող: Ստանալ և արտածել նոր տող, որտեղ առաջին տողի բոլոր ‘Ճ’ սիմվոլների փոխարեն տեղադրված է երկրորդ տողը: Առաջին տողում ‘Ճ’ սիմվոլ չլինելու դեպքում արտածել հաղորդագրություն: 3. Ներածել 20 սիմվոլներից բաղկացած միաչափ զանգված: Ստեղծել սիմվոլային տող զանգվածի տառ չհանդիսացող տարրերից և արտածել այն էկրանին նոր տողի սկզբից: Եթե զանգվածի մեջ միայն տառեր են, արտածել հաղորդագրություն այդ մասին: 4. Ներածել սիմվոլային (5 2 4) չափի երկչափ զանգված: Էկրանին նոր տողի սկզբից արտածել զանգվածի |35հ, 75հ| միջակայքին պատկանող ՃՏՇ11 կոդով սիմվոլները: Այդպիսի սիմվոլներ չլինելու դեպքում արտածել հաղորդագրություն:
ՀԱՎԵԼՎԱԾ 1
ՏՎՅԱԼՆԵՐԻ ՆԵՐԿԱՅԱՑՈՒՄԸ ԷՀՄ-ՈՒՄ
Թվարկության դիրքային համակարգեր Հայտնի է, որ թվի գրառման մեջ օգտագործվում են թվանշաններ: Գոյություն ունեն հաշվարկման ոչ դիրքային և դիրքային համակարգեր: Ոչ դիրքային համակարգերում թվանշանի արժեքը հաստատուն է և իր դիրքից կախված չէ: Այդպիսի հաշվարկման համակարգի օրինակ է հայերեն տառերով թվերի գրառումը (ա-1, բ-2, …, թ-9, ի-10, ժ- 20, իգ-23, ռթ-1009), հռոմեական համակարգը ( 1-1, 11-2, 111-3, …, Ճ-10, ՃՃ-20): Դիրքային համակարգերում թվանշանի դիրքից կախված այն որոշում է տարբեր արժեքներ: Հաշվարկման դիրքային համակարգի օրինակ է հանրածանոթ հաշվարկման 10-ական համակարգը, որտեղ օրինակ 575 թվի մեջ առաջին 5-ը որոշում է 500 միավոր, իսկ վերջին 5-ը՝ 5 միավոր: Կդիտարկենք հաշվարկման դիրքային համակարգեր: Դրանցում օգտագործվող թվանշանների քանակը կանվանենք հաշվարկման համակարգի հիմք, իսկ հաշվարկման համակարգը՝ հաշվարկման «հիմք»-ական համակարգ: Հաշվարկման ք-ական համակարգ անվանում են ք հատ սիմվոլներով (որոնց անվանում են թվանշաններ) և որոշակի օրենքներով թվերի գրառման կարգը: ք-ն բնական թիվ է և հավասար չէ 1-ի (1 թվանշանով թվի գրառումը անիմաստ է): Որպես թվանշան՝ ընդունված է օգտագործել 0, 1, 2, … ք ≤ 10-ի դեպքում, իսկ ք » 10-ի դեպքում՝ 0, 1, …, 9, Ճ, 8, …, որտեղ Ճ-ն 10 միավոր պարունակող թվանշանն է, 8-ն՝ 11 և այլն: Օրինակ` հաշվարկման 3-ական համակարգում թվանշաններն են 0, 1, 2, իսկ հաշվարկման 12-ական համակարգում՝ 0, 1, …, 9, Ճ, 8: Հայտնի է, որ յուրաքանչյուր Ճ թիվ կարելի է միակ ձևով ներկայացնել P թվի աստիճանների տեսքով՝
Ճ
-
որտեղ`
∙
+ +… +
≥2,
,
∙
+ ⋯+
∙
∙
+
+
∙
+
∙
…
= 0, 1, … ,
− 1 ( = 0, 1, … , ;
= 1, 2, … ,
Այդ դեպքում Ճ թիվը P-ական համակարգում գրում են հետևյալ ձևով՝ ⋯ , …)P, Ճ-( ⋯ թվի թվանշանները գրվում են փակագծերում և փակվող փակագծից հետո, որպես ներքևի ինդեքս՝ գրվում է հաշվարկման համակարգի հիմքը (որպեսզի տարբերվի, թե թիվը որ համակարգում է գրված): Բացառություն է կազմում 10-ական համակարգը:
Թվերի թարգմանությունը P-ական համակարգից Օ-ական համակարգի Ամբողջ թվերի թարգմանություն Դիցուք, A ամբողջ թիվը P-ական համակարգի թիվ է, և P-ական համակարգում կարող ենք կատարել գործողություններ։ Ենթադրենք, A թիվը Օ-ական համակարգում ունի հետևյալ տեսքը. ∙ = 0, 1, … ,
+
∙
+ ⋯+
∙
+
;
− 1 անհայտ գործակիցները գտնելու համար
գրենք. =
∙
+
∙
+ ⋯+
∙
+
; և
հավասարության երկու կողմը բաժանենք Օ-ի վրա, որտեղ Օ-ն ձախ կողմում գրված է P-ական համակարգով, կստանանք.
=
∙
+
∙
+
;
Հավասարությունից հետևում է. =
∙
+
∙
+ ⋯+
կստանանք a -ն։ a -ն
;
=
; որտեղից
բաժանումից ստացված մնացորդի
արժեքն է (a -ն կստանանք որպես P-ական համակարգի թիվ, այն անհրաժեշտ է փոխարինել Օ-ական համակարգի թվանշանով։) Կոտորակային մասերի հավասարությունից կորոշենք a -ն։ Այժմ նշանակենք
A =
,
և նույնը կատարենք A -ի հետ, կստանանք a -ը։ Եվ այսպես կրկնելով նշված քայլերը ո անգամ՝ կստանանք բոլոր անհայտ գործակիցները։ Նշենք, որ ո-ի արժեքը պարտադիր չէ նախօրոք որոշել. այն ստացվում է ավտոմատ՝ նշված գործողությունները շարունակելով այնքան, մինչև ստացվի զրո քանորդ։
15510 : 2 = 77
7710 : 2 = 38
3810 : 2 = 19
1910 : 2 = 9
910 : 2 = 4
410 : 2 = 2
210 : 2 = 1
110 : 2 = 0
15510 = 1 0
0 1 1 0 1 1
Նկար 1. 155 տասական թիվը ներկայացնել 2-ական համակարգով։
P-ականից Օ-ական համակարգ անցնելիս, եթե մեկը մյուսի աստիճան է, ապա անցումը կարելի է կատարել ավելի հեշտ պետք է եղանակով: Անցում 16-ական համակարգից 2-ականի։ 16-ականից 2-ականի անցնելու համար անհրաժեշտ է 16-ականի յուրաքանչյուր թվանշան փոխարինել իր 2-ական համարժեքով ըստ հետևյալ աղյուսակի. 16-ական
2-ական
16-ական Ճ Շ D Է F
2-ական
Անցում 8-ական համակարգից 2-ականի։ 8-ականից 2-ականի անցնելու համար անհրաժեշտ է յուրաքանչյուր թվանշանը փոխարինել իր երկուական համարժեքով. 8-ական
2-ական
Անցում 2-ական համակարգից 8-ականի։ 2-ական համակարգից 8-ականի անցնելու համար անհրաժեշտ է աջից ձախ 2-ական թվանշանները բաժանել եռյակների` անհրաժեշտության դեպքում ձախից 0-ներ ավելացնելով, որից հետո յուրաքանչյուր եռյակ փոխարինել իր 8-ական համարժեքով։
Անցում 2-ական համակարգից 16-ականի։ 2-ական համակարգից 8-ականի անցնելու համար անհրաժեշտ է աջից ձախ 2-ական թվանշանները բաժանել քառյակների՝ անհրաժեշտության դեպքում ձախից 0-ներ ավելացնելով, հետո յուրաքանչյուր քառյակ փոխարինել իր 16-ական համարժեքով։
Կոտորակային թվերի թարգմանություն Ենթադրենք 0 ≤ =
Ընդունենք.
<1 ∙
+
∙
+ ⋯+
∙
(1)
Ենթադրենք P-ական համակարգի մեջ կոտորակային թվի թվանշանների քանակը ո է, այսինքն՝ ճշտությունը՝ է։ Վերցնելով Օ-ո ական համակարգում ճշտությունը Օ ` = , կպահպանենք ճշտությունը՝ որտեղից. = =
∙
∙
, քանի որ
∈
վերցնենք
(||" - նշանակում է վերցնել ամբողջ մասը՝ արժեքը կլորացնելով դեպի վեր)
Եթե P - 10, ապա
=
։
( = 1, 2, … , ) անհայտ գործակիցները գտնելու համար (1) հավասարության երկու կողմը բազմապատկենք Օ-ով։ ∙
≈
+
∙
+ ⋯+
∙
Հավասարությունից հետևում է. ∙ ∙
= + ⋯+
=
=
-ը նորից բազմապատկելով Օ-ով, կստանանք ։ Նույնը կրկնելով ո անգամ՝ կստանանք բոլոր անհայտ գործակիցները։ Օրինակ 0.625 թիվը ներկայացնել 2-ական համակարգով։ Ն 2=
Կիրառելով 10-ական ալգորիթմը՝ կստանանք.
-
= 10 ( 2 ≈ 0.3) համակարգից
.625 " 2 - 1.250
Ամբողջ մասը՝ 1
0.250 " 2 - 0.500
Ամբողջ մասը՝ 0
0.500 " 2 - 1.000
Ամբողջ մասը՝ 1
0.000 " 2 - 0.000
Ամբողջ մասը՝ 0
0.000 " 2 - 0.000
Ամբողջ մասը՝ 0
0.000 " 2 - 0.000
Ամբողջ մասը՝ 0
0.000 " 2 - 0.000
Ամբողջ մասը՝ 0
0.000 " 2 - 0.000
Ամբողջ մասը՝ 0
0.000 " 2 - 0.000
Ամբողջ մասը՝ 0
0.000 " 2 - 0.000
Ամբողջ մասը՝ 0
2-ականի
0.62510 - 0.1 0100000002
անցման
Երկուական թվերի գումարում և հանում Երկուական թվերի գումարումը և հանումը նման են տասական թվերի գումարմանը և հանմանը, տարբերությունն այն է միայն, որ գումարման և հանման համար օգտագործվում են այլ աղյուսակներ։ Գումարման աղյուսակն է. 8օսէ
Ճ - 7 - 8օսէ
8օսէ
Որտեղ 2–ը և 7-ը գումարելիների թվանշաններ են, իսկ 8օսէ-ը` փոխանցումն է հաջորդ կարգ։ Հանման աղյուսակը կլինի. 81ո
2 - 7 - 81ո
8օսէ
Որտեղ 2-ը և 7-ը գումարելիների թվանշաններ են, 81ո-ը նախորդ կարգից եկած պարտքն է, իսկ 8օսէ-ը՝ հաջորդ կարգ փոխանցվող պարտքը։ Օրինակ Երկուական գումարում և հանում 8օսէ
01011 1100
81ո
0001 1100
Ճ
01011 1110
Ճ
1111 0101
Մ
01000 1101
Մ
0010 1110
Ճ-Մ
1100 0111
Ճ - Մ 10100 1011
Բազմապատկման աղյուսակն է.
2"7
Առանց նշանի ամբողջ թվերի ներկայացումը ԷՀՄ-ում N երկուական թվանշանների (բիթերի) օգնությամբ կարելի է ներկայացնել [0, 2 ] միջակայքի բոլոր ամբողջ թվերը։ N - 8 դեպքում՝ |0, 255| N-16 դեպքում՝ |0, 65535|
Առանց նշանի թվերն օգտագործվում են հասցեների ներկայացման համար, ինչպես նաև ավելի մեծ միջակայքի և ճշտությամբ թվերի հետ գործողություններ կատարելու համար։
Նշանով ամբողջ թվերի ներկայացումը ԷՀՄ-ում Նշանով ամբողջ թվերի ներկայացման համար օգտագործվում են ուղիղ, հակադարձ (օո6’Տ օօոք16ո6ոէ), լրացուցիչ (էwօ’Տ օօոք16ո6ոէ) և շեղումով կոդեր։ ո երկուական թվանշանների օգնությամբ ուղիղ կոդով նշանով ամբողջ թվերը կարող են գտնվել [−( 2 − 1), − 1] միջակայքում։ Ավագ թվանշանը նշանի համար է, իսկ մյուս թվանշանները ցույց են տալիս թվի բացարձակ արժեքը։ Նշանի թվանշանի 0-ն (սովորաբար) ցույց է տալիս “-”, 1-ը “-“: Ուղիղ կոդը ամբողջ թվերի ներկայացման համար հազվադեպ է օգտագործվում։ Թիվը հակադարձ կոդով ներկայացնելիս միջակայքը հետևյալն է՝ [−( 2 − 1), 2 − 1]։ Ողիղ և հակադարձ կոդերի դեպքում ունենք երկու հատ 0՝ ‘-0’ և ‘-0’: [ ]
(2 − 1)
=2 −1+ [ ]
=
, 2 −1+ ,
≥0 ≤0
Հակադարձ կոդը ուղիղ կոդին զուգահեռ օգտագործվում է թվաբանական գործողություններ կատարելու համար։ Գումարման և հանման գործողությունները հակադարձ կոդով կատարելը ավելի հեշտ է, իսկ ուղիղ կոդով հարմար է կատարել բազմապատկում և բաժանում։ Լրացուցիչ կոդով կարելի է ներկայացնել [−2 , 2 − 1] միջակայքի թվերը։ Ճ ամբողջ թվի լրացուցիչ կոդը որոշվում է հետևյալ ձևով.
[ ] =2 +
[ ] =
, 2 + ,
≥0 <0
Լրացուցիչ կոդի դեպքում ունենք 0-ի մեկ ներկայացում։ Լրացուցիչ կոդը հարմար է գումարման, հանման համար։ Լրացուցիչ կոդը ստանալու համար կարելի է հետևել հետևյալ կանոններին. ստանալ թվի երկուական ներկայացումը, շրջել բիթերը (հակադարձ կոդ), գումարել մեկ: Օրինակ 1 Սկզբնական թվից լրացուցիչ կոդի ստացումը. 310 - 000000112 -3լր - 111111002 - 12 -111111012 - -3լր Օրինակ 2 Լրացուցիչ կոդից սկզբնական թվի ստացումը. -3լր - 111111012 310 - 000000102 - 12 -000000112 - 310 Շեղումով կոդն օգտագործվում է միայն նշանով թվերի համար։ Նշանով ամբողջ թիվը հանդես է գալիս |Ճ|շեղ - Ճ -Խ: Սովորաբար շեղումով կոդի դեպքում Խ-ը վերցնում են Ճ նշանով թվի փոփոխման միջակայքի փոքրագույն արժեքի բացարձակ արժեքը։ Շեղումով կոդն օգտագործում են իրական թվերը ներկայացնելիս որպես կարգաթիվ։ Ինթել 286 պրոցեսորներում նշանով թվերը ներկայացվում են լրացուցիչ կոդով։ 8086 պրոցեսորներում նախատեսված են գործողություններ 8-բիթանոց և 16-բիթանոց ամբողջ թվերի հետ, իսկ 80386-ից սկսած՝ կարող են օգտագործվել 32-բիթանոց ամբողջ թվեր (նշանով և առանց նշանի)։ Սահող կետով թվերի հետ գործողությունների կատարումն արագացնելու համար ստեղծված է կից պրոցեսոր
(Շօքrօօ6ՏՏօr) Ինթել 8087, որը կարող է օգտագործվել 8086/8088 կողմից (80286-ի համար 80287, 80386-ի համար 80387, 80486-ից սկսած՝ FPՍ (f1օaէ1ոջ Pօ1ոէ Սո1է), որը կենտրոնական պրոցեսորի բաղկացուցիչ մասն է)։ Լրացուցիչ կոդով ներկայացված թվերի համար ճիշտ է հետևյալ պնդումը. |2 - 7|լր - (|2|լր - |7|լր) ոօմ 2ո եթե 2–ի, 7–ի և (2 - 7)-ի արժեքները գտնվում են [−2 միջակայքում։ Օրինակ Լրացուցիչ կոդով 1-բայթանոց թվերի գումարում. Ճ - 1010 Y - -310
, 2
− 1]
|Ճ|լր - 0000 1010 |Մ|լր - 1111 1101 -----------1 0000 0111 2 -ը դեն է նետվում
Հակադարձ կոդով ներկայացված թվերի համար ճիշտ է հետևյալը՝ |2 - 7|հակ - (|2|հակ - |7|հակ) ոօմ (2ո – 1) (նշենք, որ 2ո - 1 ոօմ (2ո -1)) Այս դեպքում ավագ կարգից առաջ եկած փոխանցումը գումարվում է կրտսեր կարգին։ Օրինակ Հակադարձ կոդով 1-բայթանոց թվերի գումարում. Ճ - 1010
|Ճ|հակ - 0000 1010
Y - -310
|Մ|հակ - 1111 1100 -----------1 0000 0110 ------------0000 0111
Բիթ, բայթ, բառ, կրկնակի բառ Տվյալների փոքրագույն միավորը համակարգչի համար բիթն է։ Բիթը (Ե1է/Ե1ոar7 մ1ջ1է - նշանակում է երկուական թվանշան) կարող է ընդունել երկու արժեք՝ 0 կամ 1։ Համակարգիչները սովորաբար աշխատում են բիթերի որոշակի քանակության հետ։ Ծրագրի համար հասանելի փոքրագույն միավորը բայթն է, որը 8 բիթերի համախմբություն է։ Բիթերը բայթում սովորաբար համարակալվում են 0-7։
Բիթերի համարակալումը բայթում Զրո բիթը կրտսեր բիթն է (1օw օrմ6r Ե1է օr 16aՏէ Տ1ջո1f1օaոէ Ե1է), իսկ 7-րդ բիթը՝ ավագ (hi9h o74օ7 Եit օr ւo5t 5i9ոifiոճոt Եit)։ 4 բիթերի համախմբությանը անվանում են կիսաբայթ (ո1ԵԵ16)։ Բառը 16 բիթերի համախմբությունն է։ Բիթերը համարակալվում են 0 - 15, որտեղ 0-ն կրտսեր բիթն է, իսկ 15-րդը՝ ավագը։ 0 - 7 բիթերին անվանում են կրտսեր բայթ, իսկ 8 - 15 բիթերին՝ ավագ բայթ։
Կրկնակի բառը երկու բառերի համախումբ է։
Երկուական կոդավորված 10-ական (BԸԾ) թվերի ներկայացումը 10-ական թվերի համար օգտագործվում են փաթեթավորված և ոչ փաթեթավորված ֆորմատներ։ Ոչ փաթեթավորված ֆորմատի դեպքում յուրաքանչյուր տասական թվանշան ներկայացվում է 1 բայթում, որի ավագ կիսաբայթը 0000 է, իսկ կրտսերը թվանշանի 8ՇD- երկուական կոդն է։ Փաթեթավորված ֆորմատի դեպքում 1 բայթում տեղավորվում է 2 10-ական թվանշան։
Օրինակ 1710 - 0000 0001 0000 01118ՇD ՝ ոչ փաթեթավորված ֆորմատ, : 1710 = 0001 01118ՇD
Իրական թվերի ներկայացումը ( 1EEE ստանդարտ) Սահող կետով կամ գիտական գրառումը օգտագործվում է, երբ անհրաժեշտ է հաշվարկներ իրականացնել շատ մեծ կամ շատ փոքր թվերի հետ: Օրինա -0.35790210-6 (ներկայացվում է նաև որպես -3.579Է-6)
Երկուական համակարգի սահող կետով գրառումը կազմված է 3 մասերից՝ 1. նշանի բիթ ( “0” ոչ բացասական թվերի համար (-), “1”-ը՝ բացասական (-) թվերի համար), 2. կարգաթիվ (62քօո6ոէ), 3. մանտիսա: Նշում Նորմալիզացված սահող կետով գրառման մեջ մանտիսան (այսինքն՝ մանտիսայի ավագ բիթը) պետք է սկսվի 1-ով և ենթադրվում է, որ կետը պետք է լինի մանտիսայից ձախ։ Այժմ իրական թվերի ներկայացման համար օգտագործվում է 1ԷԷԷ 754 (1ոՏէ1էսէ6 օf Է16օէr1օa1 aոմ Է16օrօո1օՏ Էոջ1ո66rՏ) ստանդարտը։ Իրական թվերը ներկայացվում են որպես կարճ իրական (4 բայթ), երկար իրական (8 բայթ) և ընդլայնված/աշխատանքային իրական (10 բայթ)։
Նկար 2. Կարճ իրական (սովորական ճշտությամբ) սահող կետով թվի ֆորմատը
Նկար 3. Երկար իրական (կրկնակի ճշտությամբ) սահող կետով թվի ֆորմատը
Նկար 4. Ընդլայնված իրական (կրկնակի ընդլայնված ճշտությամբ) սահող կետով թվի ֆորմատը
Այս ֆորմատներով իրական թվերի ներկայացման մեջ մանտիսան տրվում է ուղիղ կոդով, նորմալիզացված, որի բացարձակ արժեքը գտնվում է |1, 2) միջակայքում։ 0 թվի ներկայացման համար կարգաթիվը (6) զրո է, մանտիսայի կոտորակային մասը ևս զրո է (f)։ Կարող են օգտագործվել դրական զրո և բացասական զրո, այսինքն` զրոյի համար ունենք (-1)Տ.0 ։ Իրական թվերի միջակայքը որոշվում է 6-ի փոփոխման միջակայքով։ Սովորական ճշտության դեպքում՝ 0 < < 255, կրկնակի ճշտության դեպքում՝ 0 < < 2047 , իսկ ընդլայնված ճշտության
դեպքում՝ 0 ≤ < 32767: Կարգաթվի (6) սահմանային արժեքները հատուկ դեպքեր են։ Ներկայացված սահող կետով թվի արժեքը (v) որոշվում է հետևյալ կերպ. եթե 0 Հ 6 Հ 255, ապա թիվը կլինի՝ = (−1) ∙ 2 ∙ (1. ), եթե e = 0, f ≠ 0, ապա թիվը կլինի՝ = (−1) ∙ 2 ∙ (0. ), եթե e = 0, f = 0, ապա թիվը կլինի՝ = (−1) ∙ 0, եթե e = 255, f = 0, ապա թիվը կլինի՝ = (−1) ∙ (անվերջություն), եթե 6 - 255, f ≠ 0, ապա թիվը կլինի՝ NaN (Nօէ a NսոԵ6r), եթե 0 Հ 6 Հ 2047, ապա թիվը կլինի՝ = (−1) ∙ 2 ∙ (1. ); (−1) եթե 6 - 0, f ≠ 0, ապա թիվը կլինի՝ = ∙2 ∙ (0. ); եթե 6 - 0, f - 0, ապա թիվը կլինի՝ = (−1) ∙ 0, եթե 6 - 2047, f - 0, ապա թիվը կլինի` = (−1) ∙ (անվերջություն), եթե 6 - 2047, f ≠ 0, ապա թիվը կլինի՝ NaN (Nօէ a NսոԵ6r), եթե 0 ≤ 6 Հ 32767, ապա թիվը կլինի՝ = (−1) ∙ 2 ∙ ( . ); եթե 6 - 32767, f - 0, ապա թիվը կլինի՝ = (−1) ∙ (անվերջություն), եթե 6 - 32747, f ≠ 0, ապա թիվը կլինի՝ NaN (Nօէ a NսոԵ6r), Օրինակ 1 Որոշել, թե 10-ական որ թվի ներկայացումն է հետևյալ 1ԷԷԷ ստանդարտով տրված 32-բիթանոց սահող կետով թիվը։ 0 10101100 100101000000000000000 (Բացատանիշերը բաժանում են նշանի բիթը, կարգը և մանտիսան): Քանի որ նշանի բիթը 0 է, իրական թիվը դրական է։ Կարգի բիթերը 10101100 ներկայացնում են առանց նշանի 17210 , հետևաբար կարգը կլինի՝ 172 - 127 - 4510: Մանտիսայի բիթերն են 100101000000000000000, որը ներկայացնում է.
2-1 - 2-4 -2-6 - 0.5781125 Հետևաբար իրական թիվը կլինի՝ 1. 57811252245 : Օրինակ 2 Որոշել, թե 10-ական որ թվի ներկայացումն է հետևյալ 1ԷԷԷ ստանդարտով տրված 32-բիթանոց սահող կետով թիվը։ 1 00000000 01010000000000000000000 Քանի որ նշանի բիթը 1 է, թիվը բացասական է։ Կարգի բիթերը 0-ներ են, հետևաբար կարգը -126 է։ Մանտիսայի բիթերն են 01010000000000000000000 - 2-2 - 2-4 - 0.3125: Հետևաբար իրական թիվը կլինի՝ -0.312522-126: Օրինակ 3 Ներկայացնել 0.5 թիվը կարճ իրական սահող կետով (վերջնական արդյունքը ներկայացնել 16-ական համակարգով)։ 0.5 = 0.1 = 1.0 ∙ 2 = (−1) ∙ 2 ∙ (1.0) Այստեղ՝ 6 - -1 - 127 - 126 Այսինքն՝ Տ - 0, 6 - 126, f - 0 Պատասխան՝ 0011 1111 0000 0000 0000 0000 0000 00002 - 3F00 000016 Օրինակ 4 Ներկայացնել -1.25 թիվը կարճ իրական սահող կետով (վերջնական արդյունքը ներկայացնել 16-ական համակարգով)։ −1.25 = −1.01 = (−1) ∙ 2 ∙ (1.01) Պատասխան՝ 1011 1111 1010 0000 0000 0000 0000 00002 8FՃ0 000016:
Սիմվոլային տվյալների ներկայացումը Ինչպես և ցանկացած ինֆորմացիա, սիմվոլային տվյալները պահվում են երկուական ֆորմատով։ Յուրաքանչյուր ֆորմատի համապատասխանության մեջ է դրվում որոշակի ոչ բացասական թիվ, որն անվանում են սիմվոլի կոդ։ Սիմվոլի և կոդի միջև եղած կոնկրետ համապատասխանությունը անվանում են կոդավորում։ Սովորաբար օգտագործվում են 8-բիթանոց կոդերով սիմվոլներ։ Դա թույլ է տալիս կոդավորել 256 տարբեր սիմվոլներ։ Օգտագործվում է ՃՏՇ11 (Ճո6r1օaո Տէaոմarմ Շօմ6 fօr 1ոfօrոaէ1օո 1ոէ6օհaոջ6) կոդավորումը։ Նշենք այս կոդավորման որոշ առանձնահատկություններ առաջին 128 սիմվոլների համար. առաջին 32 սիմվոլները ղեկավարող սիմվոլներն են (օրինակ՝ 10 կոդը կուրսորը բերում է մի տող ներքև), պարունակում է տարբեր կետադրության սիմվոլներ, հատուկ սիմվոլներ, թվանշանները (ՃՏՇ11 30հ-39հ) տարբերվում են իրենց թվային արժեքներով միայն կրտսեր կիսաբայթում, լատիներեն մեծատառերը (ՃՏՇ11 41հ-5Ճհ), լատիներեն փոքրատառերը (ՃՏՇ11 61հ-7Ճհ):
Նկար 5. e և Ե տառերի 1ՏԸ11 կոդերը
Ներկայումս ՃՏՇ11 կոդավորումն ամենատարածված կոդավորումն է։ Մեկ այլ տարածված կոդավորում է Սո1օօմ6-ը, որը վերացնում է ՃՏՇ11 կոդավորման սահմանափակումները՝ սիմվոլների սահմանափակ քանակությունը (առավելագույնը՝ 128/256) և միջազգային սիմվոլներ չօգտագործելը։ Սո1օօմ6-ը օգտագործում է 16-բիթանոց կոդեր, որը մեծ առավելություն է։
Խնդիրներ և վարժություններ 1. Ձևափոխել հետևյալ 10-ական թվերը 2-ականի. ա) 23 բ) 139 գ) -97 դ) -246 2. Ձևափոխել հետևյալ 2-ական թվերը 10-ականի. ա) 1011011 բ) 110101101 գ) 1001011010 դ) 110101 3. Ձևափոխել 2) վարժության 2-ական թվերը 16-ականի: 4. Ձևափոխել հետևյալ 16-ական թվերը 2-ականի. ա) 2Ճ5D բ) ԷՇ07 գ) 25Ճ9 դ) 83D9Ճ 5. Կատարել հետևյալ 16-ական գործողությունները. ա) 35D4 - 6F11 բ) 72ՃD - 528 գ) 8912 " 5 6. Հետևյալ 10-ական թվերը ներկայացնել 2-ական լրացուցիչ կոդով 8 բիթերի օգնությամբ և գումարել։ Արդյունքը ներկայացնել 16ական համակարգով. ա) -23, 45 բ) -139, 67 գ) -97, -25 դ) 246, 52 7. Հետևյալ սահող կետով թվերը ներկայացնել կարճ / երկար / ընդլայնված իրական տեսքով։ Վերջնական արդյունքը ներկայացնել 16-ական համակարգով. ա) 39.375 բ) -92.625, գ) -97.45 դ) 46.93 8. Ներկայացնել հետևյալ երկուական կոդավորված 10-ական թվերը 10-ական համակարգով. ա) 0203հ բ) 0139հ գ) 0907հ դ) 2146հ 9. Հետևյալ 10-ական թվերը ներկայացնել որպես երկուական կոդավորված 10-ական թվեր. ա) 123 բ) 29 գ) 197 դ) 574 10. Կատարել հետևյալ 2-ական թվերի հանում. ա) 11001, 101 բ) 101101, 1100 գ) 10101, 1011 դ) 110111, 1010 11. Կատարել հետևյալ 2-ական թվերի բազմապատկում. ա) 1100, 101 բ) 10111, 1100 գ) 101, 11011 դ) 10101, 110 12. 0 սիմվոլը ՃՏՇ11 կոդով ներկայացվում է որպես 0011 0000, իսկ 6-ը՝ _______:
ՀԱՎԵԼՎԱԾ 2
ԾԱՆՈԹՈՒԹՅՈՒՆ MՏ-ԾՕՏ ԾEBՍՇ ԾՐԱԳՐԻՆ
DԷ8ՍՕ-ը (DԷ8ՍՕ.ԷՃԷ) մեքենայական մակարդակի ճշգըրտման ծրագիր (մ6Եսջջ6r) է, որը համալրում է ԽՏDՕՏ ՕՀ-ը։ Այս կիրառության հիմնական նպատակն է ապահովել 8086 ասեմբլեր ծրագրի համար ճշգրտման հարմար միջավայր, որը ներառում է. թարգմանություն ասեմբլերից մեքենայական լեզվի (aՏՏ6ոԵ11ոջ) և հակառակը (մ1ՏaՏՏ6ոԵ11ոջ), քայլային ռեժիմով ծրագրի կատարում (էraօ1ոջ), ռեգիստրների և հիշողության տիրույթների պարունակության զննում, հիշողության տիրույթում նոր արժեքի գրանցում, հիշողության մեջ ՃՏՇ11 արժեքների որոնում, հիշողության բլոկի տեղափոխում մի տիրույթից մեկ այլ տիրույթ, հիշողության տիրույթի արժեքավորում, ֆայլերի բեռնում: Ծանոթությունը մ6Եսջջ6r-ի հետ շատ կարևոր է ասեմբլեր լեզվով ծրագրավորման համար։ Այն կատարյալ միջոց է կարճ ծրագրեր գրելու և Ինթել միկրոպրոցեսորին ծանոթանալու համար։ Եթե Դուք կարողանում եք աշխատել DԷ8ՍՕ-ով, ապա կարող եք հեշտությամբ սովորել ավելի հզոր ճշգրտման ծրագրեր, ինչպիսիք են՝ ԽՃՏԽ:ՇՕDԷՕ1ԷW-ն, TՃՏԽ:TսrԵօD6Եսջ6r, որոնք DԷ8ՍՕ-ի կատարելագործված տարբերակներն են (32-բիթային հայտնի ճշգըրտման ծրագրերից են Օ117DԵջ, Տօfէ1ՇԷ, 1DՃ Prօ, որոնցից առաջին երկուսը միայն W1ոմօwՏ ՕՀ-ի համար են, իսկ երրորդը՝ նաև Լ1ոս2-ի)։ DԷ8ՍՕ-ը աշխատեցնելու համար անհրաժեշտ է հրամանային տողից ներածել “մ6Եսջ.626”: DԷ8ՍՕ-ը աշխատում է հրամանային ռեժիմում։ Հրամանները մեկտառանի են։ DԷ8ՍՕ միջավայրում բո256
լոր թվերը 16-ական համակարգով են: “-“ հրավերքի սիմվոլից հետո ներածելով “2”՝ կտեսնեք հետևյալ հրամանների ցուցակը. aՏՏ6ոԵ16 Ճ |aմմr6ՏՏ| : ասեմբլեր օօոքar6 Շ raոջ6 aմմr6ՏՏ : համեմատել մսոք D |raոջ6| : արտածել հիշողություն 6ոէ6r Է aմմr6ՏՏ |11Տէ| : ներածել f111 F raոջ6 11Տէ : լրացնել ջօ Օ | - aմմr6ՏՏ| |aմմr6ՏՏ6Տ| : կատարել հ62 է va1ս61 va1ս62 : 16-ական արժեք 1ոքսէ 1 քօrէ : մուտք 1օaմ Լ |aմմr6ՏՏ| |մr1v6| |f1rՏէՏ6օէօr| |ոսոԵ6r| : բեռնել ոօv6 Խ raոջ6 aմմr6ՏՏ : տեղաշարժել ոaո6 N |քaէհոaո6| |arջ11Տէ| : անվանել օսէքսէ Օ քօrէ Ե7է6 : ելք քrօօ66մ P | - aմմr6ՏՏ| |ոսոԵ6r| : մշակել զս1է Օ : ավարտել r6ջ1Տէ6r R |r6ջ1Տէ6r| : զննել ռեգիստրները Տ6arօհ Տ raոջ6 11Տէ : որոնել էraօ6 T | - aմմr6ՏՏ| |ոսոԵ6r| : կատարել քայլային ռեժիմով սոaՏՏ6ոԵ16 Ս |raոջ6| : թարգմանել ասեմբլերի wr1է6 W |aմմr6ՏՏ| |մr1v6| |f1rՏէՏ6օէօr| |ոսոԵ6r| : գրել “:” սիմվոլից հետո ավելացվել է հրամանի հայերեն անվանումը: || փակագծերում նշված են հրամանի ոչ պարտադիր պարամետրերը։ Պարամետրերի նշանակությունը հետևյալն է: Հասցե/aմմո655 – Հիշողության հասցե՝ տրված 16-ականով։ Կարելի է օգտագործել միայն տեղաշարժը/օffՏ6է (այս դեպքում լռությամբ որպես սեգմենտ կենթադրվի կոդ սեգմենտը (ՇՏ) ) կամ տալ լրիվ սեգմենտ:շեղում հասցեն՝ կա՛մ 16-ականով, կա՛մ օգտագործելով սեգմենտային ռեգիստր թվի փոխարեն։ Դիմացի 0-ները պարտադիր չեն։ 1F հասցեն մեկնաբանվում է որպես 'ՇՏ:001F'։
Օրինակ ԾՏ:12
ՏՏ:0
198Ճ:1234
Միջակայք/ոaոջ6 – ունի տրման երկու ֆորմատ՝ 1) հասցե |,հասցե| Օրինակ՝ ա) 100, 500 բ) ՇՏ:200, 300 գ) 200 2) հասցե Լ |արժեք| (օրինակ՝ 100 Լ 20 ), որը նշանակում է 100 հասցեից սկսած 20 բայթ։ Ցուցակ/ 1i5է – բացատանիշով բաժանված 16-ական բայթեր կամ չակերտներով պարփակված ՃՏՇ11 տվյալներ։ Օրինակ 10, 20, 30, 40 'Ճ', '8', 50 Թիվ/ոսոե6ո – Բոլոր թվերը և արժեքները DԷ8ՍՕ հրամաններում մեկնաբանվում են որպես 16-ական։ Դիտարկենք առավել օգտագործելի հրամանները։ Ավարտել/Օսiէ: Օ D6Եսջ ծրագիրը ավարտում է իր աշխատանքը։ 16-ական արժեք/H62: H արժեք1 արժեք2 Շատ պարզ (միայն գումարում և հանում) 16-ական հաշվիչ։ Օրինակ ա) -հ aaa 531 բ)-հ 111 3 գ) -հ մե1 aՇ6 0FD8 0579 1002 0FFՇ 188D 02F1 դ) -հ 4 111Շ ե) -հ 100 123 զ) -հ 7111 8000 0000 0008 0223 FFDD
FFFF FFFF
Գումարը առաջին արժեքն է՝ ՃՃՃ - 531 - 0FԾB Տարբերությունը երկրորդ արժեքն է՝ ՃՃՃ - 531 - 579
Ներածել/Eոէ6ո: E հասցե |ցուցակ| Մուտքագրած արժեքները անմիջապես տեղակայվում են հիշողության մեջ։ Օրինակ -6 250 'Tհi5 i5 aո ՃՏԸ11 մaէa 5էոiոջ.Ֆ' ՇՏ:250 հասցեից սկսած՝ կտեղադրի 'Tհi5 i5 aո ՃՏԸ11 մaէa 5էոiոջ.Ֆ' տողը։
Արտածել հիշողություն / Ծսոք: Ծ |ոaոջ6| Ծ |aմմո655| |16ոջէհ| Էկրան է արտածվում հիշողության տիրույթ։ Եթե առաջին անգամ է կիրառվում, ապա արտածումը սկսվում է 100 բայթ շեղումից: Հետագայում հրամանն առանց պարամետրի տալիս արտածվում է վերջին դուրս բերվածից հետո: Լռությամբ 16ոջէհ-ը 128 է: Օրինակ D D ՏՏ:0 5 D 915: 0 D 0 200 D 100 Լ 20
նկարագրություն արտածել 128 բայթ արտածել ՏՏ:0-ից ՏՏ:5 բայթերը արտածել 915:0 հասցեից սկսած 128 բայթ արտածել DՏ:0 հասցեից սկսած 200 բայթ արտածել DՏ:100 հասցեից սկսած 20հ բայթ
Հիշողության արտածման օրինակներ. -մ Շ000:0010 Շ000:0010 24 12 FF FF 00 00 00 00-60 00 00 00 00 20 49 42 Շ000:0020 4D 20 43 4F 4D 50 41 54-49 42 4Շ 45 20 4D 41 54 MՃT Շ000:0030 52 4F 58 2F 4D 47 41 2D-47 31 30 30 20 56 47 41 ՕՇՃ Շ000:0040 2F 56 42 45 20 42 49 4F-53 20 28 56 31 2Է 32 20 Շ000:0050 29 00 87 D8 87 D8 87 D8-87 D8 87 D8 87 D8 87 Շ000:0060 50 43 49 52 28 10 01 10-00 00 18 00 00 00 00 03 Շ000:0070 40 00 12 10 00 80 00 00-38 37 34 2D 32 00 FF FF
$.......`.... 1B
M ԸՕMPՃT1BԼE
RՕՃ/MՇՃ-Շ100 /ՕBE B1ՕՏ (Օ1.2 D8 )............... PՇ1R-........... (.......874-2...
Շ000:0080 Է8 26 56 88 D8 Է8 Շ6 56-74 22 8Շ Շ8 3D 00 Շ0 74 .&Օ....Օէ"..-..է -մ 100 130 2222:0100 Է8 24 0D 0Ճ 54 68 69 73-20 69 73 20 6D 79 20 66 .$..Tհ1Տ 1Տ ո7 f 2222:0110 69 72 73 74 20 44 45 42-55 47 20 70 72 6F 67 72 1rՏէ DԷ8ՍՕ քrօջr 2222:0120 61 6D 21 0D 0Ճ 24 84 09-8Ճ 02 01 ՇD 21 84 00 ՇD aո!..$......!... 2222:0130 21 !
Լրացնել/Fi11: F միջակայք ցուցակ Օրինակ -1 100 121 'BՍFFER' -մ 100 121 2222:0100 42 55 46 46 45 52 42 55-46 46 45 52 42 55 46 46 8ՍFFԷR8ՍFFԷR8ՍFF 2222:0110 45 52 42 55 46 46 45 52-42 55 46 46 45 52 42 55 ԷR8ՍFFԷR8ՍFFԷR8Ս 2222:0120 46 46 45 52 42 55 46 46-45 52 42 55 46 46 45 52 FFԷR8ՍFFԷR8ՍFFԷR
-1 100 1111 0 -F 100 Լ 20 'Ճ' F111 20հ Ե7է6Տ w1էհ էհ6 16էէ6r 'Ճ', Տէarէ1ոջ aէ 1օօaէ1օո 100.
Ասեմբլեր/Ճ556ոե16: Ճ |հասցե| Այս հրամանից հետո օգտագործողին հնարավորություն է տրվում մուտքագրելու ասեմբլերի հրամաններ, որոնք տեղադրվում են ՇՏ:0100 հասցեից սկսած (եթե հասցեն տրված չէ): Նշիչները, մակրոհրամանները չեն ճանաչվում։ Կարելի է օգտագործել 'D8' և 'DW' հրամանագրերը։ 'Ճ' հրամանը հիշում է վերջին հասցեն, որտեղ տվյալները թարգմանվել են։ Ասեմբլեր գործընթացը ավարտվում է, երբ ներածվում է դատարկ տող։ Օրինակ (մի մուտքագրեք ‘:’ –ը և նրան հաջորդող մեկնաբանությունը). -a 100 2222:0100 յոք 126
: անցում հաջորդող տվյալների վրայով
2222:0102 մե 0մ, 0a, "Tհi5 i5 ոy 1iո5է ԾEBՍՇ քոօջոaո!" 2222:0123 մե 0մ, 0a, "Ֆ" 2222:0126 MՕՕ ՃH, 9 : 1NT 21հ –ի 09 ֆունկցիան 2222:0128 MՕՕ ԾՃ, 102 : DՏ:DՃ $-ով ավարտվող տող 2222:0128 1NT 21 : տողի արտածում 2222:012D MՕՕ ՃH, 0 : 1NT 21հ – 0 ֆունկցիա 2222:012F 1NT 21 : ծրագրի աշխատանքի ընդհատում 2222:0131 -ջ -100 Tհ1Տ 1Տ ո7 f1rՏէ DԷ8ՍՕ քrօջraո! Prօջraո է6rո1ոaէ6մ ոօrոa117
Թարգմանել ասեմբլերի /Սոa556ոե16: Ս |միջակայք| Այս հրամանը մեքենայական հրամանները թարգմանում է 8086 ասեմբլեր կոդի։ Եթե լրացուցիչ |միջակայք| պարամետրը տրված չէ, օգտագործվում է 100 շեղումը որպես սկզբնակետ։ Օրինակ -ս 126 12F 2222:0126 8409 2222:0128 8Ճ0201 2222:0128 ՇD21 2222:012D 8400 2222:012F ՇD21
ԽՕՕ Ճէ, 09
ԽՕՕ DՃ, 0102 1NT 21
ԽՕՕ Ճէ, 00
1NT 21
Կատարել/Շօ: Շ |-հասցե| |հասցեներ| Այս հրամանն օգտագործվում է ծրագիրն աշխատեցնելու և ծրագրում ընդհատման կետեր տեղակայելու համար։ '-հասցե' պարամետրը օգտագործվում է ծրագիրը աշխատեցնելու սկզբի հասցեն նշելու համար։ Եթե օգտագործվում է միայն 'ջ', ապա կատարումը
սկսվում է ՇՏ:1P հասցեից։ Եթե լրացուցիչ տրված են հասցեներ, ապա դրանք դիտարկվում են որպես ընդհատման կետեր, ինչը նշանակում է, որ ծրագիրն ընդհատում է իր աշխատանքը, երբ հասնում է նշված հասցեին։ Ընդհատման կետը կարող է տեղակայվել միայն այն դեպքում, եթե այն 8086/8088 գործողության կոդի առաջին բայթի հասցե է։ Զննել ռեգիստրները/R6ջi5է6ո: R |ռեգիստր| ' r ' հրամանը առանց պարամետրերի ցուցադրում է 8086-ի բոլոր ռեգիստրների պարունակությունները, ինչպես նաև 1P ռեգիստրի պարունակությունը (այսինքն՝ հաջորդ հրամանի հասցեն) և համապատասխան հասցեի մեքենայական կոդը։ Օրինակ »մ6եսջ Շ:\wiոմօw5\Շօոոaոմ\ՇհօiՇ6.Շօո կիրառությունը կանչելուց և ' r ' հրամանը մուտքագրելուց հետո կարելի է տեսնել նման պատկեր. ՃՃ-0000 8Ճ-0000 ՇՃ-1437 DՃ-0000 ՏP-FFFԷ 8P-0000 Տ1-0000 D1-0000 DՏ-0ԷD8 ԷՏ-0ԷD8 ՏՏ-0ԷD8 ՇՏ-0ԷD8 1P-0100 NՕ ՍP Է1 PԼ N7 NՃ PՕ NՇ 0ԷD8:0100 Է90Է01 JԽP 0211
Վերջին տողը ցույց է տալիս ԿՊ-ի հաջորդ հրամանի (այս դեպքում փաստացի առաջին կատարվող հրամանի) տեղադրության հասցեն (0ԷD8:0100), հրամանի մեքենայական կոդը՝ Է90Է0, և ասեմբլեր հրամանը՝ JԽP 0211։ ‘NՕ ՍP Է1 PԼ N7 NՃ PՕ NՇ’ անվանումները համապատասխանում են դրոշների արժեքներին: Դրոշ Արժեքը - 1 Արժեքը - 0 ՕF (Գերհագեցում) DF (Ուղղության) ԷF (Ընդհատման) ՏF (Նշանի)
ՕՕ (ՕՕ6rf1օw) DN (մ6օr6ո6ոէ) Է1 (6ոaԵ16մ) NՕ (ո6ջaէ1v6)
NՕ (Nօ ՕՕ6rf1օw) ՍP (1ոօr6ո6ոէ) D1 (մ1ՏaԵ16մ) PԼ (քօՏ1է1v6)
7F (Զրո) ՃF (Օժանդակ փոխանցման) PF (Զույգության) ՇF (Փոխանցման)
7R (26rօ)
N7 (ոօ 26rօ)
ՃՇ
NՃ (ոօ ՃՇ)
PԷ (6v6ո) ՇՄ (օarr7)
PՕ (օմմ) NՇ (Nօ օarr7)
'rօ2' հրամանը ներածելու դեպքում DԷ8ՍՕ-ը ցույց կտա ՇՃ ռեգիստրի պարունակությունը, հաջորդ տողում՝ ‘:’, որով հնարավորություն է տալիս փոխելու ռեգիստրի պարունակությունը։ ԷNTԷR ստեղնը սեղմելու դեպքում ռեգիստրի արժեքը չի փոխվի։ Օրինակ -ոՇ2 ՇՃ 0100 :273 նշանակում է որ ՇՃ ռեգիստրի արժեքը 0100-ից դարձավ 0273. 'rf' հրամանը ցուցադրում է դրոշների արժեքները և միաժամանակ թույլատրում փոխել դրոշի արժեքը հենց նույն տողում հրավերքի նշանից(‘-‘) հետո։ Օրինակ -ո1 NՕ ՍP Է1 PԼ N7 NՃ PՕ NՇ -2ո -ո1 NՕ ՍP Է1 PԼ 7R NՃ PՕ NՇ -
(դրոշների արժեքների ցուցադրումից հետո 7F-ի արժեքը 1 դարձնելու համար մուտքագրվել է 7R): Կատարել քայլային ռեժիմով /TոaՇ6: T |-հասցե| |թիվ| T հրամանը օգտագործվում է հրամանները քայլային ռեժիմով կատարելու համար։ Եթե մուտքագրվի միայն ‘T’ տառը, ապա կկատարվի մեկ հրաման՝ գրանցված ՇՏ:1P հասցեում, կդադարեցվի
ծրագրի կատարումը, և կցուցադրվի ԿՊ-ի (ՇPՍ) ռեգիստրների պարունակությունը, ինչպես նաև հաջորդ հրամանը և նրա մեքենայական կոդը։ Եթե ցանկանում եք կատարել ՇՏ:0205 հասցեում տեղադրված հրամանը, ապա անհրաժեշտ է ներածել. -է - 205 7 Մշակել /PոօՇ66մ: P |-հասցե| |թիվ| Այս հրամանը նման է D6Եսջ-ի T (Traօ6) հրամանին ասեմբլերի շատ հրամանների կատարման համար բացի ՇՃԼԼ, ԼՕՕP, RԷP նախդիրով տողային և ընդհատման հրամաններից։ Դա նշանակում է, որ ենթածրագրի կամ ընդհատումը մշակող ենթածրագրի հրամանները քայլ առ քայլ չեն կատարվի P հրամանի դեպքում։ Այս հրամանը ավելի հաճախ է օգտագործվում մ6Եսջ կիրառություններում, քան քայլային կատարումը (Traօ6), որն օգտագործվում է ենթածրագրի ֆունկցիոնալությունը ստուգելու նպատակով։ Օրինակ Նկարագրություն P - 200 կատարում է ՇՏ:0200 հասցեում գտնվող մեկ հրաման P - 150 6 կատարում է 6 հրամաններ՝ սկսած ՇՏ:0150 հասցեից P5 կատարում է հաջորդ 5 հրամանները Օրինակ Ծ6եսջջiոջ a Լօօք -Ճ 100 4Ճ66:0100 ԽՕՕ ՇՃ, 5 : հաշվիչը - 5 4Ճ66:0103 ԽՕՕ ՃՃ, 0 4Ճ66:0106 ՃDD ՃՃ,ՇՃ 4Ճ66:0108 ԼՕՕP 106 : ցիկլ 0106հ հասցեից -R ՃՃ-000F 8Ճ-0000 ՇՃ-0000 DՃ-0000 ՏP-FFԷԷ 8P-0000 Տ1-0000 D1-0000 DՏ-4Ճ66 ԷՏ-4Ճ66 ՏՏ-4Ճ66 ՇՏ-4Ճ66 1P-0100 NՕ ՍP Է1 PԼ N7 NՃ PԷ NՇ
4Ճ66:0100 890500 ԽՕՕ ՇՃ, 0005 -P ՃՃ-000F 8Ճ-0000 ՇՃ-0005 DՃ-0000 ՏP-FFԷԷ 8P-0000 Տ1-0000 D1-0000 DՏ-4Ճ66 ԷՏ-4Ճ66 ՏՏ-4Ճ66 ՇՏ-4Ճ66 1P-0103 NՕ ՍP Է1 PԼ N7 NՃ PԷ NՇ 4Ճ66:0103 880000 ԽՕՕ ՃՃ, 0000 -P ՃՃ-0000 8Ճ-0000 ՇՃ-0005 DՃ-0000 ՏP-FFԷԷ 8P-0000 Տ1-0000 D1-0000 DՏ-4Ճ66 ԷՏ-4Ճ66 ՏՏ-4Ճ66 ՇՏ-4Ճ66 1P-0106 NՕ ՍP Է1 PԼ N7 NՃ PԷ NՇ 4Ճ66:0106 01Շ8 ՃDD ՃՃ, ՇՃ -P ՃՃ-0005 8Ճ-0000 ՇՃ-0005 DՃ-0000 ՏP-FFԷԷ 8P-0000 Տ1-0000 D1-0000 DՏ-4Ճ66 ԷՏ-4Ճ66 ՏՏ-4Ճ66 ՇՏ-4Ճ66 1P-0108 NՕ ՍP Է1 PԼ N7 NՃ PԷ NՇ 4Ճ66:0108 Է2FՇ ԼՕՕP 0106 -P ՃՃ-000F 8Ճ-0000 ՇՃ-0000 DՃ-0000 ՏP-FFԷԷ 8P-0000 Տ1-0000 D1-0000 DՏ-4Ճ66 ԷՏ-4Ճ66 ՏՏ-4Ճ66 ՇՏ-4Ճ66 1P-010Ճ NՕ ՍP Է1 PԼ N7 NՃ PԷ NՇ
Խնդիրներ և վարժություններ 1. Սկզբնարժեքավորել DՏ:0200 սկսած հիշողության տիրույթը 123416է արժեքով և DՍԽP հրամանի միջոցով ստուգել, որ հիշողության պարունակությունը փոխվել է: 2. Զրոյացնել Տ1 ռեգիստրի արժեքը և համոզվել դրանում՝ նորից ցուցադրելով նրա պարունակությունը: 3. 1P ռեգիստրին տալ 1016 արժեք և համոզվել դրանում՝ ցուցադրելով նրա պարունակությունը: 4. Սկզբնարժեքավորել DՏ:0200 սկսած հիշողության 50 բայթ տիրույթը 0116 արժեքով և արդյունքը ստուգել: 5. Գրել ծրագիր, որը 8Ճ ռեգիստրում ստանա Ճէ ռեգիստրի պարունակության քառակուսին:
ԳՐԱԿԱՆՈՒԹՅՈՒՆ
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Зубков С. В., ՃՏՏ6ոԵ16r для DՕՏ, W1ոմօwՏ и Սո12, Москва, издательство “ДМК”Ւ 2006. Юров В., Хорошенко С., ՃՏՏ6ոԵ16r. Учебный курс. Санкт-Петербург, издательство “Питер”,1999. Рудаков П. И., Финогенов К. Г., Язык ассемблера. Уроки программирования, Москва, издательство “Диалог-МИФИ”, 2001. Ирвин К., Язык ассемблера для процессоров 1ոէ61, 4-е издание, Москва, издательство “Вильямс”Ւ 2005. Скенлон Л., Персональные ЭВМ 18Խ PՇ и ՃT . Программирование на языке ассемблера. Москва, издательство “Радио и связь”Ւ1989. Пильщиков В. Н., Программирование на языке ассемблера 18Խ PՇ, Москва, издательство “Диалог-МИФИ”Ւ 1996/2000. Михаил Г., Процессоры P6ոէ1սո 11, P6ոէ1սո Prօ и просто P6ոէ1սո. Санкт-Петербург, издательство “Питер”Ւ 1999. Михаил Г., Процессоры 1ոէ61 от 8086 до P6ոէ1սո 11., Санкт-Петербург, издательство “Питер”Ւ 1998. Рудаков П. И., Финогенов К. Г., Программируем на языке Ассемблера 18Խ PՇ, изд. 2-е, ОбнинскՒ издатетельство "Принтер", 1997. Нортон П., Соухэ Д., Язык ассемблера для 18Խ PՇ, Москва, издательство "Компьютер", Финансы и статистика, 1992. Задания практикума на ЭВМ (1 курс), методическая разработкаՒ Москва, МГУ, 1992. 1Ճ-32 1ոէ61 Ճrօհ1է6օէսr6. Տօfէwar6 D6v61օք6r’Տ Խaոսa1. Օօ1սո6 1: 8aՏ1օ Ճrօհ1է6օէսr6. 1Ճ-32 1ոէ61 Ճrօհ1է6օէսr6. Տօfէwar6 D6v61օք6r’Տ Խaոսa1. Օօ1սո6 2: 1ոՏէrսօէ1օո Տ6է R6f6r6ոօ6. հէէք://www.waՏո.rս
ԵՐԵՎԱՆԻ ՊԵՏԱԿԱՆ ՀԱՄԱԼՍԱՐԱՆ
Արա Հայկի Առաքելյան, Շուշանիկ Աշոտի Բաղդասարյան, Կարինե Գրիշայի Գալստյան, Վարդան Արարատի Զաքարյան, Գևորգ Արթուրի Մարտիրոսյան, Զավեն Արծրունու Նազարյան, Գագիկ Ռազմիկի Սարդարյան
ԻՆԹԵԼ 286
ԱՍԵՄԲԼԵՐ
(իրական ռեժիմ)
ՈՒՍՈՒՄՆԱՄԵԹՈԴԱԿԱՆ ՁԵՌՆԱՐԿ
Համակարգչային ձևավորումը՝ Կ. Չալաբյանի Կազմի ձևավորումը` Ա. Պատվականյանի Խմբագրումը` Մ. Հովհաննիսյանի
Տպագրված է «Գևորգ-Հրայր» ՍՊԸ-ում: ք. Երևան, Գրիգոր Լուսավորչի 6
Ստորագրված է տպագրության՝ 07.12.2016: Չափսը՝ 60284 1/16: Տպ. մամուլը՝ 16,75: Տպաքանակը՝ 200 օրինակ: ԵՊՀ հրատարակչություն ք. Երևան, 0025, Ալեք Մանուկյան 1 www.քսԵ11Տհ1ոջ.7Տս.aո
ԻՆԹԵԼ x86 ԱՍԵՄԲԼԵՐ
ԱՐԱ ԱՌԱՔԵԼՅԱՆ | ՇՈՒՇԱՆԻԿ ԲԱՂԴԱՍԱՐՅԱՆ
ԿԱՐԻՆԵ ԳԱԼՍՏՅԱՆ | ՎԱՐԴԱՆ ԶԱՔԱՐՅԱՆ
ԳԵՎՈՐԳ ՄԱՐՏԻՐՈՍՅԱՆ | ԶԱՎԵՆ ՆԱԶԱՐՅԱՆ
ԳԱԳԻԿ ՍԱՐԴԱՐՅԱՆ
ԻՆԹԵԼ x86
ԱՍԵՄԲԼԵՐ
Ի Ր Ա Կ Ա Ն
Ռ Ե Ժ Ի Մ
Ո Ւ Ս Ո Ւ Մ Ն ԱՄ Ե ԹՈ Դ ԱԿ ԱՆ
ՁԵ ՌՆ ԱՐ Կ