Mikroprotsessor va assembler tili fanidan tayyorlagan



Yüklə 17,5 Kb.
tarix27.12.2023
ölçüsü17,5 Kb.
#163133
2 amaliy Movlyanov.J


O’ZBEKISTON RESPUBLIKASI RAQAMLI TEXNOLOGIYALAR VAZIRLIGI
MUHAMMAD AL-XORAZMIY NOMIDAGI TOSHKENT AXBOROT TEXNOLOGIYALARI UNIVERSITETI
QARSHI FILIALI


TT va KT” FAKULTETI
III– BOSQICH TT 11-21(S) GURUH TALABASINING
MIKROPROTSESSOR VA ASSEMBLER TILI
FANIDAN TAYYORLAGAN
3,4-Amaliy ish
Bajardi: Movlyanov.J
Qabul qildi: Sharifov.Y

QARSHI – 2023

Amaliy mashg’ulot - № 3-4


ASSEMBLER TILIDA ODDIY DASTURLAR YOZISHNI O‘RGANISH
Ishdan maqsad: assembler dasturining tuzilishi bilan tanishish, assembler tilida birinchi dastur yaratish.Структура ассемблерной программы
Dastur har qanday OT tomonidan bajarilishi uchun uni bajariladigan faylga kompilyatsiya qilish kerak. DOS da bajariladigan fayllarning asosiy ikkita formati COM va EXE hisoblanadi.
MAQOMOTI tipidagi fayllar dastur haqida hech qanday qo'shimcha ma'lumotsiz faqat kompilyatsiya qilingan kodni o'z ichiga oladi.Barcha kod, ma'lumotlar va stek bir segmentga joylashtirilgan va 64 KB dan oshmasligi kerak.




. model tiny




. code




org 100h




begin:




mov ah, 9




mov dx,offset message




int 21h




ret




message db "Привет", 0dh, 0ah, '$'




end begin

Uning qanday ishlashini tushunish uchun dasturning manba kodini ko'rib chiqaylik.


Birinchi qator kod, ma'lumotlar va stek segmentlarini birlashtirgan TINY xotira modelini belgilaydi. Ushbu model COM tipidagi fayllarni yaratish uchun mo'ljallangan.
DOS da manzilni shakllantirish uchun segment va ofset ishlatiladi. "SALOM" qatorining manzilini shakllantirish uchun DS (segment) va DX (ofset) juftlik registrlari qo'llaniladi. *.com dasturini xotiraga yuklashda barcha segment registrlari dasturimiz yuklangan segmentga teng qiymatni oladi (jumladan, DS). Shuning uchun chiziq segmentini DS ga yuklashning hojati yo'q (u allaqachon yuklangan).
Direktiv. CODE kod segmentini boshlaydi, bizning holatlarimizda ma'lumotlar ham bo'lishi kerak.
ORG 100h dastur hisoblagichini (IP) 100 soatga o'rnatadi, chunki MAQOMOTI fayli xotiraga yuklanganda DOS PSP ma'lumotlar bloki bilan birinchi 256 baytni (100 soat) egallaydi va dastur kodini faqat shu blokdan keyin joylashtiradi. COM tipidagi fayllarga kompilyatsiya qilingan barcha dasturlar ushbu direktiva bilan boshlanishi kerak.
BEGIN: belgisi dasturning birinchi buyrug'idan oldin joylashgan bo'lib, dastur qaysi buyruq bilan boshlanishini ko'rsatish uchun END direktivasida (Begin - inglizcha start; end - end) ishlatiladi.
Umuman olganda, BEGIN so'zi o'rniga boshqa narsa ishlatilishi mumkin. Masalan, START:. Bunday holda, biz END START dasturini bajarishimiz kerak bo'ladi.
(5) - (7) qatorlar “SAlom” xabarini aks ettiradi.
Keling, protsessor registrlarini qisqacha ko'rib chiqaylik.
Protsessor registri - bu raqamni saqlash uchun maxsus ajratilgan xotira.
Masalan:
Agar biz ikkita raqamni qo'shmoqchi bo'lsak, matematikada buni quyidagicha yozamiz:
A=5
B=8
C=A+B.
A, B va C - bu registrlarning bir turi (agar biz kompyuter haqida gapiradigan bo'lsak), unda ba'zi ma'lumotlar saqlanishi mumkin. A=5 quyidagicha o'qilishi mumkin: A ga 5 raqamini bering.
Registrga qiymat berish uchun Assemblerda mov operatori mavjud (inglizcha move – yuklashdan). MOV AH,9 buyrug'i AH registriga 9 raqamini joylashtiradi - DOS "chiqarish chizig'i" funktsiyasining raqami.
MOV DX, OFFSET MESSAGE buyrug'i DX registriga MESSAGE yorlig'ining ofsetini ma'lumotlar segmentining boshiga nisbatan joylashtiradi, bu bizning holatlarimizda kod segmentiga to'g'ri keladi.
OFFSET (ingliz tilida bu ofset). Yig'ish jarayonida assembler ushbu qatorga yetib borgach, xotiradagi OFFSET MESSAGE ni shu qatorning MANZILI (ofset) bilan almashtiradi. Agar biz OFFSET MESSAGE yozsak (garchi MOV DX, WORD OFFSET MESSAGE to'g'riroq bo'lardi), u holda manzil (ofset) emas, balki satrimizning dastlabki ikki belgisi (bu holda “Pr”) DX ga yuklanadi. DX o'n olti bitli registr bo'lgani uchun unga faqat ikki bayt yuklanishi mumkin (bitta belgi har doim bir bayt).
INT 21H buyrug'i DOS tizimi funksiyasini chaqiradi (inglizcha interrupt - uzilish). INT 21H liniyasini INT 33 bilan almashtirishingiz mumkin, dastur to'g'ri ishlaydi. Biroq, assemblerda uzilish sonini o'n oltilik tizimda ko'rsatish odatiy holdir.
MS-DOS uzilishi - bu doimiy xotirada joylashgan va istalgan vaqtda istalgan dasturdan chaqirilishi mumkin bo'lgan bir xil ichki dastur (MS-DOS qismi).
Bu buyruq dasturlar va operatsion tizim o'rtasidagi o'zaro aloqaning asosiy vositasidir. Misolda 9-raqamli DOS funktsiyasi chaqiriladi - ekranda chiziqni ko'rsatish. Bu funksiya boshidan manzili DS: DX registrlarida ko'rsatilgan satrni birinchi duch kelgan $ belgisigacha chop etadi. MAQOMOTI fayli ishga tushirilganda, DS registriga dasturning segment manzili avtomatik ravishda yuklanadi va DX registri avvalgi buyruq bilan tayyorlangan.

Yüklə 17,5 Kb.

Dostları ilə paylaş:




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©genderi.org 2024
rəhbərliyinə müraciət

    Ana səhifə