Computerin tehnikin undes 1hicheeliin lektsiin huraangui

40
Компьютерийн техникийн үндэсхичээлийн лекцийн хураангуй Оршил Энэхүү хичээлийн зорилго нь оюутнууд компьютерийн архитектурын бүтцийн хэсэг нь болох регистр, санах ойн сегментүүдүүд, мөн тасалдалын үүрэг, ассемблер програмыг бичих арга техник, DOS-той ажиллах командуудтай танилцан, техникийн туслах програмуудын хэрэглээний аргачлалуудыг эзэмшинэ. Програмчлалын Pascal, Си гэх мэт хэлүүдийг дээд түвшний буюу машинаас үл хамаарах хэл гэдэг. Эдгээр хэл дээр бичигдсэн програмуудыг ямарч хэл дээр биелүүлэх боломжтой. Үүний тулд дээд түвшний хэлэн дээрх програмыг тухайн машины програм болгон хөрвүүлэх ёстой. Ер нь машины програм гэдэг (+), (-), (*), (/) гэх мэт арифметик болон логикийн энгийн бөгөөд нарийн бүтэцтэй командуудын дараалал хэлбэртэй байдаг. Машины хэлэн дээр програмчлах нь нэлээд төвөгтэй байдаг учраас түүнийг хөнгөвчлөхийн тулд ассемблер хэл буюу машинаас хамаарсан доод түвшний хэлийг ашигладаг. ТЭМ-ийн хөгжлийн эхний үеүүдэд програм хангамж сайн хөгжөөгүй дээд түвшний хэлүүд зохиогдоогүй байсан учраас зөвхөн машины хэл дээр програмчлаж байсан. Орчин үед дээд түвшний хэл дээр програмчлах болсон хэдий ч дараах шалтгааны улмаас Ассемблер хэл дээр програмчлах асуудал чухал хэвээр байна. Үүнд: 1) Ассемблер хэл дээр бичсэн програм өндөр хурдтай ажилладаг. 2) Зарим нарийн бодлогыг ассемблер хэл дээр програмчлах нь хялбар байдаг. 3) Зарим бодлогыг дээд түвшний хэл дээр програмчлах боломжгүй 4) Энэ хэлийг ашигласнаар машины боломж хүчин чадлыг бүрэн дүүрэн ашиглаж чадна. Энэ хэл дээр програм бичсэнээр машины бүтцийг нарийн мэдэж, мэдээлэл боловсруулах тооцоолох процесс хэрхэн явагддгыг нарийн ойлгох боломжтой. Машин бүрийн /микропроцессор бүрийн/ ассемблер хэл янз бүр хоорондоо ялгаатай байдаг боловч нэгээс хоёр машины ассемблер хэлийг судалснаар машины ерөнхий бүтэц, ассемблер хэлний ерөнхий ойлголттой болж чадна. Энэ хэлийг судлахын өмнө машины ерөнхий бүтэц, зохион байгуулалт, ажиллах зарчим зохион байгуулалтын талаар судлах хэрэгтэй. Компьютерийн ерөнхий бүтэц Микропроцессор. Компьютерийн зүрх нь болох микропроцессор буюу Төв удирдлагын хэсгийг CPU гэж товчоор тэмдэглэдэг. 1960-аад оноос интеграл схем хийгдсэн цагаас эхлэн микропцессор үүсэх эхлэл тавигджээ. Гэхдээ түүнээс өмнө 15-р зууны үеэс олон хялбар схемүүд, транзисторуудыг холбож хийсэн тооцоолон бодох машинууд гарсан байв. Ерөнхийдөө микропроцессор гэдэг нь нэг схем буюу интеграл схем /chip/ болон үйлдвэрлэгдсэн, бүрэн цогц тооцоолох төхөөрөмж юм. Энэ схем нь хэдийгээр жижиг хэмжээтэй боловч дотроо хэдэн сая транзисторуудыг агуулдаг. Хамгийн анхны CPU болох Intel 4004 нь 1971 онд хийгдсэн ба энэ нь тийм ч өндөр хүчин чадалтай байгаагүй бөгөөд зөвхөн 4-хөн бит өгөгдлүүд дээр нэмэх, хасах 2 үйлдлийг л хийж чаддаг байжээ. Энэ схем тухайн үедээ тооны машинд хэрэглэж байсан байна. Дараагаар нь intel 8008 микропроцессор үүссэн байна. 1978 онд intel 8080 –ыг сайжруулан 8086 үйлдвэрлэсэн. Цаашдаа 8088 сайжруулан 80286 (IPAX286), 80386(IPAX386), 80486(IPAX80486), Pentium, PentiumII, PentiumIII, Pentium IV гэх мэтээр илүү хурд, хүчин чадалтай микропроцессоруудыг үйлдвэрлэсэн. Дараах хүснэгтэнд Intel компанийн үйлдвэрлэсэн зарим микропроцессоруудын хөгжлийг харуулав. Хүснэгт1 -1- Боловсруулсан: магистр багш Т.Амартүвшин

Transcript of Computerin tehnikin undes 1hicheeliin lektsiin huraangui

Page 1: Computerin tehnikin undes 1hicheeliin lektsiin huraangui

“Компьютерийн техникийн үндэс” хичээлийн лекцийн хураангуй

Оршил

Энэхүү хичээлийн зорилго нь оюутнууд компьютерийн архитектурын бүтцийн хэсэг нь болох регистр, санах ойн сегментүүдүүд, мөн тасалдалын үүрэг, ассемблер програмыг бичих арга техник, DOS-той ажиллах командуудтай танилцан, техникийн туслах програмуудын хэрэглээний аргачлалуудыг эзэмшинэ.

Програмчлалын Pascal, Си гэх мэт хэлүүдийг дээд түвшний буюу машинаас үл

хамаарах хэл гэдэг. Эдгээр хэл дээр бичигдсэн програмуудыг ямарч хэл дээр биелүүлэх боломжтой. Үүний тулд дээд түвшний хэлэн дээрх програмыг тухайн машины програм болгон хөрвүүлэх ёстой. Ер нь машины програм гэдэг (+), (-), (*), (/) гэх мэт арифметик болон логикийн энгийн бөгөөд нарийн бүтэцтэй командуудын дараалал хэлбэртэй байдаг. Машины хэлэн дээр програмчлах нь нэлээд төвөгтэй байдаг учраас түүнийг хөнгөвчлөхийн тулд ассемблер хэл буюу машинаас хамаарсан доод түвшний хэлийг ашигладаг. ТЭМ-ийн хөгжлийн эхний үеүүдэд програм хангамж сайн хөгжөөгүй дээд түвшний хэлүүд зохиогдоогүй байсан учраас зөвхөн машины хэл дээр програмчлаж байсан. Орчин үед дээд түвшний хэл дээр програмчлах болсон хэдий ч дараах шалтгааны улмаас Ассемблер хэл дээр програмчлах асуудал чухал хэвээр байна. Үүнд:

1) Ассемблер хэл дээр бичсэн програм өндөр хурдтай ажилладаг. 2) Зарим нарийн бодлогыг ассемблер хэл дээр програмчлах нь хялбар байдаг. 3) Зарим бодлогыг дээд түвшний хэл дээр програмчлах боломжгүй 4) Энэ хэлийг ашигласнаар машины боломж хүчин чадлыг бүрэн дүүрэн ашиглаж

чадна. Энэ хэл дээр програм бичсэнээр машины бүтцийг нарийн мэдэж, мэдээлэл

боловсруулах тооцоолох процесс хэрхэн явагддгыг нарийн ойлгох боломжтой. Машин бүрийн /микропроцессор бүрийн/ ассемблер хэл янз бүр хоорондоо ялгаатай байдаг боловч нэгээс хоёр машины ассемблер хэлийг судалснаар машины ерөнхий бүтэц, ассемблер хэлний ерөнхий ойлголттой болж чадна. Энэ хэлийг судлахын өмнө машины ерөнхий бүтэц, зохион байгуулалт, ажиллах зарчим зохион байгуулалтын талаар судлах хэрэгтэй.

Компьютерийн ерөнхий бүтэц

Микропроцессор. Компьютерийн зүрх нь болох микропроцессор буюу Төв удирдлагын хэсгийг CPU гэж товчоор тэмдэглэдэг.

1960-аад оноос интеграл схем хийгдсэн цагаас эхлэн микропцессор үүсэх эхлэл тавигджээ. Гэхдээ түүнээс өмнө 15-р зууны үеэс олон хялбар схемүүд, транзисторуудыг холбож хийсэн тооцоолон бодох машинууд гарсан байв. Ерөнхийдөө микропроцессор гэдэг нь нэг схем буюу интеграл схем /chip/ болон үйлдвэрлэгдсэн, бүрэн цогц тооцоолох төхөөрөмж юм. Энэ схем нь хэдийгээр жижиг хэмжээтэй боловч дотроо хэдэн сая транзисторуудыг агуулдаг. Хамгийн анхны CPU болох Intel 4004 нь 1971 онд хийгдсэн ба энэ нь тийм ч өндөр хүчин чадалтай байгаагүй бөгөөд зөвхөн 4-хөн бит өгөгдлүүд дээр нэмэх, хасах 2 үйлдлийг л хийж чаддаг байжээ. Энэ схем тухайн үедээ тооны машинд хэрэглэж байсан байна. Дараагаар нь intel 8008 микропроцессор үүссэн байна. 1978 онд intel 8080 –ыг сайжруулан 8086 үйлдвэрлэсэн. Цаашдаа 8088 сайжруулан 80286 (IPAX286), 80386(IPAX386), 80486(IPAX80486), Pentium, PentiumII, PentiumIII, Pentium IV гэх мэтээр илүү хурд, хүчин чадалтай микропроцессоруудыг үйлдвэрлэсэн. Дараах хүснэгтэнд Intel компанийн үйлдвэрлэсэн зарим микропроцессоруудын хөгжлийг харуулав.

Хүснэгт1

-1- Боловсруулсан: магистр багш Т.Амартүвшин

Page 2: Computerin tehnikin undes 1hicheeliin lektsiin huraangui

“Компьютерийн техникийн үндэс” хичээлийн лекцийн хураангуй

Транзисторын

тоо

Секундэнд

хийгдэх

үйлдлийн

тоо

/саяаар/

Схем доторх

замы

н өргөн

/Bic

rons

/

Хийгдсэн огноо

Клок хурд

Ажиллах өгөгдлийн өргөн МП-н нэр

8 бит 8080 1974 6.000 6 2 MHz 0.64 20 бит хаяг 8 бит 8088 1979 29.000 3 5 MHz 0.33 20 бит хаяг 16 бит 80286 1982 134.000 15 6 MHz 1 24 бит хаяг 16 бит 80386 1985 275.000 1.5 16 MHz 5 24 бит хаяг 32 бит 80486 1989 1.200.000 1 25 MHz 20 32 бит хаяг 64 бит Pentium 1993 3.1000.000 08 60 MHz 100 32 бит хаяг 64 бит Pentium II 1997 7.500.000 035 233 MHz ~300 32 бит хаяг 64 бит Pentium III 1999 9.500.000 0.25 450 MHz ~510 32 бит хаяг 64 бит Pentium IV 2000 42.000.000 0.18 1.5 GHz ~1.700 32 бит хаяг

80586 Pentium Pro

64 бит 32 бит хаяг

Pentium D

System clock – Компьютерийн буюу микроцессорын системд синхрончлолын асуудал байдаг бөгөөд түүнийг бүх шатанд системийн clock гэж нэрлэдэг. Өөрөөр хэлбэл CPU-н хурд гэдэг нь клок сигналын давтамж юм.

Үйлдлийн систем.Үйлдлийн систем гэдэг нь хэрэглэгч ба компьютер хоёрыг холбодог гүүр юм . Үйлдлийн систем нь дараах үндсэн 6 үүрэгтэй. Үүнд:

- Микропроцессорын ажиллагааг зохицуулах - Санах ойн үйл ажиллагааг зохицуулах - Гадаад төхөөрөмжүүдийн ажиллагааг зохицуулах - Мэдээлэл хадгалах, өгөгдөлд хандах зэрэг үйл ажиллагааг зохицуулах - Хэрэглэгчтэй холбогдох үйл явцыг зохицуулах - Компьютерийн программуудтай холбогдсон, биелүүлэх явцыг зохицуулах

Машинд мэдээлэл дүрслэх. Тоог дүрслэн бичих ба түүн дээр үйлдэл хийх дүрмийн системийг тооллын систем гэдэг. Машинд BINARY буюу зөвхөн 0 ба 1 гэсэн 2 тооноос

-2- Боловсруулсан: магистр багш Т.Амартүвшин

Page 3: Computerin tehnikin undes 1hicheeliin lektsiin huraangui

“Компьютерийн техникийн үндэс” хичээлийн лекцийн хураангуй

бүтэх 2-тын тооллын системд тоог хэрэглэдэг. Гэхдээ програм бичихдээ 2-тын тоонуудыг HEXADECIMAL буюу 16-тын тоон системд оруулан бичдэг. Мөн OCTAL буюу 8-тын тооллын систем гэж байдаг. Үүнийг энэ хичээл дээр хэрэглэхгүй. Тооллын системийн ялгааг дараах хүснэгтээр харуулав.

Хүснэгт2 Decimal (D)

10-т Hexadecimal (H) Binary (B) Octal (Q)

16-т 2-т 8-т 0 0 0000 0000 0 1 1 0000 0001 1 2 2 0000 0010 2 3 3 0000 0011 3 4 4 0000 0100 4 5 5 0000 0101 5 6 6 0000 0110 6 7 7 0000 0111 7 8 8 0000 1000 10 9 9 0000 1001 11 10 А 0000 1010 12 11 B 0000 1011 13 12 C 0000 1100 14 13 D 0000 1101 15 14 E 0000 1110 16 15 F 0000 1111 17 16 10 0001 0000 20 17 11 0001 0001 21

Өгөгдлийн нэгж: Компьютер нь програмыг биелүүлэхдээ өгөгдөл ба командуудыг

санах ой болон регистрүүдэд хадгалдаг. Ингэхдээ тодорхой хэмжээгээр хэсэгчлэн хадгалдаг.

Компьютерийн өгөгдлийн хамгийн бага нэгж бол BIT (бит) бөгөөд Булийн үнэн, худал гэсэн ойлголтуудыг агуулдаг.

8 битээс бүрдэх багцыг 1 BYTE (байт) гэх ба энэ нь 2-тын тооллын системээр илэрхийлэгдэх арифметик тоо, үсэг (A), тэмдэгт (*) зэргийг илэрхийлдэг.

2 байт буюу 16 бит нь 1WORD (үг) болно. 4 байт буюу 32 бит нь 1 DOUBLEWORD (хос үг) болно.

Битийн дугаар 7 6 5 4 3 2 1 0 Битийн утга 1 1 1 1 1 1 1 1 2-тын зэрэг 27 26 25 24 23 22 21 20 10-тын утга 128 64 32 16 8 4 2 1

Ассемблер програмын бүх гүйцэтгэл 1М байт дотор багтах ёстой. Иймд 1М байт гэдэг нь түүний максимум хэмжээ болно.

Тасалдал (Interupt) : Ямар нэг үйлдэл процессор дээр хийгдэж байгаад тасалдаж өөр үйлдэл процессор дээр хийгдэхийг тасалдал гэнэ. 256 төрлийн тасалдал байдаг. Эдгээр тасалдлыг үйлдлийн тусламжтайгаар гүйцэтгэдэг. Хэрэглэгчийн өөрийнх нь оруулж болох тасалдал байж болно. Тасалдлал нь програмын болон техникийн гэж 2 янз байна. Энэ 2 тасалдалын ижил тал нь ажиллаж байгаа програмыг таслаад дараагийн програм ажиллана. Харин тасалж байгаа нөхцөл нь өөр. Програмын аргаар тасалж байгааг програмын, техникийн аргаар тасалж байгааг аппаратурын тасалдал гэнэ. Аппаратурын тасалдал нь

-3- Боловсруулсан: магистр багш Т.Амартүвшин

Page 4: Computerin tehnikin undes 1hicheeliin lektsiin huraangui

“Компьютерийн техникийн үндэс” хичээлийн лекцийн хураангуй

програмын тасалдлаас давуу эрхтэй, цаад үйлдвэрээс нь зориулан хийсэн байдаг. Ассемблер хэлэнд тасалдлыг (int) дуудах команд байдаг. 256 тасалдал нь 600 дэд функтэй. Жишээ нь: 21-р тасалдал нь 50 дэд функтэй. 256 тасалдал нь компьютерийн ROM дээр байрлана.

ROM – (Rad Only Memory) тэжээл байхгүй боловч програм байнга байх тул тогтмол санах ой гэдэг. Голдуу 0 хаягнан дээр байрлана. ROM нь өөрөө тестлэж, 256 тасалдлын векторыг шуурхай санах ойд ачааллаж өгдөг. Тасалдлын програм нь MS-DOS, BIOS дээр өөр дээр нь оршдог. Стек (Stack) : Стек нь нэгэн төрлийн санах ой юм. Энэ нь хамгийн сүүлд хийсэнгээ хамгийн эхэнд авах, хамгийн эхэнд хийсэнгээ хамгийн сүүлд авах FILO зарчмаар ажилладаг. Хадгалах тоолонгоор стекийн тоо 2-оор хорогдоно.Стекд хаяг зааж өгөлгүйгээр шууд оруулаад эргэж хэрэглэх болвол шууд уншаад хэрэглэж болдогоороо онцлогтой. Стек нь санах ойн төгсгөлд байдаг. Иймд нь максимум байх шаардлагагүй. Түр зуурын хадгаламж. Стекийг програм эхлэхэд заавал зааж өгнө. Хэрэв зааж өгөөгүй бол санах ойтой давхцаж бусад зүйлийг арилгана. Өөрөөр хэлбэл програмыг эвдэнэ. Програм тасарвал бүх регистрт байгаа зүйлийг стект хадгална. Компьютерийн бүтэц. Компьютер нь 3 үндсэн зүйлсээс бүрдэнэ.

