• mov cl,r ; cl registriga " r "
  • mov ah, 05 h ; AH
  • Endp ni olib tashlang ;
  • Ungatch qongiroq qiling Proc. ungetch Endp ​ ______________ Ungetch
  • Qongiroq yorligi yorliq: ret buyrugi bilan kod blokiga qaytish bilan tugaydi ( ret
  • 0h:041Eh dan 0h:043Dh
  • 0420h bolsa
  • 0480h manzilida va yakuniy manzil 0482h
  • Tizimli dasturlash




    Download 183,36 Kb.
    bet23/64
    Sana13.05.2024
    Hajmi183,36 Kb.
    #230077
    1   ...   19   20   21   22   23   24   25   26   ...   64
    Bog'liq
    Системное программирование, практика

    mov cl,'d'

    ; cl registriga qo'ying - "d" harfining ASCII kodi


    ungetchga qo'ng'iroq qiling

    ; ungetch yorlig'iga o'ting : (kichik dastur qo'ng'irog'i)


    mov cl,'i'

    ; cl registriga " i " harfining ASCII kodini kiriting


    ungetchga qo'ng'iroq qiling

    ; pastki dasturga qo'ng'iroq qiling


    mov cl,'r'

    ; cl registriga " r " harfining ASCII kodini kiriting


    ungetchga qo'ng'iroq qiling

    ; pastki dasturga qo'ng'iroq qiling


    mov cl,0Dh

    ; qator tarjimasi


    Proc. ungetch

    ; pastki dasturni boshlash yorlig'i


    mov ah, 05 h

    ; AH = funktsiya raqami


    mov ch,0

    ; CH = 0 (skanerlash kodi muhim emas)


    int 16 soat

    ; DOS qo'ng'irog'i ( uzilish )


    ret

    ; DOS funktsiyasi "protsedurani tugatish"


    Endp ni olib tashlang

    ; pastki dasturning oxiri


    oxiri boshlanadi

    ; dastur kodini tugatish belgisi

    Jarayonlarni ro'yxatdan o'tkazish (kichik dasturlar).
    ______________
    Ungatch qo'ng'iroq qiling
    Proc. ungetch


    Endp
    ______________
    Ungetch - protsedura nomi
    Qo'ng'iroq - pastki dastur qo'ng'irog'i
    Jarayon - protsedura
    endp - end procedure - protsedura oxiri
    Shuni ham ta'kidlash joizki, boshqalarni bitta kichik dasturdan chaqirish mumkin. Boshqalardan - uchinchisi. Ko'pincha dasturni soddalashtirish va shu bilan uning hajmini kamaytirish uchun dasturchilar oddiy buyruqlar to'plamidan foydalanadilar:
    Qo'ng'iroq yorlig'i
    yorliq:
    ret buyrug'i bilan kod blokiga qaytish bilan tugaydi ( ret - qaytish - qaytish).
    INT 16 soat, AH = 02 soat, 12 soat, 22 soat - klaviatura holatini o'qish

    Kiritish:

    AN = 02 soat (83/84 tugma), 12 soat (101/102 kalit), 22 soat (122 kalit)

    Xulosa:

    AL = Klaviatura holati bayti 1
    AH = Klaviatura holati bayti 2 (faqat 12 soat va 22 soat funksiyalar uchun)

    Klaviatura holati bayti 1 (bu bayt har doim xotirada 0000h:0417h yoki 0040h:0017h manzilida joylashgan):
    Bit 7: Ins yoqilgan
    Bit 6: CapsLock yoqilgan
    Bit 5: NumLock yoqilgan
    Bit 4: ScrollLock yoqilgan
    Bit 3: Alt tugmasi bosilgan (02 soat funksiyasi uchun istalgan Alt, ko‘pincha 12 soat/22 soat davomida Alt tugmachasini qoldiradi)
    Bit 2: Ctrl bosilgan (har qanday Ctrl)
    Bit 1: Chapga Shift bosildi
    Bit 0: O'ngga Shift bosildi
    Klaviatura holati bayti 2 (bu bayt har doim xotirada 0000h:0418h yoki 0040h:0018h manzilida joylashgan):
    Bit 7: SysRq bosildi
    Bit 6: CapsLock bosildi
    Bit 5: NumLock bosiladi
    Bit 4: ScrollLock bosildi
    Bit 3: O'ngga Alt tugmasi bosildi
    Bit 2: Ctrl o'ng tugmasi bosildi
    Bit 1: Chap Alt tugmasi bosilgan
    Bit 0: Chap Ctrl bosilgan
    Ushbu baytlarning ikkalasi ham xotirada joylashgan, shuning uchun uzilishni chaqirish o'rniga, ko'pincha qiymatlarni to'g'ridan-to'g'ri o'qish qulayroqdir. Bundan tashqari, ushbu baytlarga yangi qiymatlar yozilishi mumkin va BIOS mos ravishda klaviatura holatini o'zgartiradi:
    Ushbu ikki baytga qo'shimcha ravishda, BIOS o'z ma'lumotlar maydonida to'g'ridan-to'g'ri kirish mumkin bo'lgan butun klaviatura buferini saqlaydi. Bufer 0h:041Eh dan 0h:043Dh gacha 16 so'zni egallaydi va 0h:041Ah manzilida bufer boshining manzili (eng yaqin), ya'ni keyingi kiritilgan belgi joylashgan manzil va shu manzilda joylashgan. 0h:041Ch manzili bufer oxiridagi manzilni ko'rsatadi, shuning uchun bu ikki manzil teng bo'lsa, bufer bo'sh. Bufer halqa kabi ishlaydi: agar buferning boshlanishi 043Ch va oxiri 0420h bo'lsa , bufer 043Ch, 041Eh va 0420h manzillarida uchta belgidan iborat . Har bir belgi so'z sifatida saqlanadi - 10h INT 16h uzilish funktsiyasi tomonidan qaytarilgan bir xil . Ba'zi hollarda (agar) bufer boshqa manzillarda joylashgan bo'lsa, unda uning boshlang'ich manzili BIOS ma'lumotlar maydonida 0480h manzilida va yakuniy manzil 0482h manzilida saqlanadi. Klaviatura buferiga to'g'ridan-to'g'ri kirish tegishli BIOS funktsiyalariga qo'ng'iroq qilishdan biroz tezroq va o'yinlar yoki demo dasturlari kabi maksimal tezlikni talab qiladigan ilovalar uchun I/U port darajasida klaviatura boshqaruvidan foydalaning.
    DOS vositalari
    Ekran chiqishida bo'lgani kabi, DOS ma'lumotlar manbai sifatida fayl yoki boshqa dasturning standart chiqishidan foydalanishingiz uchun standart STDIN kiritish qurilmasidan foydalanadigan klaviaturadan ma'lumotlarni o'qish uchun funktsiyalar to'plamini taqdim etadi.
    funktsiyasi 0Ah - STDIN dan buferga belgilar qatorini o'qish

    Kiritish:


    Download 183,36 Kb.
    1   ...   19   20   21   22   23   24   25   26   ...   64




    Download 183,36 Kb.