| Uutiset | Koodikirjasto | Wiki | Keskustelut | FAQ | Info |
vga-paletin esittelyTuhmahepo 16.02.04 23:37 'turhahko' esittelypätkä joka piirtää vga-paletin näytölle
;VGA vakiopaletti esittely ;koodia saa käyttää vaikka wc-harjana ;kääntyypi MASMilla ;olen tosi aloittelija jotenka palautetta kiitos! .model tiny .data rivi1 db 0 rivi db 0 .code .startup mov ax,0A000h ;es osoittamaan videosegmenttiä. mov es,ax mov ax,13h ;320x200 vga tila. int 10h xor di,di ;nollataan siirros, eli aloitetaan pikselien ;asettelu ruudun vasemmasta yläkulmasta. xor ax,ax ;al rekkarista luetaan asetettavan pikselin väri, nollataan se. mov cx,32 ;laskuriin 32 eli piirretään 32 kpl 10 pikselin levyisiä ;palikoita sivuttaissuunnassa. piirto: push cx ;palikoiden kierroslaskuri talteen. call piirranelio ;kutsutaan piirranelio aliohjelmaa. pop cx ;kun suoritettu, palautetaan palikoiden kierroslaskuri. inc al ;kasvatetaan al rekisterin arvoa, eli siirrytään seuraavaan väriin. loop piirto ;kerrataan piirranelio aliohjelmaa kunnes kierroslaskuri 32 on tyhjä. add di,3200 ;kun rivi on täynnä palikoita, jää di osoittamaan viimeisen palikan ;yläkulmaan, listätään 320*10 jolloin voidaan aloittaa täyttämään ;uutta riviä. inc rivi ;kasvatetaan rivi muuttujaa. add cx,32 ;cxään 32, eli uuden rivin palikoiden määrä. cmp rivi,8 ;verrataan rivi muuttujaa kahdeksaan (32*8=256 väriä). jne piirto ;jos ei, mennään piirto pomppaan ja jatketaan väripalikoiden piirtämistä. xor ax,ax ;jos on piirretty jo kahdeksan riviä kutsutaan keskeytystä 16h/0 int 16h ;joka odottaa näppäimenpainallusta ennenkuin jatkaa ohjelmaa. mov ax,3 ;kun näppäintä painettu, siirrytään takaisin tekstitilaan. int 10h mov ah,4Ch ;palaa dossiin perus lopetus sälää. int 21h piirranelio proc near ;tämä aliohjelma piirtää yhden neliön alkaen di osoittamasta paikasta. mov rivi1,0 ;rivi1 muuttujassa pidetään ylhäällä monta pikseliriviä on piirretty. privi: mov cx,10 ;cx rekkariin 10, tämä osoittaa montako pikseliä piirretään rivilleen. rep stosb ;asetetaan es:di osoittamaan paikkaan al rekisterin sisältö (väri) cx kertaa. inc rivi1 ;kasvatetaan rivi1 laskuria. add di,310 ;siirrytään rivi alaspäin (0+10+310=320). cmp rivi1,10 ;verrataan rivi1 muuttujaa kymmeneen, tämä osoittaa montako pikseliriviä jne privi ;piirretään kuhunkin neliöön. jos alle, hypätään privi pomppaan ja ;piirretään uusi rivi. sub di,3190 ;kun neliö on valmis, palautetaan osoitus neliön oikeaan yläkulmaan ;((320*10)-10=3190) ret ;palataan pääohjelmaan piirranelio endp end Tuhmahepo 23:38 16.2.04 tulipa ruma jäsentely, no mut kertokaa mielipiteenne Tuhmahepo 23:41 16.2.04 ohos sitä pystyikin editoimaan jälkeenpäin, no nyt on luettavan näköinen... Entropia 12:21 17.2.04 Erittäin hyvin kommentoitu, varsin hyödyllistä siis. Tuskin kellään enää DOSsia koneessa on mutta tästä löytyy hyviä vinkkejä muihin ohjelmiin. |
![]() Haku
|