- Микропроцессор ба (CPU –central processing unit) системийн хэсэг : эх хавтан, тэжээл зэрэг орно.

- Санах ой : тогтмол болон шуурхай санах ойнууд - Оролт гаралтын систем: Гар, дэлгэц, дискний төхөөрөмжүүд, хулгана, принтер,

скайнер гэх мэт. Эдгээр нь хоорондоо түгээгүүрийн систем (system bus) -ээр холбогддог.

Компьютерийн системд 3 төрлийн түгээгүүртэй.

1. Хаягийн түгээгүүр (address bus) : А0 – А15 байдлаар бичигдэнэ. Энэ нь санах ой ба оролт гаралтын төхөөрөмжийг хаяглахад хэрэглэнэ. Тухайн нэг 2-тын тоон хаяг нь санах ой ба оролт гаралтын төхөөрөмжийн тодорхой нэг хаягийг заана. Энэ нь нэг чиглэлтэй, процессорын гаралтын шугамууд байна.

2. Өгөгдлийн түгээгүүр (data bus) : D0-D7 гэж тэмдэглэх ба мэдээллийг санах ой ба оролт гаралтын төхөөрөмжрүү дамжуулах эсвэл уншиж авахад ашиглана. Энэ нь хоёр чиглэлтэй. Өгөгдлийн түгээгүүрийн өргөнөөр нь микропроцессорыг хэдэн битийн болохыг тодорхойлдог.

3. Удирдлагын түгээгүүр (control bus) : Санах ой ба оролт гаралтын системүүдийг удирдахад хэрэглэгдэнэ. Энэ түгээгүүр нь RD-өгөгдлийг процессорт уншиж авах, WR-процессороос өгөгдлийг бичих, IO/M-оролт гаралтын төхөөрөмж эсвэл санах ойтой ажиллахаа сонгох гэсэн үндсэн командуудтай. Дээрх гаралтын шугмуудаас

-4- Боловсруулсан: магистр багш Т.Амартүвшин

Page 5: Computerin tehnikin undes 1hicheeliin lektsiin huraangui

“Компьютерийн техникийн үндэс” хичээлийн лекцийн хураангуй

гадна гадаад төхөөрөмжөөс хариу сигнал ирүүлэх боломжтой тул мөн оролтын шугмууд байж болно. Иймд 2 чиглэлтэй байна.

Сегмент (Segment)

Сегмент нь 16-д хуваагдах утгатай хаягнаас эхлэн санах ойн хаана ч байрлаж болдог

талбар юм. 64к байт хүртэл хэмжээтэй байж болно. Өөрөөр хэлбэл санах ойгоо 64к байтаар сегмент болгон хувиарлана. Гол 4 сегментийг дурьдвал:

1. Код сегмент (Code segmen): Биелэгдэх ёстой командуудын кодыг агуулна. Хамгийн эхэнд биелэгдэх команд нь сегментийн эхэнд байрлах ба үйлдлийн систем нь програмыг биелүүлэхдээ тухайн байрлалтай холбогдоно. CS регистрээр уг сегментийг хаяглана.

2. Өгөгдлийн сегмент (Data segment): Энд тодорхойлогдсон өгөгдөл, тогтмол утгуудыг агуулах ба DS регистрээр уг сегментийг хаяглана.

3. Стек сегмент (Stack segment): Стек санах ой нь програмаас үйлдлийн систем рүү буцах хаяг ба дэд програмаас үндсэн програм руу буцах хаяг зэргийг голдуу агуулна. SS регистрээр уг сегментийг хаяглана.

4. Нэмэлт сегмент (Extra segment): Үүнийг тусгай зориулалтаар голдуу хэрэглэдэг. Өөрөөр хэлбэл нэмэлт өгөгдөл ашиглах үед хэрэглэдэг. Заавал байх албагүй.

Дээрх 4 сегмент нь нэг нэг хаягийг эзлэнэ. Энэ хаяг нь 64к байтын хувьд хамгийн эхнийх нь байна. Түүнд хандахдаа шилжих хаягаар хандана. Шилжих хаяг гэдэг нь тухайн сегмент дотор гүйх хаяг юм. Өөрөөр хэлбэл, програм дотор бүх санах ойн үүрүүд нь сегментийн эхлэлтэй хамааралтайгаар хаяглагдана. Үүр болгон шилжлэг (offset) хаягтай байна.

-5- Боловсруулсан: магистр багш Т.Амартүвшин

Page 6: Computerin tehnikin undes 1hicheeliin lektsiin huraangui

“Компьютерийн техникийн үндэс” хичээлийн лекцийн хураангуй

Регистрүүд (Registers)

Процессор нь өөрөө ямар нэг үйлдэл хийхийн тулд үйлдвэрээсээ зориулан

хийгдсэн командуудтай. Эдгээр командуудыг үндэслэн програмыг хэлийг зохиодог. Иймд процессор нь тухайн командуудтай харилцан ажиллах үүднээс тэдгээртэй ажиллах болох регистрүүдийг өөртөө агуулдаг. Регистрүүд нь микропроцессоруудын ажиллах явцад биелэгдэх командыг агуулах, санах ойг хаяглах, арифметик үйлдэлд хэрэгтэй мэдээллийг хаяглахад хэрэглэдэг өндөр хурдтай санах ойн хэсэг юм. Нөгөө талаас регистр нь өгөгдөл хадгалах хувьсагч юм. Энэ дотор өгөгдлийг арилгаж болно, мөн шинээр үүсгэж болно. Регистрүүдийг доорх байдлаар ангилж болно.

1. Сегмент регистрүүд (Segment): - CS (code segment) регистр нь код сегментийн эхлэх хаягийг агуулна. IP

(instruction pointer) регистрийн заасан утгаар шилжлэг хаягаа авч биелүүлэх утгаа авна. - DS (data segment) регистр нь өгөгдлийн сегментийн эхлэх хаягийг агуулна. - SS (stack segment) регистр нь стек сегментийн эхлэх хаягийг агуулна. - ES (extra segment) регистр нь зарим тэмдэгтэй хийх үйлдлүүдэд санах ойг хаяглахад ашигладаг нэмэлт регистр. Энэ регистрийг ашиглахдаа програмд анхны утгыг нь зааж өгөх шаардлагатай.

2. Ерөнхий зориулалтын регистрүүд: AX, BX, CX, DX. Эдгээр нь 16 битийн регистр тул ахлах болон бага регистр гэж дотроо 2 хуваагдана. - Accumulator : AX регистрын ахлах байт нь AH, бага байт нь AL

MOV AX, FFFF MOV CX, 4C00H MOV AH, 4CH MOV AL, 00H

MOV –(Move data) 2 дахь гишүүний утгыг 1 дэх гишүүнд хуулна. - Base register: BX регистр үндсэн регистр ба ихэвчлэн санах ойн хаяганд ашиглана. (BH, BL) - Count register : Энэ регистрийг тоог тоолоход ашиглана. (CH, CL) - Data register : Энэ регистр нь өгөгдөлд хадгалах зориулалтай. (DH, DL)

MOV AH, 09h LEA DX, STR1 INT 21h

LEA –(Load Effective Address) 2 дахь гишүүний шилжлэг хаягийг эхний гишүүн болох регистрт хийнэ. INT - (Interupt) тасалдал дуудах команд 3. Заагч регистрүүд: Өгөгдөлд хандахад хэрэглэгдэнэ.

-6- Боловсруулсан: магистр багш Т.Амартүвшин

Page 7: Computerin tehnikin undes 1hicheeliin lektsiin huraangui

“Компьютерийн техникийн үндэс” хичээлийн лекцийн хураангуй

- SP (stack pointer) хамгийн оройн элементийг заана. SP нь SS регистртэй хамтран стек ойг хаяглана. - BP (base pointer) санах ойн заагч регистр.

4. Индекс регистрүүд: Mэдээллийг зөөхөд буюу хаяглалтанд ашиглана. - SI (sourse index) Энэ регистр нь DS регистртэй хамтран хэрэглэгдэнэ. - DI (destination index) регистр нь ES регистртэй хамтран хэрэглэгдэнэ.

5. Командын заагч регистрүүд: IP (instruction pointer) IP командын заагч регистр нь тухайн гүйцэтгэх командын шилжлэг хаягыг заана. Програмын дунд энэ регистрт энгийнээр хандаж болохгүй, харин DOS-н DEBUG програмыг ашглан програмыг шалгах үед утгыг нь өөрчилж болно.

6. Төлвийн регистр (Flag register): Энэ регистр нь микропроцессорын тухайн төлөв байдлыг заана.

Флаг бит Зориулалт

O /Overflow/ Бит 11: Арифметик үйлдлийн үр дүнд хамгийн ахлах битээс халилт үүсвэл идэвхижнэ. Халилтын бит Бит 10: Команд нь матриц буюу тэмдэгттэй ажиллахдаа тэмдэгтэд хандахдаа SI эсвэл DI регистрийн автоматаар сонгоно. Энэ бит 0 бол нэмэгдүүлж, 1 бол хорогдуулж дараагийн элементэд хандана.

D /Direction/ чиглэлийн бит

I /Interrupt/ Бит 9: Гадаад тасалдлыг хориглосон бол 0, зөвшөөрсөн бол 1 гэсэн утгыг авна. Тасалдлын бит

T /Trap/ Бит 8: Микропроцессор нь алхамын горимд байгааг илэрхийлнэ. Алхамын бит

S /Sign/ Бит 7: Арифметик үйлдлийн үр дүнгийн тэмдгийг заана. + бол 0, -бол 1 гэсэн утгыг авна. Тэмдгийн бит

Z /Zero/ Бит 6: Арифметик болон харьцуулах үйлдлийн үр дүнд 0 гарвал идэвхижнэ. Тэгийн бит

A /Auxilliary carry / Бит 4: 8 бит өгөгдлийн 3 дахь битээс орон шилжилт үүсвэл идэвхижнэ. Туслах шилжилтийн бит Бит 2: Бага 8 бит өгөгдлийн 1 гэсэн битүүдийн тоо тэгш буюу сондгойг заана. P /Parity /

Тэгш сондгойн бит Тэгш бол 1, сондгой бол 0 гэсэн утга авна. C /Carry/ Бит 0: Арифметик болон шилжүүлэх үйлдлийн үр дүнд

хамгийн ахлах битээс орон шилжилт үүсвэл идэвхижнэ. Шилжилтийн бит

Ерөнхийдөө сегмент регистрүүд нь доорх байдлаар хосолж, хаяглалтанд хэрэглэгдэнэ.

-7- Боловсруулсан: магистр багш Т.Амартүвшин

Page 8: Computerin tehnikin undes 1hicheeliin lektsiin huraangui

“Компьютерийн техникийн үндэс” хичээлийн лекцийн хураангуй

Ассемблер хэлний элементүүд, бүтэц, толгой, директивүүд

Латин цагаан толгойн 0-9 хүртлэх цифр болон бусад тэмдэглэгээг ашиглана. Ассемблер хэлний програм бичих ерөнхий формат нь:

[тусгай тэмдэглэгээ] [команд] [операнд(s)] Нэр үйлдэл гишүүд

Нэг мөрөнд хамгийн ихтэй 132 тэмдэгт байрлана. Жишээ нь: MOV AX, 0 ; үйлдэл, 2 гишүүн → AX регистрт 0 гэсэн утга олгоно. COUNT DB1 ;нэр, үйлдэл, нэг гишүүн → COUNT хувьсагчийг 1 гэсэн

анхны утгатай зарлана. Тусгай тэмдэглэгээ: Тусгай тэмдэглэгээ нь командаас хамаарч байхгүй байж болно. Тусгай тэмдэглэгээ

хэрэглэгчээс өгсөн нэртэй байна. A-Z, a-z, 0-9 цифр ? . e _ $ гэх мэт үсэг, тоо, тэмдэгтүүд орно. Нэр нь 31-н тэмдэгтээс илүүгүй байх ба ижил нэртэй байж болохгүй. PAGE25, $E10 гэх мэт байж болно.

Команд: Ассемблерийн ямар үйлдэл хийхийг заана. Өгөгдлийн сегмент дотор үйлдэл нь ажлын

талбар, эсвэл тогтмол утга аль нь болохыг тодорхойлно. Код сегмент дотор (MOV-ачаалах, ADD-нэмэх) хийх үйлдлийг заана.

Операнд: Гишүүн нь өгөгдлийн анхны утгыг заах буюу эсвэл үйлдлийн хаана хийгдэхийг заана.

Жишээ нь: COUNTR DB0 ;COUNTR гэсэн нэртэй байтыг 0 гэсэн анхны утгатайгаар

тодорхойлно .

RET ; буцаах үйлдэл, гишүүнгүй INC CX ; нэгээр нэмэгдүүлэх үйлдэл, 1 гишүүнтэй ADD AX,12 ; АХ регистр дээр 12-г нэмэх ба 2 гишүүнтэй

Ассемблер хэлний директивүүд ба

хийсвэр үйлдлүүд

Ийм үйлдлүүд (нэгэн төрлийн команд) нь машины код үүсгэдэггүй ба програмын хөрвүүлэлтийн үед зөвхөн ажиллана. Өргөн хэрэглэгддэг директивүүд нь:

-8- Боловсруулсан: магистр багш Т.Амартүвшин

Page 9: Computerin tehnikin undes 1hicheeliin lektsiin huraangui

“Компьютерийн техникийн үндэс” хичээлийн лекцийн хураангуй

1. PAGE: - Энэ директив нь хэвлэж гаргах хуудасны хэмжээг зааж өгдөг. Өөрөөр

хэлбэл програмын эхэнд 1 хуудсанд байх мөрний тоо, нэг мөрөнд байх тэмдэгтийн тоог зааж өгдөг. 1 хуудсанд 10-255 мөр, 1 мөрөнд 60-132 тэмдэгт байж болно.

2. TITLE: <ТЕКСТ> Тухайн програмд гарчиг тайлбар хийж өгөх тохиолдолд ашиглах ба үүнийг хуудас бүрийн эхэнд хэвлэнэ. Сегментийн хувьд Page-н дараа байна. Програмын тайлбартайгаа нийлээд 60-аас илүүгүй тэмдэгтийн урттай байна. Жишээ нь: TITLE <lab1>

3. SUBTTL: Дэд програмд нэр өгнө.

4. SEGMENT: Бүх ассемблер програмууд нь хамгийн багадаа 1 сегмент агуулна. Энэ нь код сегмент байх ба код сегментийг биелэгдэх кодууд ашиглана. Зарим програмууд код сегментээс гадна стек сегментийг стек ойтой ажиллахдаа, өгөгдөл тодорхойлохдоо өгөгдлийн сегментийг ашигладаг. Иймд энэ нь тухайн програмд SEGMENT-ийг зарлаж өгөх үүрэгтэй. Формат нь:

[Нэр] SEGMENT [параметр] ; сегментийн эхлэл ……………………………. ; үйлдэл ……………………………. [Нэр] ENDS ; сегментийн төгсгөл

Нэрийг хэрэглэгч өөрөө зохионо. Нэрийн урт ≤ 31. (дээр дурьдсан) Параметр нь хэд хэдэн үүргийн гүйцэтгэнэ. 3 янз байна.

- Alignment type Tухайн segment-ийн эхлэх завсарыг (хязгаар) заана. Сегментийн эхлэн хаяг 16-д хуваагдах тоо байх ба үүнийг Paragraph boundary гэнэ. Эндээс эхлэнэ гэж үзвэл PARA гэж тавина. Өөрөөр хэлбэл Ерөнхий энгийн програм ашиглаж байх тохиолдолд параметрт нь PARA гэж бичнэ. Segment гэж тодорхойлоогүй бол PARA гэж ойлгоно. (0÷3FF хаягийг хаяглана.)

- Combine Type Өөр сегменттэй холбогдох (link) үед STACK, COMMON, PUBLIC, AT, MEMORY гэх мэт төрлүүдийн аль нэгийг зааж өгнө. Жишээ нь: Name SEGMENT PARA STACK гэж стек сегментийг тодорхойлж өгч болно. Өөр програмуудтай холбогдоогүй програмуудад үүнийг тодорхойлохгүй.

- Class Type Класс төрлийг нь apostroph (‘ ‘) дотор бичих ба хамтрах (link) сегментүүдтэй групп (бүлэг) болгоход хэрэглэнэ. Өөрөөр хэлбэл тухайн сегментийг бүлэглэн хэрэглэх тохиолдолд дараах байдлаар бичнэ. Жишээ нь: Нэр SEGMENT PARA STACK ‘Stack’ ....................................................... Нэр ENDS 5. PROC: Код сегмент нь програмын биелэгдэх кодоос гадна нэг буюу хэд хэдэн процедурыг агуулна. Формат нь: Нэр PROC параметр Нэр Endp

