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.

LEKCJA 16. ASEMBLER TASM i BASM.<br />

________________________________________________________________<br />

W trakcie tej lekcji:<br />

* dowiesz się , jak łączyć <strong>C++</strong> z assemblerem<br />

* poznasz wewnętrzne formaty danych<br />

________________________________________________________________<br />

WEWNĘTRZNY FORMAT DANYCH I WSPÓŁPRACA Z ASSEMBLEREM.<br />

W zależności od wybranej wersji kompilatora <strong>C++</strong> zasady<br />

współpracy z asemblerem mogą się trochę różnić. Generalnie,<br />

kompilatory współpracują z tzw. asemblerami in-line (np. BASM),<br />

lub asemblerami zewnętrznymi (stand alone assembler np. MASM,<br />

TASM). Wstawki w programie napisane w assemblerze powinny zostać<br />

poprzedzone słowem asm (BORLAND/Turbo <strong>C++</strong>), bądź _asm (Microsoft<br />

<strong>C++</strong>). Przy kompilacji należy zatem stosownie do wybranego<br />

kompilatora przestrzegać specyficznych zasad współpracy. Np. dla<br />

BORLAND/Turbo <strong>C++</strong> można stosować do kompilacji BCC.EXE/TCC.EXE<br />

przy zachowaniu warunku, że TASM.EXE jest dostępny na dysku w<br />

bieżącym katalogu.<br />

Typowymi sposobami wykorzystania assemblera z poziomu <strong>C++</strong> są:<br />

* umieszczenie ciągu instrukcji assemblera bezpośrednio w<br />

źródłowym tekście programu napisanym w języku C/<strong>C++</strong>,<br />

* dołączeniu do programu zewnętrznych modułów (np. funkcji)<br />

napisanych w assemblerze.<br />

W <strong>C++</strong> w tekście źródłowym programu blok napisany w asemblerze<br />

powinien zostać poprzedzony słowem kluczowym asm (lub _asm):<br />

# pragma inline<br />

void main()<br />

{<br />

asm mov dl, 81<br />

asm mov ah, 2<br />

asm int 33<br />

}<br />

Program będzie drukował na ekranie literę "Q" (ASCII 81).<br />

JAK POSŁUGIWAĆ SIĘ DANYMI W ASEMBLERZE.<br />

Napiszemy w asemblerze program drukujący na ekranie napis "tekst<br />

- test". Rozpczynamy od zadeklarowania łańcucha znaków:<br />

void main()<br />

{<br />

char *NAPIS = "tekst - test$"; /* $ - ozn. koniec */<br />

- 164-

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

Saved successfully!

Ooh no, something went wrong!