1 / 26

Darbas su tekstu

Darbas su tekstu. Informatikos katedra, L.Kaklauskas 2002 metai. Video režimo nustatymas(BIOS). Komanda: INT 10h Įrašymas: AH = 0 0 h A L = video režimo numeris 7 jaunesni baitai, o vyriausias 1 – ekranas nevalomas, 0 – nuvalomas. AL reikšmės: 01h – 16 spalvų 40X25,

kesia
Télécharger la présentation

Darbas su tekstu

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Darbas su tekstu Informatikos katedra, L.Kaklauskas 2002 metai

  2. Video režimo nustatymas(BIOS) Komanda: INT 10h Įrašymas: AH = 00h AL =video režimo numeris 7 jaunesni baitai, o vyriausias 1 – ekranas nevalomas, 0 – nuvalomas. AL reikšmės: 01h – 16 spalvų 40X25, 02h ir 03h – 16 spalvų 80X25, 07h – nespalvotas 80X25. Yra ir daugiau, bet jie priklauso nuo konkrečios vaizdo plokštės.

  3. Žymeklio pozicija (BIOS) Komanda: INT 10h Įrašymas: AH = 02h BH = puslapio numeris, DH = eilutė, DL = stulpelis. Stulpeliai ir eilutės skaičiuojami nuo kairiojo viršutinio ekrano kampo, pradinė koordinatė (0, 0). Video režimai 2 ir 3 gali naudoti nuo 0 iki 3 puslapių, o 0 ir 1 naudoja nuo 0 iki 7 puslapio. Juos naudojant galima tekstą spausdinti neaktyviame puslapyje, o po to akimirksniu persijungti.

  4. Skaityti žymeklio padėti ekrane (BIOS) Komanda: INT 10h Įrašymas: AH = 03h BH = puslapio numeris, DH = eilutė, DL = stulpelis, CH = pirmoji žymeklio pozicija, CL = paskutinioji žymeklio pozicija,

  5. Simbolių spausdinimas ekrane (BIOS) Kiekvienas simbolis ekrane aprašomas dviem baitais: Pirmas baitas ASCII kodas, antras – atributai Atributo baito reikšmės: 7 bitas – 1 reiškia, kad simbolis mirksi arba fonas pavaizduojamas ryškesne spalva, 6-4 bitai – fono spalva, 3 bitas – 1 reiškia simbolis ryškio spalvos arba fonas mirksi, 2-0 bitai – simbolio spalva.

  6. Skaityti simbolį žymeklio pozicijoje (BIOS) Komanda: INT 10h Įrašymas: AH = 08h BH = puslapio numeris, Duomenys AH = simbolio atributas, AL = simbolio ASCII kodas,

  7. Spausdinti simbolį žymeklio pozicijoje (BIOS) Komanda: INT 10h Įrašymas: AH = 09h BH = puslapio numeris, AL = simbolio ASCII kodas, BL = simbolio atributas, CX = simbolio kartojimo skaičius. CX neturi viršyti simbolių kiekio, likusio iki ekrano pabaigos. Spausdina simbolį su einamuoju atributu. Komanda: INT 10h Įrašymas: AH = 0Ah BH = puslapio numeris, AL = simbolio ASCII kodas, CX = simbolio kartojimo skaičius

  8. Spausdinti simbolį teletaipo režimu (BIOS) Komanda: INT 10h Įrašymas: AH = 0Eh BH = puslapio numeris, AL = simbolio ASCII kodas, Jei ekrane netelpa tekstas, tai jis prasukamas žemyn. Interpretuoja valdančiuosius kodus CR(0Dh), LF(0Ah), BEL(7).

  9. Spausdina eilutę su nurodytais atributais (BIOS) Komanda: INT 10h Įrašymas: AH = 13h AL = režimas: 0 bitas – žymeklis į eilutės pabaigą atspausdinus tekstą, 1 bitas – eilutė turi ir simbolius ir atributus, t.y. simbolis parašomas 2 baitais, 2-7 bitai rezervuoti. CX = eilutės ilgis, BL = atributas, jei eilutė turi tik simbolius, DH, DL = spausdinimo pradžios eilutė ir stulpelis, ES:BP = eilutės pradžios atmintyje adresas. Interpretuoja valdančiuosius kodus CR(0Dh), LF(0Ah), BS(08), BEL(7).

  10. Skaito simbolių eilutę į buferį (DOS) Komanda: INT 21h Įrašymas: AH = 0Ah DS:DX = buferio(atminties) adresas. Pirmas buferio baitas turi skaičių, nusakantį simbolių kiekį(1-254). Jei nurodytas turinys, tai jis gali būti panaudotas kaip sufleris. Renkant tekstą, kaip ir DOS-e galioja tos pačios valdymo taisyklės. Paspaudus ENTER eilutė įrašoma į buferį(atmintį) pradedant trečiuoju baitu, antrame įrašomas realiai surinktos eilutės ilgis, neskaitant ENTER.

  11. Skaito simbolį (DOS) Komanda: INT 21h Įrašymas: AH = 01h Reikšmė AL = simbolio ASCII kodas arba 0. Įvedant duomenis su šia funkcija spausdinama reikšmė kartojama ekrane. Galima nutraukti su CTRL+BREAK arba CTRL+C, jei nuspaustas ne simbolis reikšmė 0. Komanda: INT 21h Įrašymas: AH = 08h Reikšmė AL = simbolio ASCII kodas arba 0. Įvedant duomenis su šia funkcija reikšmė ekrane nekartojama. Galima nutraukti su CTRL+BREAK arba CTRL+C, jei nuspaustas ne simbolis reikšmė 0.

  12. Skaito simbolį (DOS) Komanda: INT 21h Įrašymas: AH = 07h Reikšmė AL = simbolio ASCII kodas arba 0. Įvedant duomenis su šia funkcija reikšmė ekrane nekartojama. Laukia klavišo paspaudimo, bet negalima nutraukti su CTRL+BREAK. Komanda: INT 21h Įrašymas: AH = 06h, DL = 0FFh. Reikšmė ZF = 1, jei nebuvo paspaustas simbolio klavišas ir AL = 0, ZF = 0, jei buvo paspaustas simbolio klavišas ir AL = simbolio kodas,

  13. Klaviatūros būsena(DOS) Komanda: INT 21h Įrašymas: AH = 0Bh Reikšmė AL = 0, jei nepaspaustas klavišas, AL = 0FFh, jei paspaustas klavišas. Patogu naudoti prieš 01, 07 ir 08 funkcijas. Komanda: INT 21h Įrašymas: AH = 0Ch, AL = 01, 06, 07, 08, 0Ah funkcijų numeriai. Reikšmė priklauso nuo pasirinktos funkcijos. Naudojama tam, kad funkcijos neperimtų anksčiau paspausto klavišo kodo.

  14. Skaito simbolį (BIOS) Komanda: INT 16h Įrašymas: AH = 00h(83/84 klavišų), 10h(101/102 klavišų), 20h(122 klavišų) Reikšmė AL = klavišo ASCII kodas, 0 arba prefiksas, AH = prefiksas arba praplėstas ASCII kodas. Komanda: INT 16h Įrašymas: AH = 01h(83/84 klavišų), 11h(101/102 klavišų), 21h(122 klavišų) Reikšmė ZF = 1, jei buferis tuščias, ZF = 0, jei yra simbolis: AL = klavišo ASCII kodas, 0 arba prefiksas, AH = prefiksas arba praplėstas ASCII kodas.

  15. Perkelia į klaviatūros buferį (BIOS) Komanda: INT 16h Įrašymas: AH = 05h CH = prefiksas, CL = ASCII kodas. Reikšmė AL = 00 jei operacija sėkminga, AL = 01, jei klaviatūros buferis perpildytas.

  16. Tikrina klaviatūros būseną (BIOS) Komanda: INT 16h Įrašymas: AH = 02h(83/84 klavišų), 12h(101/102 klavišų), 22h(122 klavišų) Reikšmė AL = 00 jei operacija sėkminga, AL = klaviatūros būsenos baitas 1, AL = klaviatūros būsenos baitas 2(12h ir 22h). Būsenos baitas yra kompiuterio atmintyje adresu: 0000h:0417h arba 0040h:0017h: 7 bitas INS įjungta, 6 bitas CAPSLOCK įjungta, 5 bitas NUMLOCK įjungta, 4 bitas SCROLLLOCK įjungta, 3 bitas ALT nuspaustas(dažnai galioja tik kairiajam), 2 bitas CTRL nuspaustas, 1 bitas kairysis SHIFT nuspaustas, 0 bitas dešinysis SHIFT nuspaustas,

  17. Tikrina klaviatūros būseną (BIOS) Būsenos baitas 2 atveju yra kompiuterio atmintyje adresu: 0000h:0418h arba 0040h:0018h: 7 bitas SYSRG įjungta, 6 bitas CAPSLOCK įjungta, 5 bitas NUMLOCK įjungta, 4 bitas SCROLLLOCK įjungta, 3 bitas dešinysis ALT nuspaustas, 2 bitas dešinysis CTRL nuspaustas, 1 bitas kairysis ALT nuspaustas, 0 bitas dešinysis CTRL nuspaustas.

  18. Sąlyginės komandos Jccžymė – perėjimas turi būti ne didesnis nei 128 baitų Komandos variantai

  19. Sąlyginės komandos Loopžymė – vykdo ciklą, dažniausiai o sąlygos patikrinimo. Testgav, sal - atlieka gav ir sal loginę sumą ir nustato SF, ZF ir PF požymius

  20. Sąlyginis perėjimas … Cmp sal1, sal2 – tikrinama sąlyga Jcc zym1 –perėjimas į zym1, atsižvelgiant į Cmp rezultatą … – komandos, jei netenkinama Jcc sąlyga Jmp zym2 –besąlyginis perėjimas į zym2 Zym1: … – komandos, jei tenkinama Jcc sąlyga … Zym2: … – programos tęsinys

  21. Sąlyginis perėjimas .model tiny .code org 100h start: mov al, 00h mov ah, 01h int 21h cmp al, 53 jle pirmas mov dx, offset daugiau mov ah, 9 int 21h jmp viskas pirmas: mov dx, offset maziau mov ah, 9 int 21h viskas: ret maziau db ' - kodas mazesnis uz skaiciaus 5 arba jam lygus',0dh,0ah,'$' daugiau db ' - kodas didesnis uz skaiciaus 5',0dh,0ah,'$' end start

  22. mov reg, pab_sk – į reg perkeliamas ciklo kartojimų Cikpr: … Dec reg – programos tęsinys Jnz Cikpr – jei reg nelygus 0, tai pereiti į Cikpr … – ciklas baigtas … – programos tęsinys Gali būti sukurti ir kitokie programos atkarpos kartojimo būdai, panaudojant komandą Cmp, Int ir pan. Ciklas

  23. Pavyzdys .model tiny .code org 100h Start: mov cx, 256 mov dl, 0 mov ah, 2 Ciklas: int 21h inc dl test dl, 0fh jnz tesk_cikla push dx mov dl, 0dh int 21h mov dl, 0ah int 21h pop dx Tesk_cikla: loop ciklas ret end start

  24. .model tiny .code org 100h start: mov dx, offset koment mov ah, 9 int 21h - komentaras ekrane mov al, 00h mov ah, 01h int 21h - laukia kol įrašysiu simbolį mov dx, 0 - spausdinsime simbolius nuo kairiojo viršutinio ekrano kampo mov si, 10 - kartosime 10 kartų ciklą ciklas: mov ah, 02h int 10h - perkelia žymeklį į nurodytą poziciją mov ah, 09h mov bl, 10101101b mov cx, 15 push dx - išsaugome žymeklio poziciją int 10h - spausdina 15 simbolių eilutę pop dx - atstatome žymeklio pozicijos reikšmę inc dh - sekanti eilutė dec si - mažinama ciklo skaitliuko reikšmė jnz ciklas - jei ne nulis tęsti ret koment db 'Rasykite simboliir po 15 simboliu pakartosiu 10 eiluciu',0dh,0ah,'$' end start Ciklas

  25. .model tiny - spausdina ASCII kodų lentelę eilutėje po 16 simbolių .code org 100h start: mov ax, 0003h int 10h - nustatomas 3 video režimas ir valomas ekranas, žymeklis į 0,0 poziciją mov dx, 0- dh ir dl saugos žymeklio poziciją mov si, 256- ciklas vykdomas 256 kartų ir si registras - skaitliukas mov al, 0 mov ah, 9 mov cx,1 - spausdinsime tik 1 simbolį mov bl, 00011111b - simbolis spausdinamas baltas mėlyname fone ciklas: int 10h - spausdinamas simbolis push ax - išsaugosime registro ax reikšmę mov ah, 2 inc dl - sekantis stulpelis int 10h - perkeliame žymeklį mov ax, 0920h - spausdinamas tarpas al=20h ir funkcijos kodas ah=09 int 10h - spausdinsime tarpą mov ah, 2 - funkcijos numeris 2 inc dl - sekantis stulpelis int 10h - perkeliame žymeklį pop ax - gražiname ax inc al - sekantis ASCII simbolis test al, 0fh - tikriname ar al nėra 16 jnz tesk_cikla - jei taip tęsiame ciklą push ax - jei ne saugome ax mov ah, 2 - video funkcijos numeris inc dh - sekanti eilutė mov dl, 0 - žymeklis į eilutės pradžią int 10h - perkeliame žymeklį pop ax - gražiname reikšmę tesk_cikla: dec si - mažiname skaitliuko reikšmę jnz ciklas - jei ne 0, tai tęsiame ciklą ret end start

  26. ėkmės

More Related