-9- Боловсруулсан: магистр багш Т.Амартүвшин

Page 10: Computerin tehnikin undes 1hicheeliin lektsiin huraangui

“Компьютерийн техникийн үндэс” хичээлийн лекцийн хураангуй

Зөвхөн 1 процедуртай сегментийн жишээ: Сегментийн Нэр SEGMENT PARA Процедур Нэр PROC FAR ............................ ............................ RET Процедур Нэр ENDP Сегментийн Нэр ENDS

FAR гэсэн операнд нь процедурыг програмын эхлэл хэсэг гэдгийг DOS-н програм ачаалагчид зааж өгнө. RET нь тухайн процедур дуудаж байгааг илэрхийлнэ. Мөн удирдлагыг DOS-руу эсвэл өмнөх процедур луу шилжүүлнэ. ENDP нь заасан процедуртай ижил нэртэй байх ба процедурын төгсгөлийг заана.

Параметр нь заавал тодорхой байх албагүй. Хэрэв байвал 2 төрөл байна. - FAR (хол) - NEAR (ойр)

Параметрийг заагаагүй бол тухайн процедур нь өөрийгөө ойрын процедур гэж ойлгоно. Тухайн процедурыг дуудаж байгаа газар нь нэг сегмент дотор байвал энэ үед ойрын дуудлагыг хэрэглэнэ. Хэрэв тухайн процедурыг өөр сегмент дотор дуудан хэрэглэж байвал энэ нь холын дуудлага болно. Өөр segment дотор дуудан ашиглаж байвал холын удирдлага буюу FAR segment командыг заавал ашиглана. Жишээ: 6. ASSUME: МП нь SS регистрийг стек санах ойг хаяглахад, DS регистрийг өгөгдлийн санах ойг хаяглахад, CS регистрийг код сегмент буюу командын санах ойг хаяглахад хэрэглэнэ. Програмист нь ассемблерт сегмент регистр нь ямар сегменттэй холбогдож байгааг эсвэл зааж байгааг зайлшгүй тодорхойлж өгсөн байх шаардлагатай. Энэ тохиолдолд ASSUME директивын тусламжтайгаар тэдгээр сегмент регистрүүдийг ямар сегменттэй холбогдож байгааг зааж өгч болдог. ASSUME нь код сегмент дотор доорх байдлаар бичигдэнэ. Формат нь: ASSUME SS: stackname, DS: datasegname, CS: codesegname, ES: nothing 7. END: Энэ нь програмыг бүхэлд нь дууссаныг заана. Формат нь: END [Процедурын нэр] ; операнд нь хоосон байж болно. ENDS [Сегментийн нэр] ; сегментийг дуусгана. ENDP [Процедурын нэр] ; процедурыг дуусгана.

Програмын толгой

Биелэгдэх боломжтой програмууд нь EXE болон COM өргөтгөлтэй 2 төрөл байна. DOS үйлдлийн систем нь ассемблер програмыг EXE файл болгоход 4 үндсэн шаардлага тавьдаг.

1. Сегмент регистр нь ямар сегментийг зааж байгааг тодорхойлж өгсөн байх шаардлагатай

2. Програмын биелэлт эхлэх үед DS регистр дэхь хаягийг стек ойд хадгална. Санах ойд програм биелэгдэхийн яг өмнө PSP (Program Segment Prefix) гэж нэрлэдэг 256 байт (100H) хэмжээтэй санах ойн хэсэг үүсдэг бөгөөд энэ нь програм биелэгдэх болон програмаас гарах нөхцлүүдийг агуулна. DOS-н ачаалагч програм нь DS регистрийг PSP-н эхлэлийг тавихдаа ашиглана. Програм нь стек ойруу PUSH

-10- Боловсруулсан: магистр багш Т.Амартүвшин

Page 11: Computerin tehnikin undes 1hicheeliin lektsiin huraangui

“Компьютерийн техникийн үндэс” хичээлийн лекцийн хураангуй

үйлдэл хийн энэ хаягийг хадгална. Сүүлд нь DOS руу буцахдаа RET командыг ашиглана.

3. Стек санах ойд 0 гэсэн утгыг хадгална. Систем нь стек санах ой дахь дараагийн утгыг (өөрөөр хэлбэл шилжлэг хаяг) 0 байхыг шаарддаг. Энэ зорилгоор SUB командаар АХ регистрийг цэвэрлэн, PUSH командаар стек ойд хадгална.

4. DS регистрт өгөгдлийн сегментийн хаягийг хадгална. DOS-ийн ачаалагч програм нь стек ойн хаягийг SS регистрт, код сегментийн хаягийг CS регистрт хадгалсан. Ачаалагч програм DS регистрийг өөр зорилгоор ашигласан учир DS-г 2 ширхэг MOV команд ашиглан анхны утгыг нь тодорхойлно.

Дээрхийг програмд бичвэл: STACKSG SEGMENT PARASTACK Stack ‘Stack’ DATASG SEGMENT PARA ‘Data’ CODESG SEGMENT PARA ‘Code’

BEGIN PROC FAR ASSUME CS: CODESG,

DS: DATASG, 1 SS: STACKSG

PUSH DS - 2 SUB AX, AX 3 PUSH AX MOV AX, DATASG MOV DS, AX 4 ……… ……… RET BEGIN ENDP 5 CODESG ENDS END BEGIN Дээрх бичлэгийг хялбар байдлаар бичвэл доор маягаар тодорхойлж болно. Цаашдаа жишээ програмыг дараах хялбар бичлэгээр бичих болно. .MODEL SMALL .DATA .STACK 100H .CODE BEGIN PROC FAR ; Холын процедурын эхлэл MOV АХ, @ Data ;Өгөгдлийн сегментийн эхлэлийг зааж өгнө. MOV DS, AX …….. …….. RET ; Процедураас буцна. BEGIN ENDP ; Процедурын төгсгөл END BEGIN ; Програмын төгсгөл

COM өргөтгөлтэй файл

-11- Боловсруулсан: магистр багш Т.Амартүвшин

Page 12: Computerin tehnikin undes 1hicheeliin lektsiin huraangui

“Компьютерийн техникийн үндэс” хичээлийн лекцийн хураангуй

Өргөн хэрэглэдэг СОМ файлын нэг жишээ бол COMMAND.COM юм. Ассемблер програмыг хэрэглэх үед СОМ өргөтгөлтэй файлд хөрдүүлэхдээ TLINK /T EXAMPLE.OBJ гэж бичвэл EXAMPLE.EXE файлыг бус EXAMPLE.COM файлыг шууд үүсгэнэ. Мөн EXE2BIN.COM нэртэй DOS-н програмнь EXE файлыг СОМ файл руу хөрвүүлдэг. EXE ба COM файлуудын ялгаа

1. Програмын хэмжээ СОМ файл нь хамгийн ихдээ 64К байт буюу 1 сегментийн хэмжээгээр хязгаарладаг бол ЕХЕ програм нь ямар ч хэмжээтэй байж болно. СОМ файл нь өөрийнхөө ЕХЕ файлаас үргэлж бага хэмжээтэй байдаг. Нэг шалтгаан нь 512 байт толгой блок СОМ файлд байдаггүй, харин ЕХЕ файлтай ажиллахад энэ блок хэрэглэгддэг.

2. Стек сегмент ЕХЕ програм нь стек сегментийг тодорхойлдог ба СОМ програм нь үүнийг автоматаар үүсгэдэг. Иймээс СОМ файлд хөрвүүлэх зорилготой ассемблер програмыг бичих үедээ стек ойг зарлалгүй орхиж болно.

3. Өгөгдлийн сегмент ЕХЕ програм өгөгдлийн сегментийг голдуу тодорхойлдог ба DS регистрийн анхны утгыг нь олгоно. Харин СОМ програм код сегмент дотроо өгөгдлөө тодорхойлох ёстой.

4. Анхны утга олгох ЕХЕ програм DS регистрт анхны төлвийг нь тогтооно. СОМ програмд стек ба Data segment-үүд байхгүй учраас дээрх үйлдлийг хийдэггүй. СОМ програм эхлэх үед бүх сегмент регистрүүд PSP-н хаягийг агуулна. PSP нь 256 байт хэмжээтэй санах ойн блок ба СОМ болон ЕХЕ програмыг санах ойд эхлүүлэхийн өмнө DOS-руу оруулдаг. Учир нь PSP-н эхлэлээс 100Н шилжлэг утганаас эхлэн хаяглалт явагдана. Энэ зорилгоор код сегментийн эхлэл бичлэгийн дараа ORG 100H гэсэн хийсвэр үйлдэл бичигддэг.

Ассемблер програм зохиох үе шат

Програмыг дурын текст редактор дээр бичиж болдог. Ассемблер хэлэнд өгөгдсөн програмыг ЕХЕ болон СОМ файл болгоход 2 үе шатыг дамжина. 1-р шат: Өгөгдсөн програмыг ассемблер хэлний хөрвүүлэгчээр машины (OBJ) object кодонд хөрвүүлдэг. Энэ хөрвөсөн дүрсийг object модуль гэнэ. Энэ нь биелэх програм биш зөвхөн биелэх програм руу хөрвүүлэхэд хялбар болгосон 16-тын хэлбэртэй машины код юм. ASM EXAMPLE. ASM гэхэд EXAMPLE.OBJ үүснэ. 2-р шат: Object файлруу хөрвүүлэх явцад ямар нэгэн алдаа илрээгүй бол object файлыг Link.exe програмын тусламжтайгаар ЕХЕ файлруу хөрвүүлэлтийг хийнэ. LINK EXAMPLE. OBJ гэхэд EXAMPLE.EXE файл үүснэ. ЕХЕ файлыг хэрэглэх хүсэлтэй бол эндээс шууд ашиглах ба СОМ файл мэтээр ажиллуулах гэвэл No stack segment гэсэн мэдээлэл өгнө. Харин LINK /T CALC.OBJ гэхэд СОМ програм нь объект програмаасаа үүснэ. Мөн өөрөөр EXE2BIN CALC, CALC.COM гэж ЕХЕ файлаас СОМ файлд хөрвүүлж болно. СОМ файлд нэр өгч болно. СОМ файл үүссэний дараа OBJ, EXE файлуудыг устгаж болно.

Өгөгдөл ачаалах үйлдлүүд (Data movement Instructions)

-12- Боловсруулсан: магистр багш Т.Амартүвшин

Page 13: Computerin tehnikin undes 1hicheeliin lektsiin huraangui

“Компьютерийн техникийн үндэс” хичээлийн лекцийн хураангуй

Өгөгдлийг нэг байрлалаас нөгөө байрлалд зөөх зориулалттай дараах командууд байдаг. MOV, XCHG, LDS, LEA, LES, LFS, LGS, LSS, PUSH, PUSHA, PUSHAD, PUSHF, PUSHFD, POP, POPA, POPAD, POPF, POPFD, LAHF болон SAHF 1. MOV (Move data) – 2 дахь гишүүний утгыг 1 дэх гишүүнд хуулна. Нөлөөлөх төлвийн битүүд байхгүй. Энэ командыг ашиглан тоон утгыг регистрт, санах ойн өгөгдлийг регистрт, регистрийн утгыг санах ойд, регистрээс регистрт утга ачаалах үйлдлүүдийг хийдэг бөгөөд өгөгдөл нь 1 буюу 2 байт урттай байна. Харин энэ командаар санах ойгоос санах ойд утга шилжүүлэлт хийдэггүй. Энэхүү командын гишүүд нь дараах зүйлүүд байж болно.

mov reg, reg1 mov mem, reg mov reg, mem mov mem, immediate data mov reg, immediate data mov ax/al, mem mov mem, ax/al mov segreg, mem16 mov segreg, reg16 mov mem16, segreg mov reg16, segreg

Энд immediate data – шууд утга, reg1- нь үндсэн регистр, reg16- 16 битийн регистр болно. 2. The XCHG Instruction

(Exchange) – 2 гишүүний утгыг хооронд нь солино. Формат нь:

XCHG operand1, operand2 /80х86 процессорын хувьд/

xchg reg, mem xchg reg, reg / 80386 болон сүүлийн үеийн xchg ax, reg16 процессорын хувьд/ xchg eax, reg32

3. The LDS, LES, LFS, LGS, and LSS Instructions

LDS, LES, LFS, LGS, болон LSS үйлдлүүд нь 16 битийн ерөнхий зориулалтын регистр ба сегментүүдийг хослон хэрэглэж болдог. Бичигдэх хэлбэр нь:

LxS dest, source /dest = destination –зорьсон газар/ Харин онцгой хэлбэр нь:

lds reg16, mem32 les reg16, mem32 lfs reg16, mem32 (3) lgs reg16, mem32 (3) lss reg16, mem32 (3)

(3) дугаартай нь 80386 болон сүүлийн үеийн процессорын хувьд бичигдэнэ. 4. The LEA Instruction (Load Effective Address) – 2 дахь гишүүний санах ойн шилжлэг хаягийг эхний гишүүн болох регистрт хийнэ. Өөрөөр хэлбэл 2 байтаас илүү урттай мэдээллийг зөөх ба мөн санах

-13- Боловсруулсан: магистр багш Т.Амартүвшин

Page 14: Computerin tehnikin undes 1hicheeliin lektsiin huraangui

“Компьютерийн техникийн үндэс” хичээлийн лекцийн хураангуй

ойгоос санах ойд утга шилжүүлэхдээ LEA командыг санах ой дахь хувьсагчийн хаягийг авахад ашигладаг. Нөлөөлөх төлвийн битүүд байхгүй. Бичигдэх хэлбэр нь:

LEA <регистр>, <хувьсагч> lea reg16, mem / 80386 болон сүүлийн үеийн lea reg32, mem процессорын хувьд/

5.6. The PUSH and POP Instructions Стек ой

PUSH үйлдэл хийн стек ойд 1 байт хаяг буюу утгыг хийдэг. POP үйлдэл нь яг өмнө нь PUSH хийсэн утгыг стек ойгоос буцааж авдаг. Стек санах ойн LIFO (Laste Input First Output) зарчмаар буюу сүүлд орсон өгөгдөл нь эхэлж гардаг зарчмаар ажилладаг санах ой юм. PUSH, POP үйлдлүүд нь 2-уулаа SP (стекийн заагч) регистрийн агуулж буй шилжлэг хаягийг өөрчилнө. Стек ой нь PUSH хийж байгаа утгуудыг багтаахаар хангалттай зайтай байх хэрэгтэй. Голдуу 32 word хэмжээтэйгээр стек ойг зарлахад хүрэлцдэг. • PUSH SP –ийн утгыг 2 –оор хорогдуулна. 16 битийн гишүүний утгыг стекийн оройд хийнэ. Гишүүн: ерөнхий зориулалтын регистр, сегмент регистр, санах ойн байрлал, шууд утга байж болно. Нөлөөлөх төлөвийн битүүд байхгүй. • POP Заагдсан гишүүндээ стек орой дахь 16 бит утгыг хуулж аваал, SP регистрийн утгыг 2-оор хорогдуулна. Гишүүн: ерөнхий зориулалтын регистр, санах ойн байрлал байж болно. Нөлөөлөх төлөвийн битүүд: байхгүй PUSH, PUSHF, CALL, INT, INTO гэсэн командууд нь буцах хаяг, флаг регистрийн утга зэргийг стек санах ойд хадгалдаг. POP, POPF, RET, IRET гэсэн командууд нь буцах хаяг, флаг регистрийн утга зэргийг стекээс гаргаж авдаг командууд юм. 7. 8. The LAHF and SAHF Instructions • LAHF (Load AH from Flags) – Төлвийн регистрийн зөвхөн бага 8 битийн утгыг АН

регистрт ачаална. Нөлөөлөх төлвийн битүүд: байхгүй • SAHF (Store AH Contents in Flags) – АН регистрийн утгыг төлвийн регистрийн

зөвхөн бага 8 битэд хуулж хийнэ. Нөлөөлөх төлвийн битүүд: SF, ZF, AF, PF, CF

Удирдлага шилжүүлэх командууд o JMP (Unconditional Jump) – Нөхцөлт бус үсрэлт бөгөөд ямар ч зүйлээс шалтгаалахгүй

буюу нөхцөл шалгахгүйгээр бүх тохиолдолд удирлагыг шилжүүлдэг команд юм. Нөлөөлөх төлвийн битүүд: байхгүй

128 ба -127 байтуудын доторх JMP үйлдэл нь SHORT JUMP буюу богино үсрэлт болно. Өөрөөр хэлбэл хэрэв ойрын зайнд буюу 128 байт дотор үсрэлт хийж байгаа бол short түлхүүр үгийг ашиглана.

-14- Боловсруулсан: магистр багш Т.Амартүвшин

Page 15: Computerin tehnikin undes 1hicheeliin lektsiin huraangui

“Компьютерийн техникийн үндэс” хичээлийн лекцийн хураангуй

JMP short <тэмдэглэгээ> Ассемблер нь 00-ээс FF хооронд байх 1 байт хэмжээтэй үсрэх хаягийг үүсгэдэг.

Нөхцөлт үсрэлтүүд гэдэг нь өмнөх үйлдлийнхээ үр дүнд үүсэх төлвийн битүүдийг шалган, заагдсан нөхцөл нь биелсэн үед өгөгдсөн (заасан) шилжүүлэх хаягруу үсрэнэ. Эдгээрийг дараах байдлаар 3 ангилж болно.

