• Joriy kursor joyida belgi va belgi atributini oqing INT 10h , AH
  • Teletayp rejimida belgi chiqarish INT 10h, AH = 0Eh
  • Berilgan atributlarga ega belgilar qatorini chiqaring INT 10h , AH = 13h
  • Video xotira bilan bevosita ishlash
  • Ekranda belgilarni ko'rsatish




    Download 183,36 Kb.
    bet44/64
    Sana13.05.2024
    Hajmi183,36 Kb.
    #230077
    1   ...   40   41   42   43   44   45   46   47   ...   64
    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;



    Download 183,36 Kb.
    1   ...   40   41   42   43   44   45   46   47   ...   64




    Download 183,36 Kb.