|
Tizimli dasturlash
|
bet | 23/64 | Sana | 13.05.2024 | Hajmi | 183,36 Kb. | | #230077 |
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
|
| |