You are on page 1of 4

Bi thc hnh s 7

Lp trnh mn hnh
Mc ch
Hiu c cch t chc b nh mn hnh cho ch text 80x25 16 mu v ch graphic SVGA 800x600 256 mu Bit truy xut b nh bng ngt 10h v bng cch c/ghi vo vng nh mn hnh

Tm tt l thuyt
T chc b nh Thng tin th hin trn mn hnh c quy nh bi d liu ghi trong vng nh mn hnh. D liu ny c t chc khc nhau ty vo ch th hin (display mode). Trong ch 03h (text 16 mu, 80x25) vng nh mn hnh bt u t a ch B800h:0000. Mi mn hnh c 80x25 = 2000 k t. Mi k t c lu tr bi 2 byte, byte th nht lu m ASCII, byte th hai lu thuc tnh th hin (bit 7 : nhp nhy, bit 6-4 : mu nn, bit 3-0 : mu ch). Nh vy mi mn hnh ng vi 4000 byte. Trong ch ny (03h) ta c th s dng 4 trang mn hnh khc nhau, nh s t 0 n 3. Ti mi thi im ch c mt trang c hin th, cc trang khc n nhng vn c th ghi d liu ln . a ch ca trang th k l B8000h + k x 1000h, ngha l mi trang chim 4096 byte, mc d ch 4000 byte l c s dng. Trong ch 103h (SVGA, graphic 256 mu, 800x600) vng nh mn hnh bt u t a ch A000h:0000. Mi im nh ng vi 1 byte lu ch s mu. Nh vy, vng nh mn hnh tri di 480000 byte, chia lm nhiu trang. Mi trang c kch thc bng mt segment 64KB. Ch s mu ca im nh chnh l s th t ca mu trong bng mu. Mi mu trong bng mu c xc nh bi 18 bit i din cho t l 3 thnh phn mu (R,G,B), mi thnh phn 6 bit nhn gi tr t 0 n 63. ch ny, mn hnh c th biu din c 218 mu khc nhau, nhng ti mt thi im th ch th hin 256 mu khc nhau. Mt s hm ca ngt 10h (BIOS) AH = 00h. Thay i ch hin th AL : ch hin th. Nu bit 7 bt th mn hnh khng b xa khi thay i ch hin th. AL = 03h. Chn ch ha 80x25, 16 mu. AH = 0Fh. Ly ch hin th hin thi. Kt qu: AH : s ct AL : ch hin th BH : trang hin thi AH = 01h. Thay i kch thc con tr. CH : dng qut u CL : dng qut cui AH = 02h. Thay i v tr con tr. DH : dng DL : ct BH : trang AH = 05h. Thay i trang th hin. AL : trang AH = 0Ah. In ra k t ti v tr con tr. BH : trang AL : m ASCII CX : lp bao nhiu ln AH = 09h. In ra k t ti v tr con tr, nhng cho php t thuc tnh cho k t. BH : trang BL : thuc tnh AL : m ASCII

CX : lp bao nhiu ln AH = 0Eh. In ra k t ti v tr con tr, dch con tr sang v tr tip theo. BH : trang AL : m ASCII AX = 4F02h. In ra k t ti v tr con tr, dch con tr sang v tr tip theo. BX : ch ha ( = 103h : ch SVGA 256 mu 800x600) Nu kt qu tr v trong AX khc vi 004Fh th h thng khng th chuyn sang SVGA.

Ti liu tham kho


1. 2. 3. 4. Nguyn Minh Tun, Gio trnh hp ng - Chng 10, HKHTN, 2002 Randal Hyde, The art of assembly language programming Chapter 23. Dng Anh c, Gio trnh ha my tnh, HKHTN, 1998 Dan Rollins, TechHelp v.6.0

Bi tp
Bi 1. ChangePage. Chn ch 03. Trn trang 0, ta (8,10) vit dng ch VIET NAM mu trn nn trng. Trn trang 1, ta (12,7) vit dng ch QUE HUONG TOI mu vng trn nn xanh. Lm bin mt con tr. To vng lp chuyn qua li gia trang 0 v 1 cho n khi mt phm c nhn. Bi 2. Vch mu. Khi ng ch 103h (SVGA). Bng cch truy xut trc tip vng nh mn hnh, hy th hin 256 mu trong bng mu mc nh bng cc vch mu nm cnh nhau, mi vch rng 3 im nh. Sau khi nhn phm bt k, tr v ch 03 v kt thc chng trnh.

M rng
1. Trong bi tp 1, c nhn xt g v tc chuyn gia hai trang ? C cch no t c kt qu tng t (hai dng ch thay nhau xut hin) m tc chuyn i nhanh hn ? 2. Thay v hai dng ch chp tt nh bi tp 1, lm sao th hin hai dng ch lun phin tin li gn nhau, ri li li xa nhau, ri li gn nhau. 3. Tm cch pha li (nh ngha li) bng mu, sau khi nhn Enter cc vch th hin trong bi tp 2 t nhin bin thnh mt di mu thay i t sng trng n xm, n en. Nhn Enter ln na s phc hi li di mu nh trc. 4. Nghin cu mt thut ton v ng thng v vit chng trnh v nhng on thng ty trn mn hnh.

Hng dn
Bi 1. Dng hm 05 ca ngt 10h thay i trang. V d: mov mov int ah,05h al,0 10h ; set page to view

Dng hm 02 nhy n v tr cn thit. V d: mov mov mov mov ah,02h dh,8 dl,10 bh,0 ; goto (8,10) on page 0

int

10h

vit ch c mu v dch chuyn con tr, c th gi ngt 2 ln nh sau V d: printStA proc mov al,[si] cmp al,'$' jz Done mov ah,09h mov cx,1 int 10h mov ah,0eh int 10h inc si jmp printStA Done: ret endp printStA lm bin mt con tr, c th dng cch sau V d: mov ch,20h ; Hide cursor mov cl,20h mov ah,1 int 10h chuyn i gia hai mn hnh, c th vit: V d: mov mov next: xor mov int mov int jz Bi 2. chuyn gia ch text v graphic, c th dng on chng trnh sau V d: SVGA_ON proc push ax push bx mov ax,4f02h mov bx,103h int 10h pop bx pop ax dl,0 dh,5 dl,1 ax,dx 10h ah,1 16h next ; switch page number 0/1 ; change page ; check key pressed

ret endp SVGA_ON SVGA_OFF proc push ax mov ax,0003h int 10h pop ax ret endp SVGA_OFF in mt im nh, c th dng cch sau: V d: push bx mov bx,800 xor dx,dx mul bx ; dx:ax = y * 800 pop bx add ax,bx ; ax = ax + x adc dx,0 ; dx = 0 + carry cmp dx,pn jz Write call SetPage mov pn,dx Write: mov di,ax mov al,cl stosb

You might also like