• STDOUT qurilmasidan foydalanadi
  • CR, LF, HT va BS
  • DOS funktsiyasi 09h DOS
  • 40h funksiyasi malumotlarni STDOUT ga , BX
  • Standart video rejimlari INT 10h, AN = 00
  • SuperVGA video rejimi INT 10h, AH = 4Fh, AL = 02
  • Kursor ornini ornatish INT 10h, AN = 02
  • Tizimli dasturlash




    Download 183,36 Kb.
    bet42/64
    Sana13.05.2024
    Hajmi183,36 Kb.
    #230077
    1   ...   38   39   40   41   42   43   44   45   ...   64
    Bog'liq
    Системное программирование, практика

    DOS 02h funksiyasi qanday ishlashiga oddiy misol .
    11-jadval - 1.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 dl,

    ; dl registriga kiring - har qanday ASCII belgilar kodini


    mov ah, 2

    ; DOS funktsiyasi raqami "belgi chiqishi"


    int 21 soat

    ; DOS qo'ng'irog'i


    ret

    ; DOS funktsiyasi "dasturni tugatish"


    oxiri boshlanadi

    ; dastur kodini tugatish belgisi

    Ushbu dastur kursorning belgilangan joyida istalgan ASCII belgisini ko'rsatadi.
    Barcha DOS ekran chiqish funksiyalari STDOUT qurilmasidan foydalanadi , standart chiqish. Bu sizga dasturning chiqishini faylga yoki boshqa dasturning standart kiritishiga yo'naltirish imkonini beradi. Misol uchun, agar siz berilgan misolni tuzsangiz (faylni yarating cod.com ) va buyruq satriga yozing
    cod .com > cod .out
    keyin ekranda hech narsa ko'rsatilmaydi va belgining ASCII kodini o'z ichiga olgan joriy katalogda cod .out fayli paydo bo'ladi.
    DOS funktsiyasi 06h.
    DOS funktsiyasi 06h - STDOUT- ga Ctrl-Break-ni tekshirmasdan belgi yozing

    Kiritish:

    AN = 06 soat
    DL = ASCII belgilar kodi (FFhdan tashqari)

    Xulosa:

    Yo'q, hujjatlarga ko'ra, lekin aslida: AL = yozma belgining kodi (DL nusxasi)

    Bu funksiya boshqaruv belgilarini qayta ishlamaydi ( CR, LF, HT va BS ekranga chiqqanda o‘z funksiyalarini bajaradi, lekin chiqish faylga yo‘naltirilganda saqlanib qoladi) va Ctrl-Break-ni tekshirmaydi.
    1.1-misoldagi MOV AN,2 ni MOV AN,6 bilan almashtiramiz va bu misolni qayta kompilyatsiya qilamiz. Biz MS - DOS operatsion tizimida tuzilgan misolning ishini ko'rib chiqamiz .
    DOS funktsiyasi 09h
    DOS funktsiyasi 09h - STDOUT -ga Ctrl-Break-ni tekshirish bilan qator yozing

    Kiritish:

    AN = 09h
    DS:DX = $ bilan tugaydigan qator manzili (24h)

    Xulosa:

    Yo'q, hujjatlarga ko'ra, lekin aslida: AL = 24h (oxirgi belgilar kodi)

    02h funktsiyasining ishiga butunlay o'xshaydi , lekin bitta belgi emas, balki butun chiziq ko'rsatiladi (2-sonli laboratoriya ishiga qarang).
    DOS 40h funktsiyasi
    DOS 40h funksiyasi - fayl yoki qurilmaga yozish

    Kiritish:

    AN = 40h
    IN = STDOUT uchun 1 yoki STDERR
    DS uchun 2:DX = qator boshi manzili
    CX = chiziq uzunligi

    Xulosa:

    CF = 0,
    AX = yozilgan baytlar soni

    Ushbu funktsiya faylga yozish uchun mo'ljallangan, lekin agar BX registriga 1 raqami qo'yilsa , 40h funksiyasi ma'lumotlarni STDOUT ga , BX = 2 bo'lsa - STDERR qurilmasiga chiqaradi . STDERR har doim ma'lumotlarni ekranga chiqaradi va fayllarga yo'naltirmaydi. C da qo'llaniladigan standart chiqish funktsiyalari ushbu funktsiyaga asoslanadi - aslida C funktsiyasi fputs () o'zining birinchi argumentini BX ga , qatorning manzilini (ikkinchi argument) DS:DX ga va CX da uzunlik .
    DOS 40h funksiyasi qanday ishlashiga oddiy misol .
    12-jadval - 1.2-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


    harakat ah, 40h

    ; DOS funktsiyasi raqami


    mov bx, 2

    ; STDERR qurilmasini belgilang


    mov dx, ofset xabari

    ; DS:DX - manzil chiziqlar


    mov cx, 25

    ; CX - ip uzunligi


    int 21 soat

    ; DOS qo'ng'irog'i


    ret

    ; DOS funktsiyasi "dasturni tugatish"


    xabar db "Ushbu funksiya $ ni chop etishi mumkin"

    ; chiqish ma'lumotlarini o'z ichiga olgan c qator.


    oxiri boshlanadi

    ; dastur kodini tugatish belgisi

    Agar siz ushbu misolni tuzsangiz va uni buyruq bilan ishga tushirsangiz
    dosout.com > dosout.out
    keyin ekranda xabar paydo bo'ladi va dosout2.out fayli bo'sh bo'ladi.
    INT 29H ni uzib qo‘ying
    INT 29h: Ekranda belgini tezda aks ettirish

    Kiritish:

    AL = ASCII belgilar kodi

    INT 29 h uzilish qanday ishlashiga oddiy misol .
    13-jadval - 1.3-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,

    ; ax registriga - har qanday ASCII belgilar kodini kiriting


    int 29h

    ; DOS qo'ng'irog'ini uzish - belgili chaqiruv;


    ret

    ; DOS funktsiyasi "dasturni tugatish"


    oxiri boshlanadi

    ; dastur kodini tugatish belgisi

    Ko'pgina hollarda, INT 29h darhol BIOS funktsiyasini "teletayp rejimida ekranda belgi chiqarish" deb ataydi, shuning uchun dasturlarni iloji boricha qisqaroq yozishda baytlarni saqlashdan boshqa afzalliklarga ega emas.
    BIOS vositalari
    DOS ekranining chiqish funksiyalari chiqishni faylga yoʻnaltirish imkonini beradi, lekin matnni ekranning istalgan joyiga chiqarishga ruxsat bermaydi va matn rangini oʻzgartirishga ruxsat bermaydi. DOS BIOS video funksiyalaridan dastur ekrani bilan batafsilroq ishlash uchun ishlatilishi kerak deb hisoblaydi. BIOS - ba'zi qurilmalarga, xususan, video adapterga kirishni ta'minlaydi. Barcha BIOS video xizmati funktsiyalari 10 soat uzilish orqali chaqiriladi.
    Video rejimini tanlash
    BIOS ekranni turli matn va grafik rejimlarga o'tkazish imkoniyatini beradi. Rejimlar bir-biridan o'lchamlari (grafik uchun) va qatorlar va ustunlar soni (matn uchun), shuningdek, mumkin bo'lgan ranglar soni bilan farqlanadi.
    Standart video rejimlari
    INT 10h, AN = 00 — Video rejimini sozlash

    Kiritish:

    AL = past 7 bitdagi rejim raqami

    Xulosa:

    Odatda yo'q, lekin ba'zi BIOS (Feniks va AMI) matn rejimlari uchun AL 30H va grafiklar uchun 20h ni qo'yadi.

    Ishga misol .
    2 -misol . 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


    harakat ah, 00

    ; video rejimini o'rnating


    mov al,5

    ; rejim raqamini o'rnating


    int 10h

    ; DOS uzilish qo'ng'irog'i - video xizmat qo'ng'irog'i;


    ret

    ; DOS funktsiyasi "dasturni tugatish"


    oxiri boshlanadi

    ; dastur kodini tugatish belgisi

    Ushbu funktsiyani chaqirish ekranning tanlangan rejimga o'tishiga olib keladi. Agar AL ning eng muhim biti 1 ga o'rnatilmagan bo'lsa, ekran tozalanadi. Matn rejimi raqamlari 0, 1, 2, 3 va 7. 0 va 1 16 rangli 40x25 rejimlar (har bir satrda 40 belgidan 25 satr), 2 va 3 - 16 rangli 80x25 rejimlar, 7 - 80x25 monoxrom rejim. Yuqori aniqlikdagi (80x43, 80x60, 132x50 va boshqalar) ko'plab matn rejimlari mavjud, ammo bu funksiya orqali qo'ng'iroq qilish uchun ularning raqamlari turli video adapterlar uchun farq qiladi (masalan, Cirrus 5320 uchun 61h - 132x50 va Genoa 6400 uchun 132x29 rejimi) ). Biroq, agar video adapter VESA BIOS Extension standartini qo'llab-quvvatlasa, siz 4Fh funksiyasidan foydalanib, yuqori aniqlikdagi rejimlarga o'tishingiz mumkin.
    SuperVGA video rejimi
    INT 10h, AH = 4Fh, AL = 02 — SuperVGA video rejimini sozlash

    Kiritish:

    BX = past 13 bitdagi rejim raqami

    Xulosa:

    AL = 4Fh , agar bu funktsiya qo'llab-quvvatlansa
    AN = 0, almashtirish muvaffaqiyatli bo'lsa
    AN = 1, xatolik yuz bergan bo'lsa

    VX registrining 15-biti 1 ga o'rnatilgan bo'lsa, video xotira tozalanmaydi. Ushbu funksiya yordamida chaqirilishi mumkin boʻlgan matn rejimlari: 80x60 ( 108h rejimi ), 132x25 ( 109h ), 132x43 ( 10Ah ), 132x50 ( 10Bh ), 132x60 ( 10Ch ).
    DOS da ishlatiladigan standart video rejimi matn rejimi 3 dir.
    Kursor o'rnini o'rnatish
    INT 10h, AN = 02 - Kursor o'rnini o'rnating

    Kiritish:

    AN = 02
    BN = sahifa raqami
    DH = qator
    DL = ustun

    Ishga misol .
    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, 02

    ; kursor o'rnini o'rnating


    mov bh,0

    ; sahifa raqamini o'rnating


    mov dh,12

    ; 12-qator


    mov dl, 29

    ; 29-ustun


    int 10h

    ; DOS uzilishlari - kursor o'rnini 12.29 nuqtaga o'rnating



    Download 183,36 Kb.
    1   ...   38   39   40   41   42   43   44   45   ...   64




    Download 183,36 Kb.