Ekranda belgilarni ko'rsatish

|
Ekranda belgilarni ko'rsatish
|
bet | 44/64 | Sana | 13.05.2024 | Hajmi | 183,36 Kb. | | #230077 |
Bog'liq Системное программирование, практикаEkranda belgilarni ko'rsatish
Ekrandagi har bir belgi ikki bayt bilan tavsiflanadi - belgining ASCII kodi va belgi va fon rangini va belgi miltillayotganligini ko'rsatadigan atribut bayti.
Belgining atributi:
Bit 7: Belgi miltillaydi (standart) yoki fon yorqin (agar uning effekti video funksiyasi 10h tomonidan bekor qilingan bo'lsa).
Bitlar 6 – 4: Fon rangi.
Bit 3: Yorqin rang belgisi (standart) yoki fon miltillaydi (agar uning ta'siri video funksiyasi 11h tomonidan bekor qilingan bo'lsa).
Bitlar 2 – 0: belgi rangi.
Ranglar 2.3-jadvalda ko'rsatilganidek, bitlarda kodlangan. .
16-jadval. Belgilar atributlari
|
Oddiy rang
|
Yorqin rang
|
000b
|
qora
|
to'q kulrang
|
001b
|
ko'k
|
ochiq ko'k
|
010b
|
yashil
|
och yashil
|
011b
|
ko'k
|
ochiq ko'k
|
100b
|
qizil
|
och qizil
|
101b
|
siyohrang
|
och binafsha rang
|
110b
|
jigarrang
|
sariq
|
111b
|
och kulrang
|
oq
|
Joriy kursor joyida belgi va belgi atributini o'qing
INT 10h , AH = 08 - kursorning joriy holatida belgi va belgilar atributini o'qing
Kiritish:
|
AN = 08
VN = sahifa raqami
|
Xulosa:
|
AN = belgilar atributi
AL = ASCII belgilar kodi
|
Ekranda berilgan atributga ega belgini ko'rsatish
INT 10h, AN = 09 — Ekranda berilgan atributga ega belgini koʻrsatish
Kiritish:
|
AN = 09
BN = sahifa raqami
AL = ASCII belgilar kodi
BL = belgilar atributi
CX = belgilar takrorlanish soni
|
Ushbu funktsiyadan foydalanib, siz ekranda istalgan belgini, jumladan, odatda satr oxiri sifatida talqin qilinadigan CR va LF belgilarni ham ko'rsatishingiz mumkin. Grafik rejimlarda CX ekranning o'ng chetida qolgan pozitsiyalar sonidan oshmasligi kerak.
2- misol . 2.1
|
.model kichkina
|
; kod, ma'lumotlar va stek segmentlari birlashtirilgan xotira modeli.
|
|
.kod
|
; ma'lumotlarni o'z ichiga olgan kod segmenti.
|
|
org 100h
|
; COM faylining boshlanishi
|
|
boshlanishi:
|
; dastur kodini boshlash belgisi
|
|
mov ah,09
|
; AN registriga DOS funksiyasining “chiqish liniyasi (9)” raqamini joylashtiramiz.
|
|
mov bh,0
|
; sahifa raqamini o'rnating
|
|
mov a l ,
|
; 12-qator; al registriga - har qanday ASCII belgilar kodini kiriting
|
|
movbl, 00011111b
|
; belgi atributi (ko'kda oq)
|
|
mov cx, 555
|
; hisoblagichda ko'rsatiladigan belgilar sonini o'rnating
|
|
int 10h
|
; DOS qo'ng'irog'ini uzish - belgili chaqiruv;
|
|
ret
|
; DOS funktsiyasi "dasturni tugatish"
|
|
oxiri boshlanadi
|
; dastur kodini tugatish belgisi
|
Ekranda joriy atribut bilan belgini ko'rsating
INT 10h, AN = 0Ah — Chiqish
Kiritish:
|
AN = 0Ah
BN = sahifa raqami
AL = ASCII belgilar kodi
CX = belgilar takrorlanish soni
|
Bu funksiya ekranda har qanday belgini ham ko'rsatadi, lekin belgining atributi belgining o'sha pozitsiyada ilgari ega bo'lgan atributidir.
Teletayp rejimida belgi chiqarish
INT 10h, AH = 0Eh — Teletayp rejimida belgi chiqarish
Kiritish:
|
AN = 0Eh
BN = sahifa raqami
AL = ASCII belgilar kodi
|
CR (0Dh), LF (0Ah), BEL (7) belgilar nazorat belgilar sifatida talqin qilinadi. Agar siz yozgan matn pastki qatordan tashqariga chiqsa, ekran yuqoriga aylanadi. Bu holatda bo'lgan belgining atributi atribut sifatida ishlatiladi.
Berilgan atributlarga ega belgilar qatorini chiqaring
INT 10h , AH = 13h — Berilgan atributlarga ega belgilar qatorini chiqarish
Kiritish:
|
AN = 13h
AL = chiqish rejimi:
Bit 0 - 1-bitni chop etgandan so'ng kursorni satr oxiriga olib boring
- satr nafaqat belgilarni, balki atributlarni ham o'z ichiga oladi, shuning uchun har bir belgi ikki bayt bilan tavsiflanadi: ASCII kodi va atribut bitlari 2 – 7 ajratilgan.
CX = satr uzunligi (faqat belgilar soni)
BL = atribut agar satrda faqat belgilar bo'lsa
DH,DL = satrlar chop etiladigan satr va ustun
ES:BP = xotiradagi satr boshining manzili
|
13h funksiyasi CR ( 0Dh ), LF ( 0Ah ), BS ( 08 ) va BEL ( 07 ) boshqaruv belgilarini sharhlash orqali belgilar qatorini aks ettiradi . Agar satr belgi, atribut formatida tayyorlangan bo'lsa, uni oddiygina video xotiraga nusxalash ancha tez bo'ladi.
BIOS funktsiyalari video rejimlarini almashtirish va sozlash uchun qulaydir, lekin ko'pincha tasvirni video xotirasiga nusxalash orqali matnni ekranda ko'rsatish ancha tez va osonroq bo'ladi.
Video xotira bilan bevosita ishlash
Monitorda ko'rsatilgan hamma narsa - grafik va matn bir vaqtning o'zida video adapterga o'rnatilgan xotirada mavjud. Monitorda tasvir paydo bo'lishi uchun u video adapter xotirasiga yozilishi kerak. Buning uchun 0B800h:0000h mutlaq manzilidan (matn rejimlari uchun) boshlanib, 0B800h:FFFFh da tugaydigan maxsus xotira maydoni ajratilgan. Dasturlar ushbu xotira maydoniga yozgan hamma narsa darhol video adapter xotirasiga yuboriladi. Matn rejimlarida har bir tasvirlangan belgini saqlash uchun ikkita baytdan foydalaniladi: belgining ASCII kodi bilan bayt va uning atributiga ega bayt, shuning uchun 0B800h:0000h manzilida yuqori chap burchakda joylashgan belgilar kodi bilan bayt mavjud. ekranning; 0B800h:0001h manzilida ushbu belgining atributi mavjud; 0B800h:0002h manzilida ekranning yuqori qatoridagi ikkinchi belgining kodi va hokazo.
Shunday qilib, har qanday dastur hech qanday maxsus DOS yoki BIOS funktsiyalariga murojaat qilmasdan, oddiy ma'lumotlarni uzatish buyrug'i bilan ekranda matnni ko'rsatishi mumkin.
18-jadval - 3.1-misol
|
.model kichkina
|
; kod, ma'lumotlar va stek segmentlari birlashtirilgan xotira modeli.
|
|
.kod
|
; ma'lumotlarni o'z ichiga olgan kod segmenti.
|
|
org 100h
|
; COM faylining boshlanishi
|
|
boshlanishi:
|
; dastur kodini boshlash belgisi
|
|
mov ax,0003h
|
; video rejimi 3 (ekranni tozalash)
|
|
int 10h
|
; DOS uzilishi - ekranni tozalash;
|
|
|
|
| |