- Тэмдэгтэй ба тэмдэггүй өгөгдлүүд дээр хийгдэх үсрэлт

Команд Тайлбар Шалгах флаг

JE / JZ Тэнцүү буюу үр дүн 0 ZF JNE / JNZ Тэнцүү биш буюу үр дүн 0 биш ZF JS Сөрөг үр дүн гарвал SF JNS Эерэг үр дүн гарвал SF JC Орон шилжилт үүсвэл CF JNC Орон шилжилт үүсээгүй бол CF JO Халилт үүсвэл OF JNO Халилт үүсээгүй бол OF JP / JPE 1-үүдийн тоо сондгой бол PF JNP / JP 1-үүдийн тоо тэгш бол PF JCXZ СХ регистрийн утга 0 ба тэг үр дүн ZF

- Тэмдэггүй өгөгдөл дээр хийгдэх үсрэлт Команд Тайлбар Шалгах флаг

JA / JNBA Илүү буюу тэнцүү / бага биш CF, ZF JAE / JNB Илүү / тэнцүү буюу бага биш CF JB / JNEA Бага буюу илүү / тэнцүү биш CF JBE / JNA Бага / тэнцүү буюу илүү биш CF, AF

- Тэмдэгтэй өгөгдөл дээр хийгдэх үсрэлт Команд Тайлбар Шалгах флаг

JG / JNLE Илүү буюу тэнцүү / бага биш ZF, SF, OF JGE / JNL Илүү / тэнцүү буюу бага биш SF, OF JL / JNGE Бага буюу илүү / тэнцүү биш SF, OF JLE / JNG Бага / тэнцүү буюу илүү биш ZF, SF, OF o Өгөгдсөн нөхцөлт үсрэлт команд CMP (Compare) хамт хасах үйлдэл хийнэ. CMP

команд ашигласан үед Flag register утга зөвхөн өөрчлөгдөнө. Өөрөөр хэлбэл 2 өгөгдлийн талбарын утгуудыг хасах зарчмаар харьцуулна. Энэ команд нь гишүүн1-ээс гишүүн2-ийг хассан мэт үйлдлийг хийх ба эдгээр гишүүдийн утганд нөлөөлөхгүй, Харин төлвийн битүүдэд нөлөөнө. Гишүүд нь байт байж болно, word хэмжээтэй ч байж болно. Энэ үйлдэл нь регистр, санах ой, шууд утгыг регистртэй, эсвэл регистр, шууд утгыг санах ойн утгатай харьцуулна.

Нөлөөлөх төлвийн битүүд: AF, CF, OF, PF, SF, ZF • Давталт LOOP (Loop until Complete) – Энэ команд нь мөн давталтыг үүсгэх ба СХ

регистрийн утга 0 биш бол 1-ээр хорогдуулаад, удирдлагыг гишүүнээр заагдсан хаягт шилжүүлнэ. (хаяг нь энэ командаас -128-аас +127 байтын доторх санах ойд байна) Өөрөөр хэлбэл давталт бүрт СХ регистрийн утга 1-ээр хорогдох ба СХ регистрийн утга 0 болоогүй бол үсрэнэ. Харин 0 болсон бол доор команд уруугаа шилжинэ.

Нөлөөлөх төлвийн битүүд: байхгүй • Нөхцөлт үсрэлт

-15- Боловсруулсан: магистр багш Т.Амартүвшин

Page 16: Computerin tehnikin undes 1hicheeliin lektsiin huraangui

“Компьютерийн техникийн үндэс” хичээлийн лекцийн хураангуй

LOOP командыг нөхцөлт үсрэлтээр орлуулбал: LOOP A20 гэдэг нь DEC CX JNZ A20 гэсэн 2 командтай ижил юм. СХ регистрийг 1-ээр хорогдуулаад хэрэв 0 биш бол А20 уруу үсрэнэ гэсэн үг. JNZ (Jump on No Zero) – Тэгш биш үр дүн гарвал буюу ZF=0 бол уг команд нь дуудаж байгаа гишүүний шилжлэг хаягийг IP регистр дээр нэмэн, үсрэх үйлдлийг гүйцэтгэнэ. Нөлөөлөх төлвийн битүүд: байхгүй Тэмдэгтэй (Signed) ба тэмдэггүй (Unsigned) өгөгдлүүдийн ялгаа Нөхцөлт үсрэлт нь тэмдэгтэй ба тэмдэггүй өгөгдлүүдэд ялгааатай хэрэглэгддэг. Тэмдэггүй өгөгдөл нь бүх битүүдийг өгөгдлийн бит гэж ойлгоно. Тэмдэгтэй өгөгдөл нь хамгийн зүүн талын ахлах 1 битийг тэмдэг гэж авна. Үлдсэн битүүдийг өгөгдлийн бит гэж ойлгоно. Уг битийн утга 0 бол эерэг, 1 бол сөрөг өгөгдөл гэж ялгана. Жишээ нь: АХ регистрт 1100 0110, ВХ регистрт 0001 0110 гэсэн утгууд байвал

CMP AX, BX гэсэн үйлдэл нь АХ ба ВХ регистрүүдийг харьцуулна. Тэмдэггүй өгөгдлийн хувьд АХ регистрийн утга илүү их, харин тэмдэгтэй өгөгдлийн хувьд ВХ регистрийн утга илүү их болно. • Дэд процедур дуудах CALL Энэ команд нь функц ба процедуруудыг дуудаж ажиллуулахад хэрэглэгдэнэ. CALL командаар дуудсан функц ба процедуруудаас буцахдаа RET командыг ашиглана. Уг команд нь SP регистрийн утгыг 2-оор хорогдуулаад, IP регистр дахь биелэгдэх командын хаягийг стек санах ойд хийнэ. Дараа нь IP регистрт дуудаж байгаа програмынхаа шилжлэг хаягийг ачаална. Дуудагдах процедур нь 1 сегмент дотор болон 1 сегментийн гадна байгаагаас хамааран 4 төрлийн CALL команд байна. 1 сегментээс гаднах дуудалт нь SP регистрийн утгыг мөн 2-оор хорогдуулан, CS регистрийн утгыг стек санах ойд хийнэ. Дараа нь CS регистрт дуудагдах сегментийн хаягийг ачаална. Код сегмент нь FAR гэж дуудагдах нэг л процедурыг агуулна. FAR операнд нь системд энэ хаяг бол програмыг эхлүүлэх хаяг гэдгийг хэлж өгнө. Код сегментэд PROC, ENDP гэсэн бичиглэлээр ялгаатай хэдэн ч процедурууд байж болно.

Логик болон арифметик үйлдлүүд Програмд хэрэглэгддэг логик командууд: AND, OR, XOR, TEST, NOT AND, OR, XOR, TEST командууд нь битүүдийг тавих болон цэвэрлэх, ASCII өгөгдлүүдийг арифметикт оролцуулах зэрэгт голчлон хэрэглэгддэг ба регистр буюу санах ой дахь 1 байт эсвэл 1word өгөглүүдтэй ажиллана. 2 гишүүнтэй логик үйлдлийн үр дүн CF, OF, PF, SF, ZF (AF хамаарахгүй) зэрэг төлвийн битүүдэд нөлөөлнө.

• AND: БА үйлдэл: Харгалзах бит 1 0 0 1 1 Харгалзах бит 2 0 1 0 1 Үр дүн 0 0 0 1

• OR: БУЮУ үйлдэл: Харгалзах бит 1 0 0 1 1 Харгалзах бит 2 0 1 0 1 Үр дүн 0 1 1 1

-16- Боловсруулсан: магистр багш Т.Амартүвшин

Page 17: Computerin tehnikin undes 1hicheeliin lektsiin huraangui

“Компьютерийн техникийн үндэс” хичээлийн лекцийн хураангуй

• XOR: Зөвхөн БУЮУ үйлдэл: Харгалзах бит 1 0 0 1 1 Харгалзах бит 2 0 1 0 1 Үр дүн 0 1 1 0

• TEST: Энэ нь хэдийгээр AND үйлдэлтэй ижил мэт боловч өгөгдлийн битүүдийг өөрчлөхгүй, зөвхөн төлвийн битүүдийг өөрчилдөг.

Харгалзах бит 1 0 0 1 1 Харгалзах бит 2 0 1 0 1 Үр дүн 0 0 0 1 NOT үйлдэл нь регистр буюу санах ойн утгын 0-ийг 1 болгон, 1-ийг 0 болгож урвуулна. Төлвийн битүүдэд нөлөөлөхгүй. Шилжүүлэх ба эргүүлэх үйлдлүүд

• Шилжүүлэх үйлдлүүд SHR (shift unsigned right) – баруун тийш шилжүүлэх SHL (shift unsigned left) – зүүн тийш шилжүүлэх SAR (shift arithmetic right) – баруун тийш шилжүүлэх SAL (shift arithmetic left) - зүүн тийш шилжүүлэх SAL ба SHL командуудын хувьд дараах зурагт харуулсанаар хийгдэнэ.

Харин SAR командын хувьд дараах байдалтай байна. Ахлах бит 15-ийн утгыг 14-р битэд шилжүүлсэн ч гэсэн эргээгээд 15 дахь ахлах битдээ хадгална.

Харин SHR командын хувьд SAR командтай төстэй боловч ахлах битэд эргээгээд утгыг нь олгохгүй, харин 0 гэсэн утгыг оруулна.

• Эргүүлэх үйлдлүүд ROR (rotate right) – баруун тийш эргүүлэх ROL (rotate left) - зүүн тийш эргүүлэх

-17- Боловсруулсан: магистр багш Т.Амартүвшин

Page 18: Computerin tehnikin undes 1hicheeliin lektsiin huraangui

“Компьютерийн техникийн үндэс” хичээлийн лекцийн хураангуй

RCR (rotate with carry right) - баруун тийш CF-ийг оролцуулан эргүүлэх RCL (rotate with carry left) - зүүн тийш CF-ийг оролцуулан эргүүлэх ROL командын хувьд дараах зурагтхаруулсан байдлаар хийгдэнэ.

Харин ROR командын хувьд сумнуудын чиглэл эсрэг тийш байна. Гишүүн: Ерөнхий зориулалтын регистр, санах ойн утга байна.

Арифметик үйлдлүүд ( + , - , / , * ) Компьютер нь арифметик үйлдлийг зөвхөн 2-тын формат дээр хийдэг. Иймд 2-тын формат, түүн дээр хийдэг үйлдлүүдийг ойлгох нь чухал.

• Нэмэх, хасах үйлдлүүд: ADD – 2 утгыг нэмээд үр дүнг нь эхний операндад хадгална. ADD AX, BX ; (AX) + (BX) = (AX) ADC – 2 утгыг CF-тэй хамт нэмээд үр дүнг нь эхний операндад хадгална. ADC AX, BX ; (AX) + (BX) + (CF) = (AX) SUB – 2 утгыг хасаад үр дүнг нь эхний операндад хадгална. SUB AX, BX ; (AX) - (BX) = (AX) SBB – 2 утгыг CF-тэй хамт хасаад үр дүнг нь эхний операндад хадгална. SBB BX, CX ; (BX) - (CX) - (CF) = (BX) Дээрх арифметик үйлдлүүд нь доорх гишүүд (операндууд) дээр хийгдэнэ. 1 дэх гишүүн 2 дах гишүүн Регистр - Регистр Регистр - Санах ой Регистр - Шууд утга Санах ой - Регистр Санах ой - Шууд утга

• Үржих, хуваах үйлдлүүд: MUL (unsigned integer multiply) – Байт операндын хувьд AL регистрийн утгыг 8 бит регистр буюу санах ойн утгаар үржээд 16 бит үр дүнг АХ регистрт хийнэ. Word операндын хувьд АХ регистрийн утгыг 16 бит регистр буюу санах ойн утгаар үржээд 32 бит үр дүнг DX:AX регистрийн хосд хийнэ. MUL BL ; үйлдэл нь (BL)*(AL)=(AX) үйлдлийг хийнэ.

-18- Боловсруулсан: магистр багш Т.Амартүвшин

Page 19: Computerin tehnikin undes 1hicheeliin lektsiin huraangui

“Компьютерийн техникийн үндэс” хичээлийн лекцийн хураангуй

IMUL (signed integer multiply) – MUL үйлдэлтэй ижил боловч ялгаа нь signed тоонууд дээр хийгдэнэ. DIV (unsigned integer divide) – Байт операндын хувьд АХ регистрийн утгыг 8 бит регистр буюу санах ойн утганд хуваагаад 8 бит үр дүнг AL регистрт, үлдэгдлийг нь АН регистрт хийнэ. Word операндын хувьд DX:AX регистрийн хосд байгаа 32 бит утганд 16 бит регистр буюу санах ойн утгыг хуваагаад 16 бит үр дүнг АХ регистрт, үлдэгдлийг нь DX регистрт хийнэ. IDIV (signed integer divide) – DIV үйлдэлтэй бараг ижил боловч ялгаа нь signed тоонууд дээр үйлдэл хийнэ. CBW (convert byte to word) – AL регистрийн signed утгыг АХ регистрт хийх ба AL-ийн ахлах бит буюу 7 дахь битээр АН-ийн битүүдийг дүүргэнэ. Төлвийн флаг өитүүдэд нөлөөлөхгүй. CWD (convert byte to word) – АХ регистрийн signed 2 байт утгыг DX:AX регистрт хийх ба АХ-ийн ахлах бит буюу 15- дахь битээр DX-ийн битүүдийг дүүргэнэ. Төлвийн флаг битүүдэд нөлөөлөхгүй. INC (increment) – регистр/ санах ойн утгыг 1-ээр нэмэгдүүлнэ. Төлвийн битүүдэд нөлөөлөхгүй. DEC (decrement) – регистр/ санах ойн утгыг 1-ээр хорогдуулна. Төлвийн битүүдэд нөлөөлөхгүй.

Тэмдэгт мөртэй ажиллах үйлдлүүд

• Давталтын директивүүд: REP, REPZ, REPE, REPNE, REPNZ (repeat string

prefix) 1. REP директив нь СХ регистрийн утгыг 0 болтол тэмдэгтэй хийх үйлдлийг давтана. СХ регистрийн утгыг өмнө нь зааж өгнө. Чиглэлийн төлвийн бит DF-ээр давталтын чиглэлийг зааж өгнө.

- DF=0 бол зүүнээс баруун тийш чиглэлээр давтана. CLD командаар DF-ийг 0 болгож болно.

- DF=1 бол баруунаас зүүн тийш чиглэлээр давтана. STD командаар DF-ийг 1 болгоно. 2. REPZ / REPE директив нь

- Тэгийн төлвийн бит ZF= 0 бол тэмдэгтэй хийх үйлдлийг давтана. - ZF = 1бол эсвэл CX регистрийн утга 0 болвол давталтаас гарна.

3. REPNZ / REPNE директив нь - Тэгийн төлвийн бит ZF = 1 бол тэмдэгттэй хийх үйлдлийг давтана. - ZF = 0 бол СХ регистрийн утга 0 болвол давталтаас гарна.

Тэмдэгтэй ажиллах үндсэн 5 команд ассемблерт байна.

Гишүүд Байттай ажиллахдаа

Word-той ажиллахдаа Команд (шууд бичигдэхгүй)

MOVS DI, SI MOVSB MOVSW LODS AL, SI эсвэл AX, SI LODSB LODSW STOS DI, AL эсвэл DI, AX STOSB STOSW CMPS SI, DI CMPSB CMPSW SCAS DI, AL эсвэл DI, AX SCASB SCASW

-19- Боловсруулсан: магистр багш Т.Амартүвшин

Page 20: Computerin tehnikin undes 1hicheeliin lektsiin huraangui

“Компьютерийн техникийн үндэс” хичээлийн лекцийн хураангуй

• Санах ойн нэг байрлалаас нөгөөд тэмдэгтүүдийг хуулах командууд: MOVS,

MOVSB, MOVSW MOVS (move string) Тэмдэгтийг хуулах команд 1 байт эсвэл 1 word өгөгдлийг санах ой дахь 1 байрлалаас нөгөөд шилжүүлнэ.

- ES:DI хос регистрээр эхний гишүүнийг хаяглана. - DS:SI хос регистрээр 2 дахь гишүүнийг хаяглана.

Энэ команд нь голдуу REP prefix-тэй хамт хэрэглэгдэнэ. Жишээ нь: Дараах програмаар санах ойн нэг хаягнаас нөгөө хаягт 20 байт тэмдэгтийг хуулж болно.

• Тэмдэгтийг регистрт ачаалах командууд: LODS, LODSB, LODSW LODS (load string) тэмдэгт ачаалах команд Санах ойн нэг байт өгөгдлийг AL регистрт эсвэл 1word өгөгдлийг АН регистрт ачаална. Санах ойн хаяг нь DS:SI хос регистрээр хаяглагдана. DF чиглэлийн битээс хамаарч SI регистрийн утга нь нэмэгдэх буюу хорогдох байдлаар дараагийн санах ойн үүрийг сонгоно. Byte-тай ажиллаж байвал 1-ээр, word-той ажиллаж байвал 2-оор уг регистрийн утга нь өөрчлөгдөнө.

