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.
Dostları ilə paylaş: |