Ankkaserver


    __
  >(' )
    )/
    /(
   /  `----/
   \  ~=- /
 ~^~^~^~^~^~^~^

Navigointi
Etusivu
PhpSysInfo
~sami/
Blogi
vnstat
Ladattavaa
Virityksiä
Muuta
Linkkejä
Monsujen tappopeli
Vieraskirja
Chat

"Hello world" ilman kirjastoja

void main()
{
  const char *str = "Hello world";
  char __far *vgatxtbuff = (char __far*)0xB0008000L;
  while(*str&&(*vgatxtbuff++=*str++)&&(*vgatxtbuff++=0x07));
}

Yllä oleva koodi kirjoittaa suoraan VGA:n värillisen tekstitilan näyttöpuskuriin, jossa parittomat tavut merkitsevät näytöllä olevaa merkkiä ja parilliset tavut merkin muotoilua. Pointteri vgatxtbuff alustetaan osoittamaan em. näyttöpuskuriin. Koodi kääntyy ainakin Open Watcomilla ja Borland C:llä DOS-käyttöjärjestelmissä toimivaksi COM-binääriksi.

While-silmukka helppolukuisempana versiona:

while(*str)
{
  *vgatxtbuff++=*str++;
  *vgatxtbuff++=0x07;
}
Ja edelleen helppolukuisempana:
while(*str!=0)
{
  *vgatxtbuff=*str;
  vgatxtbuff++;
  str++;
  *vgatxtbuff=0x07;
  vgatxtbuff++;
}

Jatketaan siis niin pitkään, kunnes pointterin str osoittamassa osoitteessa tulee nollatavu vastaan (nollatavu palauttaa epätoden). Kirjoitetaan pointterin vgatxtbuff osoittamaan osoitteeseen pointterin str osoittaman osoitteen arvo ja samalla laitetaan kumpikin pointteri osoittamaan seuraavaan muistiosoitteeseen. Sen jälkeen vielä kirjoitetaan pointterin vgatxtbuff osoittamaan osoitteeseen tavu 0x07, joka ilmaisee kirjaimen värin, taustavärin ja muotoilun.

 04:45:27 up 38 days,  7:27,  2 users,  load average: 0.18, 0.18, 0.18
               total        used        free      shared  buff/cache   available
Mem:             493         119         126           3         248         357
Swap:            486         126         360

Valid HTML 4.01 Strict Valid CSS!

http://sininenankka.dy.fi
Tietoja ylläpitäjästä

Sivun generointi kesti 0.111 s