• Тэмдэгтийг санах ойд хадгалах командууд: STOS, STOSB, STOSW STOS (store string) Тэмдэгтийг хадгалах команд AL регистрийн эсвэл AH регистрийн утгыг санах ойд хадгална. Санах ойн хаяг нь ES:DI хос регистрээр хаяглагдана. Чиглэлийн төлвийн DF битээс хамаарч DI регистрийн утга нь нэмэгдэх буюу хорогдон, дараагийн өгөгдөлд хандана. Byte-тай ажиллаж байвал 1-ээр, word-той ажиллаж байвал 2-оор өөрчлөгдөнө.

• Тэмдэгтүүдийг хооронд нь харьцуулах командууд: CMPS, CMPSB, CMPSW CMPS (compare string) Тэмдэгтүүдийг харьцуулах Санах ойн үүрэн дэх дурын урттай тэмдэгтүүдийг нэг байт эсвэл 1word-оор хооронд нь харьцуулна. DS:SI ба ES:DI гэсэн хос регистрээр санах ойн үүрүүдийн хаягийг тодорхойлно. DF чиглэлийн битээс хамаарч DI, SI шилжлэг хаягууд нь нэмэгдэх буюу хорогдоно.

- DF=0 бол зүүнээс баруун тийш харьцуулан, DI, SI шилжлэг хаягуудыг нэмэгдүүлнэ.

- Харин DF=1 бол баруунаас зүүн тийш харьцуулан, шилжлэг хаягуудыг хорогдуулах замаар харьцуулна.

Энэ үйлдэл нь AF, CF, OF, PF, SF, ZF зэрэг төлвийн битүүдэд нөлөөлнө. REP CMPS гэсэн үйлдлээр хичнээн ч байт тоонуудыг харьцуулж болно.

• Тодорхой нэг тэмдэгтийг тэмдэгтүүдийн багц дотроос хайх командууд: SCAS, SCASB, SCASW

SCAS (scan string) Тэмдэгтийг хайх команд AL регистрийн эсвэл AH регистрийн утгыг ES:DI регистрийн хосоор хаяглагдсан санах ойн үүрэн дэх 1 байт эсвэл 1word урттай утгуудтай харьцуулаад, харгалзах төлвийн битүүдийг тавина. Санах ойн үүрэн дахь утгаас регистрийн утгыг хасах үйлдлийг хийн, зөвхөн төлвийн битүүдэд нөлөөлнө. Харин санах ой, регистрийн утганд нөлөөлөхгүй.

- DF=0 бол DI регистрийн утга нэгээр нэмэгдэнэ. - DF=1 бол DI регистрийн утгыг 1-ээр хорогдуулна.

ASCII кодон дээр арифметик үйлдэл хийх 4 команд байна.

1. ААА - ASCII кодыг засварлаад үржүүлэх 2. AAD - ASCII кодыг засварлаад хуваах

-20- Боловсруулсан: магистр багш Т.Амартүвшин

Page 21: Computerin tehnikin undes 1hicheeliin lektsiin huraangui

“Компьютерийн техникийн үндэс” хичээлийн лекцийн хураангуй

3. AAM - ASCII кодыг засварлаад нэмэх 4. AAS - ASCII кодыг засварлаад хасах

Дэлгэц ба гартай ажиллах Заах бүлэг: 222, 223, 224, 225 Хичээлийн цаг: 2 цаг Хичээлийн зорилго: Оюутнуудад дэлгэцийн тухай, түүнтэй ажиллах тамалдуудтай танилцана. Сургалтын арга техник: Проектор болон самбар ашиглан лекцийг тайлбар, протокол хэлбэрээр явуулна.

Ихэнх програмууд оролтын төхөөрөмжөөс мэдээлэл авч түүнийг боловсруулан

гаралтын төхөөрөмжрүү үр дүн гардаг. Дэлгэц болон гартай ажиллахад өгөгдлүүд нь ASCII форматаар явагдана. Тасалдлын INT (Interrupt) команд нь оролт ба гаралтад чухал үүрэг гүйцэтгэнэ. BIOS уруу удирдлага дамжуулдаг INT 10H тасалдлыг ашиглан гар ба дэлгэцний бүх шаардлагатай үйлдлүүдийг гүйцэтгэж болно. Илүү төвөгтэй үйлдлүүдэд арай өндөр төвшний тасалдал болох DOS-д удирдлага дамжуулдаг INT 21H тасалдлыг ашигладаг. Жишээ нь: Гарнаас оруулах өгөгдлийн тэмдэгтүүдийн тоо, оруулах тэмдэгтийн тооны хязгаарыг шалгах, мөр ахиулах тэмдэгтийг шалгах зэрэг шаардлага гардаг. DOS-н 21-р тасалдлын функцууд нь эдгээр нэмэлт үйлдлүүдийг агуулахаас гадна BIOS-той автоматаар холбогддог.

Тасалдал /INTERRUPT/ Тасалдал гэдэг нь үйлчилгээ хүссэний улмаас явагдаж байгаа үйл ажиллагааг зогсоон, урд өмнө нь бэлтгэгдсэн тусгай процедурыг ажиллуулах механизм юм. Уг процедур дуусахад тасалдлын ажиллагааг үргэлжлүүлнэ. Микропроцессорт 255 шиирхэг тасалдал байдаг Санах ойн эхний 1024 byte нь тасалдал вектор хаягт нөөцлөгдөнө. Вектор хаяг гэдэг нь 1 тасалдлын хувьд 4 Byte ба эхний 2 байт нь тасалдлын сигмент хаяг дараагийн 2 хаяг нь шилжих хаяг. Микропроцессорын тасалдлуудыг 2 ангилна.

1. системийн тасалдал 2. хэрэглэгчийн тасалдал

Хэрэглэгчийн тасалдалыг програмистууд зохиосон тасалдал юм. Системийн тасалдал гэдэг нь техник хангамж үйлдлийн системийн үйлдэлийг үзүүлэх зорилготой. Системийн тасалдлыг хоёр ангилна.

- BIOS –н техник хангамжийн тасалдал - үйлдлийн системийн ба DOS –н тасалдал

Тасалдлуудыг урьтамжаар нь ангилна. Системийн техникийн тасалдлуудыг авч үзье.

Системийн дугаар Тасалдал Хаяг Урьтамж

8 Тоолуур 8253 8 20-23 (өндөр урьтамжтай) Гар 9 24-27 7 Нөөц А 28-2В 6 Цуваа порт 1 В 2С-2F 5 Цуваа порт 2 С 30-33 4 Хатуу дискний төхөөрөмж D 34-37 3 Уян дискний төхөөрөмж E 38-3B 2 Принтер F 3C-3F 1

-21- Боловсруулсан: магистр багш Т.Амартүвшин

Page 22: Computerin tehnikin undes 1hicheeliin lektsiin huraangui

“Компьютерийн техникийн үндэс” хичээлийн лекцийн хураангуй

Дэлгэцний үйлдлүүд

Курсор байрлуулах (BIOS-н 10-р тасалдал 2-р функц)

Дэлгэц гэдэг нь курсорыг дурын байрандаа тавьж болох хаяглах боломжтой цэгүүдээс бүрдэнэ. Энгийн видео монитор нь 25 мөр 80 баганатай байдаг. BIOS –н 10–р тасалдал 02–р функцыг ашиглан курсорыг дэлгэцэнд байрлуулна. Ингэхдээ DH регистрээр мөрний дугаар, DL-ээр баганы дугаар, BH–ээр дэлгэцийн дугаарыг өгнө.

Дэлгэц цэвэрлэх (BIOS –н 10-р тасалдал 6-р функц)

Дэлгэц дээр бичигдсэн зүйлс нь дахин бичих буюу гүйлгэх хүртэл хэвээрээ л хадгалагддаг. Шинээр програм бичихдээ програмист дэлгэцээ цэвэрлэхийн тулд DX регистерт эхлэх мөр, баганын дугаарыг өгч, BH регистерт өнгөө (07-хар) өгөн, AX регистерт 0600h утга олгоно. Тэмдэгт мөрийг дэлгэцэнд хэвлэх (DOS-н 21-р тасалдал 9-р функц)

Гарнаас өгөгдөл оруулах (DOS-н 21-р тасалдалын 10-р функц) Энэ нь гараас өгөгдөл оруулж санах ойд байрлуулдаг.

Дэлгэцийн горим тогтоох (BIOS-н 10-р тасалдалын 0-р функц) Горим:

AL=00 байвал 40 х 25 - хар цагаан текст горим AL=01 байвал 40 х 25 - 16-н өнгөтэй горим AL=2 байвал 80 х 25 - хар цагаан горим AL=3 байвал 80 х 25 - 16-н өнгөтэй горим AL=4 байвал 320 х 200 - 4-н өнгөтэй горим AL=5 байвал 320 х 200 - хар цагаан горим AL=6 байвал 640 х 200 - хар цагаан горим AL=7 байвал 80 х 25 - стандарт хар цагаан AL=0D байвал 320 х 200 - 16-н өнгөтэй график горим AL=0E байвал 640 х 200 - 16-н өнгөтэй горим AL=0F байвал 640 х 350 - хар цагаан график горим AL=10 байвал 640 х 350 - 64-н өнгөтэй график горим Курсорын хэмжээг өөрчлөх (BIOS-н 10-р тасалдалын 1-р функц) Курсорын байрлалыг тогтоох (10-р таслалын 3-р функц )

MOV AH,03 MOV BH, хуудасны дугаар INT 10H

CH – дээд шугам CL – доод шугам үр дүн DH – мөр DL – багана

Дэлгэцийн мэдээлэл авах (BIOS-н 10-р тасалдалын 11-р функц) Дарсан товчны код унших (BIOS-н 16-р тасалдалын 0-р функц)

-22- Боловсруулсан: магистр багш Т.Амартүвшин

Page 23: Computerin tehnikin undes 1hicheeliin lektsiin huraangui

“Компьютерийн техникийн үндэс” хичээлийн лекцийн хураангуй

MOV AH, 00H INT 16H

Үр дүн нь: AH - гарны scan код AL - ASCII код

ASCII код үүсгээгүй товчнууд нь scan код үүсгэнэ. Scan code (Скайн код)

Гарны товчлуур бүр өөрийн scan кодтой. Хамгийн эхний Esc товч 1 гэсэн скан кодтой байх ба хамгийн сүүлийн 53h буюу 83 дахь скан кодыг Del товчлуур эзэмшинэ. Зарим товчлууруудын скан кодуудыг дурдвал:

Функц товч Скан код

Alt / A - Alt /Z 1E - 2C F1 –F12 38 – 44 Home 47

48 ↑ сум 49 Page up 4B Зүүн сум 4D Баруун сум 4F END 50 ↓ сум 51 Page down 52 Insert 53 Delete

Атрибут байт Текстийн горимын үед дэлгэцэнд гарч байгаа үсэг нь 2 байтаас тогтоно. Эхний байт нь тэмдэгтийн код, дараагийн байт нь атрибут байна.Текст горимд монохром ба өнгөт дэлгэцийн атрибут нь хэвлэх тэмдэгт бүрийн характеристикийг тодорхойлно. Атрибут нь доорх мэдээллийг агуулна. Дэлгэцийн ар фон Дэлгэц дээрх тэмдэгтүүд Битийн дугаар 1 6 5 4 3 2 1 0 Атрибут BL R G B I R G B BL (blinking) анивчилтыг заана. R (red) улаан өнгө G (green) ногоон өнгө B (blue) цэнхэр өнгө

-23- Боловсруулсан: магистр багш Т.Амартүвшин

Page 24: Computerin tehnikin undes 1hicheeliin lektsiin huraangui

“Компьютерийн техникийн үндэс” хичээлийн лекцийн хураангуй

I (high intensity) тодруулалтыг заана. Өнгөт дэлгэцийн горимд доогуур зураасын битийн оронд тэмдэгтүүдийн өнгийг цэнхэрийг сонгон, хар дээр цэнхэрээр харуулдаг. Өргөн хэрэглэгддэг атрибутууд: 00h харанхуй 07h хар дээр цагаан буюу энгийн хэлбэр 87h хар дээр цагаан, анивчилттай хэлбэр 0Fh хар дээр цагаан, тодруулалттай хэлбэр 70h цагаан дээр хар буюу reverse хэлбэр F0h уагаан дээр хар, анивчилттай хэлбэр

Макро тодорхойлолт

Макро гэдэг нь хэсэг командуудыг агуулсан жижиг програм юм. Функц процедурыг дуудах явцад програм удирдагдана. Макрог хэд хэдэн эсвэл хэдэн зуун мөр командуудыг дахин давтахаас зайлхийн, нэг удаа бичин, энэ багц, командуудаа програм дунд ашиглахад хэрэглэнэ. Өөрөөр хэлбэл хэсэг бүлэг командыг нэг команд мэт үйлдлийг хийдэг. Бичигдсэн команд бүрт ассемблер нь нэг машины кодыг үүсгэнэ. Харин Pascal болон С гэх мэт хөрвүүлэгчид нь команд бүрт нэг болон түүнээс дээш машины кодыг үүсгэдэг. Энэ талаас нь үзвэл эдгээр өндөр төвшний хэлүүд нь макро тодорхойлолтуудаас бүтсэн гэж хэлж болно. MASM гэх мэт том ассемблер програмууд нь макрогийн хэрэглээг хангадаг боловч програмист өөрөө макрог тодорхойлж өгч болно. Доорх маягаар макрог үүсгэнэ. MACRO …… ; командууд ENDМ Макро команд дээр тайлбар хийх шаардлага гарвал COMMENT директив буюу цэг таслал (;)-н тусламжтайгаар хийнэ. Жишээ нь: PRINT MACRO COMMENT мөр хэвлэх ENDM Эсвэл ; мөр хэвлэх гэж бичнэ. Тайлбарыг зохион байгуулахдаа доор директивүүдийг ашиглана. .LALL - (List all) 2 ширхэг “;” (;;) тэмдэгтийн ард бичнэ. .XALL – зөвхөн командуудыг бичих ба объект кодуудыг үүсгэнэ. .SALL – Бүгдийг хорино. (Suppress all) зөвхөн макрогийн хувьд хоосон үүснэ. .LST өргөтгөлтэй фал үүсгэж болно. Энэ нь тухайн програмын дотор байгаа тухай жагсаалт үүсгэдэг. Машины командын кодыг LST-д хадгалсан байдаг. (Тайлбарыг нөхцөлтэй нь хадгалдаг: .XALL, .LALL, .SALL) Macro-г тухайн програмын хамгийн эхэнд хийж өгсөн байх хэрэгтэй. MACRO-д хуурамч параметр гэж байна. - Макрог ашиглан өөр тодорхойлогдсон макрод хандаж болно. DISP MACRO CHAR MOV DL, CHAR ; хэвлэх хаяг

-24- Боловсруулсан: магистр багш Т.Амартүвшин

Page 25: Computerin tehnikin undes 1hicheeliin lektsiin huraangui

“Компьютерийн техникийн үндэс” хичээлийн лекцийн хураангуй

DOS21 02 ENDM Гүйцэтгэх функцын дугаар 02-той хамт DOS21 нэртэй макрог энэ DISP нэртэй макро дотроос ашиглана. - Тэмдэгтийг дэлгэцэнд гаргах макрог дангаар нт бичвэл доорх байдалтай болно. DISP MACRO CHAR MOV AH, 02 ; дэлгэцэнд хэвлэх хүсэлт MOV DL, CHAR ; дэлгэцэнд хэвлэх тэмдэгт INT 21H ; DOS-н функцыг гүйцэтгэнэ. ENDM Дээрх макрог хэрэглэн програм дунд DISPMACRO ‘*’ гэж бичвэл доор үйлдлүүдийг бичсэнтэй ижил болно. MOV DL, ‘*’ MOV AH, 02 INT 21H LOCAL директив Local нь үүсгэсэн нэртэй хувсагч нь уг програмд цорын ганц байгаа гэдгийг заана. Өөрөөр хэлбэл, уг нэр програмын өөр хэсэгт хэрэглэгдэхгүй. САН (LIBRARY)-д макрог оруулах Макрог тодорхойлоод зөвхөн програм дотроосоо хэрэглэх нь учир дутагдалтай. Илүү сайн арга нь ямар нэгэн жишээ нь MACRO.LIB нэртэй файлд бүх зохиосон макронуудаа оруулаад хэрэглэх юм. Ингэснээр бусад бүх ассемблер програмууд LIB файл доторх макронуудыг ашиглах боломжтой болно. INIT MACRO ………... ENDM ; - - - - - - - - - - - - - - - - - - PROMPT MACRO MESSGE ………… ENDM гэх мэтээр бичсэн макронуудаа macro.lib нэртэй файлд хадгална. Эдгээр нь LIB файлд агуулагдсан макронуудыг хэрэглэхийн тулд програмынхаа эхэнд INCLUDE директивийг хэрэглэнэ. INCLUDE C:MACROS.LIB ;Програмдаа энэ файлыг ашиглана гэсэн үг ……….. INIT ; Эхний макрог хэрэглэнэ ……… Ер нь макрог програмд ашиглах үед (list) LST програм нь мөрийнхөө өмнө + тэмдэгтэйгээр макрог програмд байх ёстой газарт нь оруулж харуулна. Үгүйсгэх директив: PURGE IF1 ба PURGE гэсэн директивүүдийг макротой ажиллахдаа ашиглаж болно. Дээр INIT, PROMPT, DIVIDE гэсэн нэртэй макронуудыг макро сан дотор агуулсан. Харин эдгээрээс зөвхөн INIT-ийг л програмдаа ашиглана гэвэл доорх байдлаар бичиж болно. PURGE-ийг хэрэглэхэд хэрэггүй макронуудыг програмаас хасах боловч LIB файл дотроо хадгалагдсан хэвээрээ байна. Давталтын директивүүд (Repetition): REPT, IRP, IRPC

