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.

struct SREGS<br />

{<br />

unsigned int es, cs, ss, ds;<br />

};<br />

Pole WORDREGS::cflag odpowiada stanowi flagi przeniesienia (ang.<br />

Carry Flag) rejestru flags mikroprocesora, a pole<br />

WORDREGS::flags odpowiada stanowi całości rejestru (w wersji 16<br />

- bitowej). Ponieważ rejestry mogą być widziane alternatywnie<br />

jako podzielone na miezależne połówki - lub jako całość, to<br />

właśnie "albo - albo" wyraża w <strong>C++</strong> unia. W <strong>Borland</strong> <strong>C++</strong> taka<br />

predefiniowana unia nazywa się REGS:<br />

union REGS<br />

{<br />

struct WORDREGS x;<br />

struct BYTEREGS h;<br />

};<br />

Z tych predefiniowanych struktur danych korzystają m. in.<br />

funkcje int86() intdosx() i int86x() ("x" pochodzi od eXtended -<br />

rozszerzony). Oto krótkie przykłady zastosowania tych funkcji.<br />

# include <br />

# include <br />

# include <br />

# define INT_NR 0x10 // 10 hex == 16 (Nr przerywania) VIDEO<br />

void UstawKursor(int x, int y)<br />

{<br />

union REGS regs;<br />

regs.h.ah = 2; // ustaw kursor<br />

regs.h.dh = y; // Wspolrzedne kursora na ekranie<br />

regs.h.dl = x;<br />

regs.h.bh = 0; // Aktywna stronica ekranu --> video page 0<br />

int86(INT_NR, &regs, &regs);<br />

}<br />

void main()<br />

{<br />

clrscr();<br />

UstawKursor(30, 12);<br />

printf("Tekst - Test");<br />

while(!kbhit());<br />

}<br />

# include <br />

# include <br />

# include <br />

- 212-

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

Saved successfully!

Ooh no, something went wrong!