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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

void drukuj(void) //Definicja funkcji<br />

{<br />

asm MOV DX, TEKST<br />

asm MOV AH, 9<br />

asm INT 33<br />

}<br />

Funkcja może oczywiście nie tylko zgłosić się napisem, ale także<br />

zrobić dla nas coś pożytecznego. W kolejnym programie<br />

przykładowym czyścimy bufor klawiatury (flush), co czasami się<br />

przydaje, szczególnie na starcie programów.<br />

[P062.CPP]<br />

# pragma inline<br />

char *TEKST = "\nBufor klawiatury PUSTY. $";<br />

void czysc_bufor();<br />

void main()<br />

{<br />

czysc_bufor();<br />

}<br />

//Też prototyp funkcji<br />

//Czyszczenie bufora klawiatury<br />

void czysc_bufor(void)<br />

{<br />

START:<br />

asm MOV AH, 11<br />

asm INT 33<br />

asm OR AL, AL<br />

asm JZ KOMUNIKAT<br />

asm MOV AH, 7<br />

asm INT 33<br />

asm JMP START<br />

KOMUNIKAT:<br />

asm MOV DX, TEKST<br />

asm MOV AH, 9<br />

asm INT 33<br />

}<br />

//Definicja funkcji<br />

Póki nie wystąpi problem przekazania parametrów, napisanie dla<br />

<strong>C++</strong> funkcji w asemblerze jest banalnie proste. Zwróć uwagę, że<br />

zmienne wskazywane w programach przez pointer *TEKST zostały<br />

zadeklarowane poza funkcją main() - jako zmienne globalne.<br />

Dzięki temu nasze funkcje drukuj() i czysc_bufor() mają dostęp<br />

do tych zmiennych.<br />

Spróbujemy przekazać funkcji parametr. Nazwiemy naszą funkcję<br />

wyswietl() i będziemy ją wywoływać przekazując jej jako argument<br />

znak ASCII przeznaczony do wydrukowania na ekranie:<br />

wyswietl('A'); . Pojawia się zatem problem - gdzie program<br />

- 172-

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

Saved successfully!

Ooh no, something went wrong!