-25- Боловсруулсан: магистр багш Т.Амартүвшин

Page 26: Computerin tehnikin undes 1hicheeliin lektsiin huraangui

“Компьютерийн техникийн үндэс” хичээлийн лекцийн хураангуй

Блок өгөгдлийг давтах боломжийг эдгээр директивүү олгох ба ENDM директивээр дуусгагдана. Эдгээр директивүүд нь заавал макро дотор байх албагүй. REPT (repeat) үйлдэл нь ENDM директив тааралдтал блок өгөгдлүүдийг заасан тоогоор давтана. IRP (indefinite repeat) үйлдэл ENDM хүртэлх блок командуудыг давтана. Формат: IRP гишүүн, <аргумент> Нөхцөлт директивүүд Нөхцөлт директивүүд нь зөвхөн макрод хэрэглэгддэггүй боловч макрод их чухал үүрэг гүйцэтгэдэг. IF директив бүрд ENDIF гэсэн шалгагдаж буй нөхцөлийг зогсоох директив байна. Эсрэг нөхцөлийг шалгах ELSE директив хэрэглэгдэнэ. Нөхцөлт блок нь доорх байдалтай байна. IFxx (нөхцөл) ….. ELSE (туслах үйлдлүүд) …. ENDIF (төгсгөл) ENDIF директивийг бичээгүй бол “Undeterminated conditional” гэсэн алдааны мэдээлэл гарна. Хэрэв шалгаж буй нөхцөл (true) үнэн бол ассемблер нь IFxx-ээс ELSE хоорондох үйлдлүүдийг гүйцэтгээд, хойшихийг нь орхино. Нөхцөл (false) худал бол ELSE-ээс ENDIF хоорондох үйлдлүүдийг гүйцэтгээд, өмнөх хэсгийг орхино. Нөхцөлт директивүүд: IF нөхцөл Хариу нь 0 биш бол нөхцөлт блок доторх үйлдлүүдийг хийнэ. IFE нөхцөл Хариу нь 0 бол нөхцөлт блок доторх үйлдлүүдийг хийнэ. IF1 (хоосон) Ассемблер нь 1 гэсэн утга авч, нөхцөлт блок дахь командуудыг гүйцэтгэнэ. IF2 (хоосон) Ассемблер нь 1 гэсэн утга авч, нөхцөлт блок дахь командуудыг гүйцэтгэнэ. IFDEF Symbol Symbol буюу тэмдэгт нь програмд тодорхойлогдсон эсвэл EXTRN директивээр агуулагдсан бол нөхцөлт блок дахь командуудыг гүйцэтгэнэ. IFNDEF Symbol Symbol буюу тэмдэгт нь програмд тодорхойлогдсон эсвэл EXTRN директивээр агуулагдсан бол нөхцөлт блок дахь командуудыг гүйцэтгэнэ. IFB <аргумент> Аргумент нь хоосон бол нөхцөлт блок дахь командуудыг гүйцэтгэнэ. IFNB <аргумент> Аргумент нь хоосон биш бол нөхцөлт блок дахь командуудыг гүйцэтгэнэ. IFIDN <аргумент1>, <аргумент2> Хэрэв 2 аргумент ижил бол нөхцөлт блок дахь командуудыг гүйцэтгэнэ. IFDIF <аргумент1>, <аргумент2> Хэрэв 2 аргумент ижил биш бол нөхцөлт блок дахь командуудыг гүйцэтгэнэ.

Дискний зохион байгуулалт BOOT, ROOT, FAT

-26- Боловсруулсан: магистр багш Т.Амартүвшин

Page 27: Computerin tehnikin undes 1hicheeliin lektsiin huraangui

“Компьютерийн техникийн үндэс” хичээлийн лекцийн хураангуй

Дискний гадаргуу нь олон тооны тойрог замуудаас бүрдэнэ. Зам бүр секторуудад хуваагдах бөгөөд сектор бүр нь 512 байтыг агуулна. Жишээ нь:

САН (ROOT) Дискэн дээрх өгөгдлүүд файл хэлбэрээр хадгалагддаг. Дискэнд хадгалагдаж байгаа

мэдээллийг бүртгэн зохион байгуулж байхын тулд үйлдлийн систем нь тодорхой хэдэн секторыг өөртөө хэрэглэдэг. Дискнүүд нь өөрийн багтаамжаас хамаарч янз бүрээр зохион байгуулагддаг.

ROOT нь файл бүрийн тухай тодорхой мэдээллийг агуулсан бичлэгүүдээс бүрдэнэ. Энэ хэсэгт файлын нэр, өргөтгөл, хэмжээ, он сар, файлын эхлэх кластерын дугаар, нөөц байтууд зэрэг мэдээллүүд хадгалагдана.

Master boot sector (анхдагч ачаалагч)

1 сектор буюу 512 байттай тэнцүү. Тухайн дискний мэдээллийг өөртөө агуулдаг. Жишээ нь: тухайн дискний нэр, тухайн дискэн дээр байрлаж байгаа FAT-н хэмжээ, 1 кластер дээрх секторын тоо, FAT-н элементийн өргөн зэрэг мэдээлэл байдаг. Кластер нь хэд хэдэн секторыг өөртөө агуулдаг. Энэ нь янз бүр. Хэрэв тухайн диск үйлдлийн системийг өөртөө агуулсан бол тэр үйлдлийн системийг шалгах modul program байдаг. Компьютер асаад өөрийгөө шалгасны дараа диск Master boot sector-ыг уншина. Иймд Master boot sector нь хатуу дискний хамгийн эхний сектор байхаас гадна, тухайн системийн BOOT sector-ыг ачаалах зорилготой. ROM-BIOS нь Master boot-г уншиж Partition (хуваалт)-ыг тодорхойлж цааш идэвхитэй BOOT sector-г тодорхойлж уншина. Partition tatle- хатуу дискэнд байдаг. Уян диксэнд байхгүй. Энэ нь тухайн диксийг хэрхэн ашиглаж байгаа буюу ямар хэмжээгээр хувааж ашиглаж байгаа мэдээллийг өөртөө агуулдаг.

FAT (File Allocation Table) буюу файлын байршлын хүснэгт FAT гэдэг нь дискний бүхий л орон зайг дүрслэх бөгөөд түүний сул чөлөөтэй хэсэг, файлд ашиглагдсан хэсэг, мөн эвдрэлээс болж ашиглагдаагүй хэсгийн тухай мэдээлэл тэмдэглэгээг агуулдаг. Өөрөөр хэлбэл FAT нь дискний орон зайг файлуудад хуваарилах зориулалттай хүснэгт юм. Хэмжээ нь дискний хэмжээнээс хамааран янз бүр байна. Үүнийг Boot өөртөө агуулдаг. FAT нь кластеруудын дугаарыг агуулсан хүснэгт юм. Эхлэх кластерийг уншаад дараагийн кластерийг задалж, кластерийн гинжин холбоог уншиж дуусангуут DATA өгөгдлийг уншаад програм ажиллаж эхлэнэ. Кластерийн гинжин холбоо гэдэг нь кластерийн уншиж дуусах болон дараагийн кластер уруу шилжих үйл явц юм. Хэрэв шинээр файл үүсгэх эсвэл файлаа засварлах бол DOS нь FAT-ийн утгуудыг

-27- Боловсруулсан: магистр багш Т.Амартүвшин

Page 28: Computerin tehnikin undes 1hicheeliin lektsiin huraangui

“Компьютерийн техникийн үндэс” хичээлийн лекцийн хураангуй

засна. BOOT-н бичлэг нь 1-р сектор дээр байх ба FAT нь 2-р сектороос эхлэнэ. FAT нь кластер бүрийн утгыг агуулна. Кластер гэдэг нь 1 талтай дискний хувьд 1 сектор, 2 талтай дискний хувьд 2 сектор, олон тайлтай дискний хувьд 1 сегмент болно. Иймд 2 талтай диск нь 2FAT-ийг агуулна. FAT-ийн эхний байт нь гадаад төхөөрөмжийн төрлийг заана.

DOS-н үндсэн функцуудыг ашиглан файлтай ажиллах Дисктэй ажиллах нь файл ба бичлэгүүдийг тодорхойлох FCB (file control block) – файл удирдах блоктой холбоотой юм. Үүний хаягийг дисктэй ажиллах бүх үйлдлүүдэд хангаж өгөх ёстой. Файл бичихдээ эхлээд файлаа үүсгэх бөгөөд үйлдлийн системээс санд өөрчлөлтүүдийг оруулна. Бүх бичлэгүүд орсны дараа програм нь файлыг хаах ёстой бөгөөд ингэсний дараа DOS сантай ажиллаж дуусна. Файлаас өгөгдөл уншихдаа эхлээд файлын байгаа үгүйг шалгаж, байвал нээнэ.

Дискэн дэхь файлд хандах хэд хэдэн зарчим байна. - Дээд түвшний хандалт нь DOS-ын INT 21H тасалдлыг ашиглана. - Нам түвшний хандалт нь DOS-ын 25Н, 26Н тасалдлуудыг ашиглан, дискний

секторуудтай хамааралтай абсолют хаяглалтыг хэрэглэнэ. - Хамгийн доод түвшний хандалт нь BIOS-ын INT 13Н тасалдал бөгөөд энэ нь зам ба

секторын дугаарыг ашиглан ханддаг. FCB - Файлын удирдлагын блок

Дисктэй ажиллахдаа програмист өгөгдлийн талбарт FCB-ийг тодорхойлж өгөх хэрэгтэй. FCB нь файлын замыг агуулахгүй ба тухайн сан дотроос файлтай ажиллана.

Байт Зориулалт

Дискний төхөөрөмж 0 01-А төхөөрөмж, 03-С төхөөрөмж гэх мэт Файлын нэр

1-8 Файлын нэр, мөн нөөц нэр байэ болно. Жишээ нь: LPT1 гэвэл принтерийг заана. Файлын өргөтгөл 9-11 Жишээ нь: ASM, DTA гэх мэт. DOS нь файлын нэр өргөтгөлийг санд хадгалдаг.Одоогийн блокын дугаар Нэг блок нь 128 бичлэгүүдээс бүрдэнэ. Унших бичих үйлдлүүд нь тухайн блокын дугаар ба 32-р байт дахь бичлэгийн дугаар 2-ыг ашиглан бичлэгийг олно. Блокын дугаар тэгээс эхлэнэ.

1213

Бичлэгийн логик хэмжээ Файлыг дөнгөж нээхэд энэ талбар нь 128 буюу 80Н гэсэн утгыг агуулна. Унших бичих үйлдлүүдийн явцад бичлэгийн уртыг програмист өөрөө тодорхойлж өгч болно.

14-15

Файлын хэмжээ (бичлэгийн хэмжээ * бичлэгийн тоо) Файлыг үүсгэхэд DOS түүний хэмжээг байтаар тодорхойлдог бөгөөд энэ утгаа сан дотор бичнэ. Файлыг нээх үед сан дотроос файлын хэмжээг уншиж аваад энэ 4 байт талбарыг зохих утгаар бөглөнө.

16-19

Огноо (он-сар-өдөр) DOS нь файл нээх буюу дотор нь өөрчлөлт хийх үедээ огноог өөрчилж, сан дотор бичдэг. Файлыг нээх үед DOS нь сангаас огноог уншин, энэ 2 байт талбарт бичнэ.

20-21

DOS-д нөөцлөгдөнө. 22-31 Одоогийн бичлэгийн дугаар (0-127 гэсэн тоо байна)

32 Энэ дугаарыг блок бичлэгийг файлд байрлуулахад хэрэглэнэ. 12, 13 байтуудтай хамт хэрэглэгдэнэ.

-28- Боловсруулсан: магистр багш Т.Амартүвшин

Page 29: Computerin tehnikin undes 1hicheeliin lektsiin huraangui

“Компьютерийн техникийн үндэс” хичээлийн лекцийн хураангуй

Бичлэгийн харьцангуй дугаар Бичлэгт хандах үед энэ талбар нь тухайн бичлэгийн харьцангуй дугааоыг агуулж байх ёстой. Энэ дугаарыг DOS нь блок болон бичлэгийн дугаарт хөрвүүлэн тухайн бичлэгт хандана. Жишээ нь: 25 (19h) бичлэгийг уншихад энэ талбарт 1900 0000 гэж бичигдэнэ. Файлын хамгийн их хэмжээ нь 1.073.741.824 байт байх боломжтой. Бичлэгийн хэмжээ 64-өөс их бол 36-р байт байнга 00 гэсэн утгатай байна.

33-36

Файл шинээр үүсгэх: DOS-н INT 21H-н 16h функц

Дискэн дэхь файлтай харьцахдаа зөв тодорхойлсон FCB-ийг програм дотор агуулах хэрэгтэй. Дисктэй хийх оролт гаралтын үйлдлүүдэд DX регистрт FCB-н хаягийг хийх ба DS:DX регистрүүдээр FCB доторх талбаруудад хандана. Шинэ файл үүсгэхдээ DOS INT 21H тасалдлын 16Н функцыг ашиглана.

MOV AH, 16h ; Файл үүсгэх хүсэлт LEA DH, FCBнэр INT 21h

DTA-ийн эхлэлийг тавих: DOS-н INT 21H-н 1Ah функц

Өгөгдлийг хадгалах буюу дамжуулах муж нь хэрэглэгчээс хамаарч янз бүр байна. Файлд хандахдаа өгөгдлийн мужийг заавал тодорхойлж өгөх хэрэгтэй. Энэ мужийг DTA (Disk Transfer Area) гэдэг. FCB нь бичлэгийн хэмжээг агуулах тул DTA-н төгсгөлийг заасан тэмдэгт хэрэггүй. Бичилт хийхийн өмнө 1Ah функцээр DTA-н хаягийг DOS-д өгнө.

Дараалсан бичлэгүүдийг бичих: DOS-н INT 21H-н 15h функц MOV AH, 15H ; дараалсан бичлэгүүдийг бичих хүсэлт LEA DX, FCBнэр NT 21H

Файлыг хаах: DOS-н INT 21H-н 10h функц

Бичлэгүүдийг бичиж дуусахад файлын төгсгөл гэсэн (1Ah) гэсэн тэмдэгтийг оруулаад, 10h функцыг ашиглан хаана.

MOV ah, 10h ; файлыг хаах хүсэлт LEA DX, FCBнэр Int 21h

Энэ үйлдэл хийгдэхэд DOS нь буферт байгаа үлдсэн өгөгдлүүдийг дискэнд бичин, огноо, файлын хэмжээ зэргийг сан дотор өөрчилнө. Мөн AL регистрт код буцаана.

- AL= 00 бол амжилттай хаасан - AL=FFh бол файл нь сан дотор байгаагүй, хэрэглэгч дискээ сольсон байж магадгүй

гэсэн утга илэрхийлнэ.

Файлаас мэдээлэл унших Файлыг нээх: DOS-н INT 21H-н 0Fh функц

Дараалан хандах аргаар файлаас уншихдаа эхлээд оршиж байгаа файлаа нээх хэрэгтэй. Дискэнд байгаа файлыг ашиглан уншихдаа програмдаа FCB-ыг бичиж өгнө. Дараа нь 0Fh функцыг ашиглан файлыг нээнэ. MOV AH, 0FH ; файлыг нээх хүсэлт LEA DX, FCBNAME ; FCB-ийн эхлэлийн хаягийг олгоно. INT 21H

Файлыг унших: DOS-н INT 21H-н 0Fh функц Файлын бичлэгийн уншихдаа энэхүү функцыг ашиглана. MOV AH, 1AH ; бичлэгийг дараалан уншина.

-29- Боловсруулсан: магистр багш Т.Амартүвшин

Page 30: Computerin tehnikin undes 1hicheeliin lektsiin huraangui

“Компьютерийн техникийн үндэс” хичээлийн лекцийн хураангуй

LEA DX, DTANAME INT 21H Унших үйлдэл нь FCB дахь мэдээллийг дискэн дээрх бичлэгийг DTA-д дамжуулах ба AL регистрт үр дүн болох доорх утгуудын нэгийг буцаана. - AL=00 Амжилттай уншсан - Al =01 Файлын төгсгөлд хүрсэн, өөр өгөгдөл байхгүй - AL=02 DTA-д нэг бичлэгийг унших хангалттай зай байхгүй - AL=03 Файлын төгсгөлд хүрсэн, 0-ээс бүтсэн бичлэгийг уншсан.

Файлын дурын бичлэгт хандах Файлыг дараалуулан унших болон бичих аргаас гадна файл дахь дурын бичлэгт хандах доорх функцууд байдаг. • Дурын бичлэгийг уншихдаа шаардлагтай бичлэгийнхээ дугаарыг FCB доторх

бичлэгийн харьцангуй дугаар гэсэн 33-36 дугаар байтуудад хадгалаад, DOS-н 21Н функцыг дуудна.

MOV AH, 21H ; дурын бичлэг унших хүсэлт LEA DX, FCBнэр ; FCB-ийн эхлэх хаягийг авна. INT 21H

