16.05.2015 Views

Programowanie w C++ Borland Builder - Wyższa Szkoła Informatyki ...

Programowanie w C++ Borland Builder - Wyższa Szkoła Informatyki ...

Programowanie w C++ Borland Builder - Wyższa Szkoła Informatyki ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

licznik++;<br />

licznik %= 10;<br />

ekran[0][79] = licznik + '0' + ATTR;<br />

// wywołaj stara funkcje obslugi - old interrupt handler:<br />

oldhandler();<br />

}<br />

void main()<br />

{<br />

oldhandler = getvect(INTR);<br />

// zainstaluj nowa funkcje interrupt handler<br />

setvect(INTR, handler);<br />

/* _psp - to adres początku programu, SS:SP to adres stosu,<br />

czyli koniec programu. Biorac pod uwage przesuniecie<br />

SEGMENT/OFFSET o jedna tetrade: SS:SP = SS + SP/16; */<br />

keep(0, (_SS + (_SP/16) - _psp));<br />

}<br />

Kilka istotnych drobiazgów technicznych.<br />

W <strong>Borland</strong> <strong>C++</strong> masz do dyspozycji predefiniowane struktury<br />

BYTEREGS (rejestry jednobajtowe - "połówki") i WORDREGS<br />

(rejestry dwubajtowe). Możesz po tych strukturach dziedziczyć i<br />

np. taką metodą wbudować je do swoich własnych klas. Nic nie<br />

stoi na przeszkodzie, by utworzyć np. klasę<br />

class REJESTRY : public WORDREGS<br />

{<br />

...<br />

};<br />

czy też własną strukturę:<br />

struct REJESTRY : WORDREGS { ... };<br />

Definicje tych struktur w <strong>Borland</strong> <strong>C++</strong> wyglądają następująco:<br />

struct BYTEREGS<br />

{<br />

unsigned int al, ah, bl, bh, cl, ch, dl, dh;<br />

};<br />

struct WORDREGS<br />

{<br />

unsigned int ax, bx, cx, dx, si, di, cflag, flags;<br />

};<br />

Rejestry segmentowe mają własną strukturę:<br />

- 211-

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!