Энэ унших үйлдэл нь бичлэгийн харьцангуй дугаарыг одоогийн блокын болон бичлэгийн дугаар уруу хөрвүүлээд, шаардагдах бичлэгээ олж, DTA уруу дамжуулна. Мөн AL регистрт үйлдлийн үр дүнг илэрхийлэх утга буцаана.

- AL=00 амжилттай уншсан. - AL=01 унших өгөгдөл байхгүй - AL=02 DTA-д хангалттай зай байхгүй тул дамжуулалт тасарсан - AL=03 0-ээс бүтсэн бичлэгийг уншсан.

Энд файлын төгсгөл гэсэн утга буцаагдахгүй. • Дурын бичлэгийг бичихдээ мөн шаардлагатай бичлэгийнхээ дугаарыг FCB доторх

бичлэгийн харьцангуй дугаар гэсэн 33-36 дугаар байтуудад хадгалаад, DOS-ын 22Н функцыг дуудна.

MOV AH, 22H ; дурын бичлэг бичих хүсэлт LEA DX, FCBREC ; FCB-ийн эхлэх хаягийг авна. INT 21H

Мөн AL регистрт үйлдлийн үр дүнг илэрхийлэх утга буцаана. - AL=00 Амжилттай бичсэн - AL=01 Диск дүүрэн - AL=02 DTA-д хангаттай зай байхгүй тул дамжуулалт дууссан.

Файлд блокоор хандах

• Блок бичлэг хийх тохиолдолд СХ регистр нийт бичлэгийн тоог агуулах бөгөөд FCB

доторх бичлэгийн харьцангуй дугаар нь дискэн дээр бичлэгийн эхлэлийг заана. Блок бичлэгийг бичихдээ DOS-н 21Н-н 28Н функцыг ашиглана.

• Блок бичлэгийг уншихдаа DOS-н 21Н тасалдлын 27Н функцыг ашиглана.

• Дискний төхөөрөмжийг анхны төлөвт оруулах: 0DH функц MOV AH, 0DH INT 21H Үүний дараа нээлттэй байгаа бүх файлуудыг хаан, DOS-ын буферуудыг цэвэрлэнэ. • Дискний төхөөрөмжийг сонгох: 0ЕН функц MOV AH, 0EH MOV DL, 02 ; C төхөөрөмж

-30- Боловсруулсан: магистр багш Т.Амартүвшин

Page 31: Computerin tehnikin undes 1hicheeliin lektsiin huraangui

“Компьютерийн техникийн үндэс” хичээлийн лекцийн хураангуй

INT 21H 0-A төхөөрөмж, 1-В төхөөрөмж гэх мэт • Сангаас мэдээг хайх: 11Н, 12Н функцууд Файлын нэрийг өөрчлөх эсвэл файлыг устгах зэрэгт эдгээр функцуудыг хэрэглэнэ. • Файлыг устгах: 13Н функц

MOV AH, 13H ; файлыг устгах хүсэлт MOV DX, FCB ; нээгээгүй FCB INT 21H

Үр дүн: - AL=00 амжилттай - AL=FF алдаатай

• Файлын нэрийг өөрчлөх: 17функц Хуучин нэрийг дарж, FCB-д шинэ нэрийг хадгална. MOV AH, 17H MOV DX, FCBнэр ; FCB-н хаяг INT 21H Үр дүн:

- AL=00 амжилттай - AL=FF алдаатай

• Идэвхтэй байгаа дискний төхөөрөмжийн дугаарыг авах: 19Н функц DOS-н өргөтгөсөн функцуудыг ашиглан файлтай ажиллах Заах бүлэг: 222, 223, 224, 225 Хичээлийн цаг: 2 цаг Хичээлийн зорилго: ASCIIZ код болон алдааны кодуудтай танилцана. Сургалтын арга техник: Проектор болон самбар ашиглан лекцийг тайлбар, протокол хэлбэрээр явуулна.

ASCIIZ тэмдэгт

DOS-н өргөтгөсөн функцууд нь ASCIIZ тэмдэгтүүдийг ашигладаг. ASCIIZ тэмдэгтэд файлыг агуулж буй дискний төхөөрөмж, файлын нэр, өргөтгөл хамгийн төгсгөлд нь 0 утга гэх мэт файлын байрлаж буй замын мэдээ агууллагдана. Byte төрөлтэй тэмдэгт мөр болон тэг хослолыг агуулдаг. Жишээлбэл:

PATH1 DB ‘D:\BIN\FILE1.TXT’, 0 0 утга нь ASCIIZ тэмдэгтүүдийн төгсгөлийг заана.

LEA DX, PATH1 гэх мэтээр DX регистрт ASCIIZ тэмдэгтийн эхлэх хаягийг ачаалж, тасалдлуудад хэрэглэнэ.

Файлд хандах ба алдааны кодууд

Дискэнд хандан файл үүсгэх, файл нээхдээ АХ регистрт байгаа 1 word утгаар илэрхийлэгдэх файлд хандах мэдээг ашиглана. Зарим стандарт төхөөрөмжинд хандахдаа тэднийг нээхгүйгээр шууд хандаж болдог. Файлд хандах мэдээ Тайлбар

0 Оролт, голдуу гарнаас (CON) өгөгдөл уншина. 1 Гаралт, голдуу дэлгэц (CON) үрүү мэдээ хэвлэнэ.

Алдааны гаралт, голдуу дэлгэц (CON) үрүү алдааны мэдээг хэвлэнэ. 2

3 Туслах төхөөрөмж (AUX)

-31- Боловсруулсан: магистр багш Т.Амартүвшин

Page 32: Computerin tehnikin undes 1hicheeliin lektsiin huraangui

“Компьютерийн техникийн үндэс” хичээлийн лекцийн хураангуй

4 Принтер (LPT1 ба PRN)-ээр өгөгдөл хэвлэнэ.

Дискэнд хандахдаа болон файл үүсгэх, файл нээх зэрэгт ASCIIZ тэмдэгтүүдийг хэрэглэх ба DOS 3CH, 3DH зэрэг функцуудыг ашиглана. Хэрэв файлд хандах үйлдэл амжилттай хийгдвэл CF=0 орон шилжилт флаг 0 болон AX регистрт үр дүн буцна. Хэрэв ажилтгүй болвол CF=1 байх ба AX регистрт алдааны код буцна.

Алдааны кодууд

01 функцын буруу алдаа буцна. 02 file олдоогүй 03 зам олдоогүй 04 хэт олон file нээлттэй 05 хандалтыг зөвшөөрөөгүй 06 буруу хандалт 07 санах ойн удирдлага блок устгагдсан 08 санах ой хүрэлцээгүй 09 буруу санах ойн блокд хандсан (блокийн хаяг буруу) 10 буруу орчин 11 буруу формат 12 мэдэгдээгүй алдаа, буруу хандалтын код 13 өгөгдөл буруу 15 буруу disc 16 сан буруу 17 төхөөрөмж өөрчлөгдсөн 18 file байхгүй

Дискэнд файл үүсгэх

File-г шинээр үүсгэх: DOS-н INT 21H-ын 3Сh функц DХ регистрт ASCIIZ тэмдэгтийг ачаална. CX регистрт шаардагдах атрибутыг хийнэ. Энгийн файлын хувьд атрибут нь 0 байна.

MOV AV, 3CH ; Файлд үүсгэх хүсэлт MOV CX,0 ; энгийн файл LEA DX, PATH1 ; ASCIIZ тэмдэгт INT 21H ; DOS-ыг дуудах JC ERROR ; алдаа гарвал програмаас гарна. MOV HANDEE1, AX ; файлын тухай мэдээг хадгална.

Уг үйлдлийн үр дүнд алдаа гарвал АХ регистрт алдааны код, алдаагүй бол АХ регистрт файлын тухай мэдээг хадгална.

Үүссэн file –д өгөгдөл бичих: DOS-н INT 21H-ын 40h функц Файлын мэдээллийг BX регистрт бичих, байтуудын тоог CX регистрт, DX регистрт файл бичих өгөгдлийн хаягийг олгоно.

MOV AH, 4CH ; файлд бичих хүсэлт MOV BX, HANDLE1 ; файлд хандах мэдээ MOV CX, 4 ; бичлэгийн урт LEA DX, STR1 ; гаргах талбарын хаяг INT 21H ; DOS-ыг дуудах JZ ERROR ; алдаа гарвал ERROR уруу

-32- Боловсруулсан: магистр багш Т.Амартүвшин

Page 33: Computerin tehnikin undes 1hicheeliin lektsiin huraangui

“Компьютерийн техникийн үндэс” хичээлийн лекцийн хураангуй

Зөв хийгдвэл санах ойгоос бичлэгийг бичээд, CF-ийг цэвэрлэн, АХ регистрт бичигдсэн байтуудын тоог хийнэ. Уг үйлдлийн үр дүнд алдаа гарвал АХ регистрт алдааны код, ZF-д 1-ийг хадгална.

Файл хаах: INT 21H-ын 3Еh функц

Файлд бичээд дууссан бол файлыг доорх функцээр хааж болох ба санах ойд үлдсэн бичлэгүүдийг хуулаад, FAT болон санг шинэчлэнэ. BX регистрт файлын мэдээллийг өгнө.

MOV AX,3EH ; файлыг хаах хүсэлт MOV BX, HANDLEE1 ; Файлыг мэдээ INT 21H ; DOS-ыг дуудах

Гарч болох цорын ганц алдаа нь АХ регистрт 06 (invalid handle) буюу файлд хандах мэдээ буруу гэсэн үг юм.

Дискний файлаас унших

Файл нээх: INT 21H-ын 3Dh функц Програмаар файлыг унших гэж байгаа бол эхлээд файлыг 3Dh функцээр нээх хэрэгтэй. Энэ үйлдэл нь файлын нэрийг шалган, файлыг олно. Дараа нь DХ регистрт ASCIIZ тэмдэгтийг ачаалан, AL регистрт хандах кодыг олгоно.

- AL=0 бол зөвхөн уншина. - AL=1 бол бичнэ. - AL=2 бол уншиж бичнэ.

Бусад битүүдийнх нь зориулалт нь файлыг хамтран эзэмших DOS 3.0 үед ашиглана. Файлд бичихдээ 3СН буюу үүсгэх функцыг ашиглана. Жишээ нь:

MOV AH, 3DH ; нээх хүсэлт MOV AL, 00H ; зөвхөн уншихаар LEA DX,PATH1 ; ASCIIZ string INT 21H ; DOS-ыг дуудах JZ ERROR ; алдаа гарвал ERROR уруу MOV HANDLEE1,AX ; мэдээг хадгалах

Хэрэв өгөгдсөн нэртэй файл олдвол бичлэгийн хэмжээг 1 гэж тавин, ZF битийг цэвэрлэн, АХ регистрт файлын мэдээг тавина. Хэрэв файл олдоогүй бол ZF=1 болох ба АХ регистрт 0005 гэсэн файлын мэдээ нь алдааны 05 гэсэн кодтой андуурагдах боломжтой.

Файлаас унших: INT 21H-ын 3Fh функц ВХ регистрт файлын мэдээлэл, СХ регистрт унших байтын тоо, DX регистрт унших мэдээллийг хадгалах санах ойн хаягыг өгнө.

MOV AH, 3FH ; унших хүсэлт MOV BX, HANDLE ; MOV CX, 512 ; бичлэгийн урт LEA DX, STR1 ; оролтын талбарын хаяг INT 21H ; DOS-ыг дуудах JZ ERROR ; алдааг шалгах

Уг үйлдэл нь санах ойд бичлэгийг уншиж аваад, ZF-ийг цэвэрлэн, АХ-д уншигдсан байтуудын тоог тавина. АХ регистрт 0 гэсэн утга байвал файлын төгсгөлөөс унших гэж оролдсон гэсэн үг. Уншилтын алдаа нь ZF-г тавих ба АХ регистрт алдааны код 05 (хандалтыг татгалзсан) эсвэл 06 (буруу хандалт)-г буцаана. Идэвхитэй байгаа дискний төхөөрөмжийг авах: 21h тасалдлын 19h функц

-33- Боловсруулсан: магистр багш Т.Амартүвшин

Page 34: Computerin tehnikin undes 1hicheeliin lektsiin huraangui

“Компьютерийн техникийн үндэс” хичээлийн лекцийн хураангуй

Энэ функц нь идэвхтэй байгаа дискний төхөөрөмжийн нэрийг AL регистрт илгээнэ. 0-А, 1-В гэх мэт. MOV AH, 19h INT 21H Дискний сул зайг авах: 21h тасалдлын 36h функц Энэ функц нь дискний сул зайн ьалаарх мэдээг илгээнэ. Төхөөрөмжийн дугаарыг DL регистрт тавиад функцээ дуудна. 0-идэвхтэй байгаа төхөөрөмж, 1-А, 2-В г.м MOV AH, 36H MOV DL, 0 INT 21H Дискний төхөөрөмжийн мэдээг буруу өгсөн бол АХ регистрт FFFFH гэсэн утга буцаах ба зөв хийгдсэн бол дараах утгууд буцаагдана.

- АХ регистрт 1 кластер дахь секторуудын тоо - ВХ регистрт Хандах боломжтой кластеруудын дугаар - СХ регистрт 1 сектор дахь байтуудын тоо - DX регистрт Уг төхөөрөмж дахь кластеруудын нийт тоо

Файлыг устгах: 21Н тасалдлын 41h функц Зөвхөн унших боломжтой файлаас бусад файлуудыг энэ функцээр устгаж болно. Файлын нэр болон уг файлын байрлаж байгаа дискний төхөөрөмж дээрх замыг агуулсан ASCII тэмдэгтийн хаягийг зааж өгөх хэрэгтэй. MOV AH, 41H ; устгах хүсэлт LEA DL, PATHNAME ; ASCIIZ тэмдэгт INT 21H ; DOS-ыг дуудна. Ах регистр алдааны кодыг буцаах ба 02 байвал файл олдоогүй, 05 бол хандалтыг татгалзсан гэсэн үг. Файлын заагчийг шилжүүлэх: 21Н тасалдлын 42h функц ВХ регистрт файлд хандах мэдээг өгөөд, CX:DX регистрийн хосд шаардалагтай шилжлэг хайгийг тавина. 65.535-аас дээш байтын зайд шилжих тохиолдолд СХ регистрт 0, DX регистрт утга нь өгнө. Мөн AL регистрт шилжлэг хаягийг авах аргыг зааж өгөх хэрэгтэй. Үүнд: AL=0 Шилжлэг хаягийг файлын эхлэлээс авна. AL=1 Шилжлэг хаягийг файлын заагчийн тухайн байрлалаас авна. AL=2 Шилжлэг хаягийг файлын төгсгөлөөс авна. Файлын хэмжээг CX:DX регистрийн хосд 0 утга олгон, 2-р аргыг хэрэглэн авч болно. Атрибутыг шалгах буюу өөрчлөх: 21Н тасалдлын 43h функц Сан доторх файлын атрибутыг шалгах болон өөрчлөхөд энэ функцыг хэрэглэнэ. DX регистрт ASCIIZ тэмдэгтийн хаягийг олгоод, AL регистрт файлын атрибутыг шалгах гэж байгаа бл 00 гэсэн утга өгнө. Хэрэв өөрчлөх гэж байгаа бол AL регистрт 01, СХ регистрт шинэ атрибутыг өгнө. Доорх байдлаар энгийн атрибутыг тавьж болно. MOV AH, 43H ; атрибут тавих хүсэлт MOV AL, 01 ; энгийн MOV CX, 00 ; атрибут LEA DX, PATHNAME ; ASCIIZ тэмдэгт INT 21H ; DOS-ыг дуудна. Атрибутыг шалгахад СХ регистрт идэвхитэй байгаа атрибут буцна. Өөрчлөх үед СХ регистрт байгаа атрибутад сангийн өгөглдлийг хийнэ. Алдаатай үйлдэл хийгдвэл АХ регистрт 02, 03, 05 гэх мэт алдааны кодуудын нэгийг өгнө. Идэвхитэй байгаа санг унших: 21Н тасалдлын 47h функц

-34- Боловсруулсан: магистр багш Т.Амартүвшин

Page 35: Computerin tehnikin undes 1hicheeliin lektsiin huraangui

“Компьютерийн техникийн үндэс” хичээлийн лекцийн хураангуй

Энэ функцээр дискний төхөөрөмжийн одоо идэвхитэй байгаа санг уншина. Хамгийн урт өгөгдлийг хадгалахад тохиромжтой хэмгээгээр зайг нөөцлөөд, DX регистрт үүний нэрийг ачаална. DL регистрт дискний драйвын нэрийг өгнө. 1=А, 2=В гэх мэт. Уг функц нь дискний драйвын нэрийг агуулахгүйгээр, замыг нь буцаана. Тохирох файлыг олох: 21Н тасалдлын 4ЕН, 4FH функцүүд Энэ функцүүд нь DOS-ын үндсэн функцууд болох 11h, 12h-тэй ижил үүрэгтэй. 4ЕН функцыг сан дотор хайлт эхлэхдээ, 4FH функцыг хаялтыг үргэлжүүлэхдээ хэрэглэнэ. Хайлт эхлэхдээ DX регистрт файлын атрибутыг олгоно. Энгийн, сан, нууцлагдсан, системийн гэх мэт битүүдийн нэгдлээр атрибутыг тодорхойлно. MOV AH, 4EH ; эхний хайлт хийх хүсэлт MOV CX, 00 ; энгий атрибут LEA DX, PATHNAME ; ASCIIZ тэмдэгт INT 21H ; DOS-ыг дуудна. Энэ үйлдэл нь тохирох файлыг олоод, FCB-д DTA-ийн доторх утгуудыг бичнэ.

00 DOS-д нөөцлөгдсөн 21 Файлын атрибут 22 Файлын хугацаа 24 Файлын огноо 26 Файлын хэмжээ: бага word, дараа нь ахлах word 30 Нэр ба өргөтгөл: 13 байт ASCIIZ тэмдэгт, ардаа 00-тэй

АХ регистрт буцаасан алдааны код нь 02 (файл олдоогүй), 18 (файл байхгүй) байж болно. 4FH-г ашиглан цааш хайхдаа DTA-г хэвээр нь үлдээнэ. MOV AH, 4FH ; дараагийн хайлт INT 21H ; DOS-ыг дуудна. Алдаа гарсан тохиолдолд 18(файл олдоогүй) гэсэн код буцна. CF-ийг өөрчлөхгүй. Файлд нэрийг өөрчлөх: 21 Н тасалдлын 56h функц Програмаар файлын нэрийг өөрчлөхдөө энэ функцыг хэрэглэнэ. DX регистрт хуучин диск драйв, зам, файлын нэр зэргийг агуулсан ASCIIZ тэмдэгтийн хаягийг өгнө. ES:DI регистрт хосоор шинэ диск драйв, зам, файлын нэр байж болно. Уг үйлдэл нь файлын нэрийг өөрчлөн, өөр санд шилжүүлнэ. MOV AH, 56H ; файлын нэрийг өөрчлөх LEA DX, хуучин_утга ; DS:DX LEA DI, шинэ_утга ; ES:DI INT 21H ; DOS-ыг дуудна. Алдаа гавал АХ регистрт 03 (зам олдоогүй), 05 (хандалт татгалзагдсан), 17(дискний төхөөрөмж өөрчлөгдсөн) гэсэн алдааны кодуудын нэг буцаагдана. Бусад файлтай хамраалтай DOS-ын функцүүдийг дурдвал

• 39Н Сан үүсгэх • 3АН Сангийн мэдээг устгах • 3ВН Одоогийн санг өөрчлөх • 44Н Дискний төхөөрөмжийн оролт гаралтыг удирдах • 45Н, 46Н Файлд хандах мэдээг хуулбарлах • 54Н Шалгах төлвийг унших

Файлыг үүсгэх ба нээх функцууд нь файлтай цааш хийх үйлдэлд хэрэглэх файлын хандалтын мэдээг буцаадаг. Файлд бичилт хийхдээ файлыг үүсгэх функцыг, файлаас уншилт хийхдээ файлыг нээх функцыг ашиглах дүрэмтэй. Санд өөрчлөлтийг оруулахын тулд бичилт хийсний дараа файлыг заавал хаах хэрэгтэй. Файлтай хийх үйлдлүүдийн алдааны ихэнхи тохиолдолд CF төлвийн бит тавигдах (1 болно) ба АХ регистрт алдааны кодыг оруулдаг.

-35- Боловсруулсан: магистр багш Т.Амартүвшин

Page 36: Computerin tehnikin undes 1hicheeliin lektsiin huraangui

“Компьютерийн техникийн үндэс” хичээлийн лекцийн хураангуй

Хүснэгтэнд өгөгдөл боловсруулах

Хүснэгтэн өгөгдөлтэй ажиллах олон хэрэглээ гардаг. Жишээ нь: нэрс, үзүүлэлт, үнэ, тоо ширхэг гэх мэт. Өмнө үзсэн командуудаас гадна XLAT гэсэн командыг хэрэглэх нь хүснэгтэн өгөгдөлтэй ажиллахад тохиромжтой. Хүснэгт хэлбэрийн өгөгдлүүдийг дараах байдлаар тодорхойлж болно. STACK DW 64 DUP(?) ; 64word урттай стек MONTAB DB’JAN’, ‘FEB’, ‘MAR’, …,’DEC’ ; сарууд ROOMTAB DB205, 208 209, 212, 219, . ; өрөөний дугаар

MATRX DB12, ‘Computers’ DB14, ‘Papers’ DB17, ‘Diskettes’ ; холимог мэдээлэл зарлаж болно.

Жишээ болгон дараах хүснэгт өгөгдөл тодорхойлсон сегментүүдийг авч үзье. DATA SEGMENT TABLES DW 100, 200, 300, 400, 500 SCHOOL DB ‘MMTS’

DATA ENDS EXTRA SEGMENT DEPT DB ‘SOFT’ LIST DW 200, 400, 600, 800, 1000 EXTRA ENDS

Дээрх тодорхойлолт өгөгдсөн байхад DS регистрт орсон 0962Н гэсэн утга, ES регистрт 0927Н, SI регистрт 000АН (MMTS өгөгдлийн хаяг), DI регистрт 000Н (SOFTWARE өгөгдлийн хаяг) гэсэн утга байсан гэж үзье. Эдгээр хүснэгтэн өгөглүүд нь дээрх байдлаар дараалан байрлах ба эдгээрт дараах байдлаар хандаж болно. Энэ үед MOVSW үйлдлийг хийвэл DS:SI регистрийн хосоор хаяглагдах CX регистрийн агуулж байгаа тоотой тэнцүү тооны өгөгдлүүдийг ES:DI регистрийн хосоор хаяглагдах байрлалд хуулна. ВХ регистрт 4 гэсэн утга байхад, доорх үйлдлийг хийвэл MOV TABLES[BX], AX AL регистрийн утгыг TABLE гэсэн хүснэгт хэлбэрийн өгөгдлийн 4 дэх элементэд хийх ба 2С гэсэн утга өөрчлөгдөнө. Өөрөөр хэлбэл, AL регистрт 10 гэсэн утга байсан бол TABLE гэсэн хүснэгт хэлбэрийн өгөгдлийн 4 дэхь элементийн 2С гэсэн утга 10 гэсэн утгаар солигдоно.

-36- Боловсруулсан: магистр багш Т.Амартүвшин

Page 37: Computerin tehnikin undes 1hicheeliin lektsiin huraangui

“Компьютерийн техникийн үндэс” хичээлийн лекцийн хураангуй

BX хегистрт 4 гэсэн утга байхад, доорх үйлдлийн хийвэл MOV TABLE [BX], AL AL регистрийн утгыг TABLE гэсэн хүснэгт хэлбэрийн өгөгдлийн 4 дэхь элементэд хийх ба 2С гэсэн утга өөрчлөгдөнө. Өөрөөр хэлбэл, AL регистрт 10 гэсэн утга байсан бол TABLE гэсэн хүснэгт хэлбэрийн өгөгдлийн 4 дэхь элемнтийн 2С гэсэн утга 10 гэсэн утгаар солигдоно.

Програмуудын хоорондох холбоос Өмнө нь үзсэн програмууд зөвхөн нэг сегментээр хязгаарлагдаж байсан ба нэг л бүлэг командуудыг агуулж байсан. Харин нэгээс илүү ассемблер програмуудаас бүрдсэн програмын модулыг үүсгэх боломжтой юм. Ийм тохиолдолд үндсэн програм ба нэг эсвэл олон дэд програмуудаас бүрдэх модулийг үүсгэнэ.

-37- Боловсруулсан: магистр багш Т.Амартүвшин

Page 38: Computerin tehnikin undes 1hicheeliin lektsiin huraangui

“Компьютерийн техникийн үндэс” хичээлийн лекцийн хураангуй

Ингэж дэд програмуудыг зохион байгуулах дараах шалтгаанууд байж болно.

- Өөр өөр програмчлалын хэлүүдийг хооронд нь холбож ашиглах шаардлага гарч болно. Жишээ нь: өндөр түвшний хэлний тооцолох давуу талыг ассемблерийн үр ашигтай байдалтай харьцуулан ашиглаж болно.

- Ассемблерээр ажиллуулахад нэг модул болгон бичсэн програм нь хэтэрхий том байж болно.

- Програмыг өөр өөр хүмүүс хэсэгчлэн тус тусдаа хийж болно. - Биелэлтийн явцад том програм нь зарим хэсэгтээ давхцаж болно. Ижил хэсгүүдийг

давтахгүйн үүднээс дэд програмд тусад нь хийж болно. Програм бүр тусдаа хөрвүүлэгдэн, өөр өөрийн OBJ (объект) модулийг үүсгэх ба LINK нь

уг модулиудыг ЕХЕ буюу биелэгдэх боломжтой модульд оруулна. Ерөнхийдөө үндсэн програм нь биелэлтийг эхлүүлэх хэсэг байдөг бөгөөд эндээс дэд програмуудаа дууддаг. Дэд програм нь өөрөө мөн дэд програмуудыг дуудаж болно.

ДУУДАХ ЗАРЧИМ

- Нэг сегмент доторх дуудалт (Intrasegment calls) – Near CALL Энэ тохиолдолд CALL нь нэг сегмент дотор буюу уг дуудах командаас урагшаа 128, хойшоо 128 байт хооронд дуудагдана. Энэ ойрын дуудалт нь IP регистрийн утгыг стект хийгээд, IP регистрт дуудагдсан програмын шилжлэг хаягийг хийнэ.

- Нэг сегментээс хол зайн дахь дуудалт (Intrasegment calls) – Far CALL Энэ үйлдлээр эхлээд CS, IP регистрийн утгыг буцах хаяг болгон стект хийнэ. Дараа нь дуудсан програмын сегмент болон шилжлэг хаягуудыг CS болон IP регистрүүдэд хийнэ. EXTRN ба PUBLIC директивүүд MAINPROG нэртэй үндсэн програм, SUBPROG нэртэй дэд програмыг авч үзье. MAINPROG үндсэн програм нь SUBPROG дэд програмыг сегментийн гадна байгааг мэдэхийн тулд EXTRN директивийг ашиглан, SUBPROG-д FAR гэж хандахыг зааж өгнө. Ингэхэд ассемблер нь доорх хоосон хаягтай кодыг үүсгэнэ. 9А 0000 0000 SUBPROG нь PUBLIC директивийг ашиглаж, өөр модуль нь уг програмын хаягийг мэдэх шаардлагатайг зааж өгнө.

-38- Боловсруулсан: магистр багш Т.Амартүвшин

Page 39: Computerin tehnikin undes 1hicheeliin lektsiin huraangui

“Компьютерийн техникийн үндэс” хичээлийн лекцийн хураангуй

MAINPROG болон SUBPROG 2-г объект модулиуд уруу нь хөрвүүлэхэд тэд хоорондоо холбогдоно. MAINPROG болон SUMPROG хоёуланг нь тусд нь: TASM MAINPROG.ASM TASM SUBPROG.ASM гэж объект файлууд уруу нь хөрвүүлээд , дараа нь: TLINK MAINPROG+SUBPROG гэж ЕХЕ буюу биелэгдэх ёстой файлд нь хөрвүүлнэ. TLINK файл нь EXTRN хэсгүүдийг PUBLIC-уудтай нэгтгэн, шаардлагатай шилжлэг хаягуудыг оруулна. Дараа нь 2 объект модулийг нэг биелэгдэх боломжтой модульд нэгтгэнэ. Хэрэв боломжгүй бол биелүүлэхийн өмнө алдааны мэдээг өгнө. TD MAINPROG гэж DEBUG програм ашиглан програмуудын холбоог ажиглан, ажилуулж болно. Алхамаар ажиллуулан дэд програм уруу үсрэх болон үндсэн програмдаа буцах үеүдийн регистрүүдийн өөрчлөлт зэргийг харж болно. EXTRN директив EXTRN нэр : төрөл [ … , … ] Нэгээс олон нэрийг мөрийн төгсгөл хүртэл тодорхойлж болно. Эсвэл дахин шинэ мөрөнд зарлаж болно. Төрөл нь ABS, BYTE, QWORD, FAR, NEAR, WORD байж болно. Нэр нь хувьсагчийн эсвэл процедурын нэр байх ба EQU директивээр тодорхойлогдож болно. PUBLIC директив Заагдсан нэрний хаяг нь бусад програмуудад ашиглагдана гэсэн үг. PUBLIC нэр [ … , … ] Нэгээс олон нэрийг мөрийн төгсгөл хүртэл тодорхойлж болно. Эсвэл дахин шинэ мөрөнд зарлаж болно. Нэрний оронд програмын нэр, хувьсагчийн нэр, тоо байж болно. Програмуудыг холбох 3 арга байж болно.

1. EXTRN ба PUBLIC директивүүдийг ашиглан сегментэд хэрэглэн 2. Дэд програмууд хоорондох ерөнхий өгөдөл зарлах 3. Стекээр параметрүүдийг дамжуулан

Програмуудыг ачаалагч DOS-ын бүтэц ба биелүүлэх програмаа ачаалах үедээ хийх алхамууд:

1. Boot бичлэг нь DOS-ын дискны эсвэл FORMAT/S гэж форматласан дискний зам 0, сектор 1 дээр байрлана. Системийг эхлүүлэх үед систем нь boot-ийн бичлэгийг дискнээс автоматаар санах ойд ачаална. Энэ програм нь дискнээс санах ойд доорх 3 програмыг ачаална.

2. IBMBIO.COM нь ROM BIOS уруу нам түвшний интерцейс бөгөөд 00600h хаягнаас эхлэн санах ойд ачаалагдана. Энэ програм нь төхөөрөмжүүдийг тодорхойлон,

-39- Боловсруулсан: магистр багш Т.Амартүвшин

Page 40: Computerin tehnikin undes 1hicheeliin lektsiin huraangui

“Компьютерийн техникийн үндэс” хичээлийн лекцийн хураангуй

төлвийг нь мэдэх санах ой болон гадаад төхөөрөмжүүдийн (видео монитор, диск г.м) хоорондын оролт гаралтын үйлдлүүдийг зохицуулах ба COMMAND.COM програмыг ачаална.

3. IBMDOS.COM нь програмуудтай холбогдох өндөх төвшний интерфейс бөгөөд 00В00H санах ойн хаягнаас эхлэн ачаалагдана. Энэ нь дискэн дэх сангууд болон файлуудыг зохион байгуулж, дискний бичлэгүүдтэй ажиллах нөхцлийг хангана. Мөн INT 21H тасалдлын функцууд, зарим үйлчилгээнүүдийг агуулна.

4. COMMAND.COM нь DIR, CHKDSK гэх мэт төрөл бүрийн командуудыг агуулах бөгөөд хүссэн СОМ, ЕХЕ, ВАТ өргөтгөлтэй програмуудыг ажиллуулна. Энэ нь биелэгдэх програмуудыг дискнээс санах ой уруу ачаалах үүрэгтэй ба 3 хэсгээс бүтнэ.

- Resident portion буюу IBMDOS.COM-ыг өгөгдлийн талбартай нь ачаалах ба энэ хэсэг ажиллагааны туршид үлдэнэ. Уг хэсэг нь дискний оролт гаралтын бүх мэдээнүүд, мөн дараах тасалдлуудыг агуулна.

Int 22h – хаягийг таслах Int 23h – CTRL/BREAK таслалт Int 24h – Дискний унших бичих үеийн алдааг таних, FAT-ын алдаатай санах ойг таних Int 27h – програмыг резидентээр үлдээх

- Initialization portion нь буюу AUTOEXEC.BAT-д заагдсан файлуудыг суулгана. Систем эхлэх үед энэ хэсэг удирдлагыг аваад, огноог тавин, эхний биелүүлэх програмын сегмент хаягийг тодорхойлно. Энэ хэсэг дахин ажиллахгүй ба хэрэглэгчийн оруулсан эхний командаар ачаалагдах програм нь санах ойн энэ хэсгийг дарж ачаална.

- Transient portion нь санах ойн хамгийн дээд талбарт ачаалагдана. Энэ хэсгийг DOS нь шаардлагатай үед өөр програмаар эзэлж болдог, гэхдээ дахин ачаалж болно. COMMAND.COM-ын энэ хэсэг нь A> эсвэл C> зэрэг промптуудыг хэвлэн, хүсэлтийг хүлээн авч, биелүүлдэг. Энэ хэсэг нь ЕХЕ ба СОМ програмуудыг ачаалагч хэсгийг агуулна. Програм биелүүлэхийг хэрэглэгч хүсэх үед энэ хэсэг PSP (program segment prefix)-ийг COMMAND.COM-ын резидент хэсгийн дараагаар шууд үүсгэнэ. Дараа нь програмыг дискнээс PSP-ийн 100Н шилжлэг хаягнаас ачаалах ба гарах хаягийг нь тавина. Тэгээд ачаалсан програмдаа удирдлагаа өгнө. Дарааллыг үзүүлбэл:

IBMBIO.COM IBMDOS.COM COMMAND.COM (resident) PSP (program segment prefix) Биелэгдэх програм . . . . . . . . . . . . . . . . COMMAND.COM (transient хэсэг)

RET болон INT 20H –ийг хэрэглэн програмаас гарахад COMMAND.COM-ын резидент хэсэг уруу удирдлага буцдаг. Хэрэв transient хэсэг нь өөр програмаар дарагдсан бол резидент хэсэг нь санах ойд дахин ачаална.

-40- Боловсруулсан: магистр багш Т.Амартүвшин