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.

PROGRAM.CPP --> PROGRAM.OBJ<br />

MODUL.ASM --> MODUL.OBJ<br />

TLINK PROGRAM.OBJ MODUL.OBJ --> PROGRAM.EXE<br />

Lub możemy powierzyć tę pracę kompilatorowi, który sam wywoła<br />

TASM i TLINK:<br />

TCC PROGRAM.CPP MODUL.ASM<br />

W BORLAND <strong>C++</strong> 3.1 mamy do dyspozycji zintegrowany assembler<br />

(ang. in-line) - BASM. Ma on jednak w stosunku do<br />

"wolnostojącego" Turbo Assemblera pewne ograniczenia:<br />

* ma zawężony w stosunku do TASM zestaw dyrektyw (tylko DB, DD,<br />

DW, EXTRN);<br />

* nie pozwala na stosowanie składni typowej dla trybu "Ideal<br />

mode";<br />

* nie pozwala na zastosowanie makra;<br />

* nie pozwala stosować instrukcji charakterystycznych dla 386<br />

ani 486.<br />

Możesz stosować kilka rozkazów assemblera w jednej linii, ale<br />

powinieneś rozdzielać je wewnątrz linii średnikami:<br />

asm {<br />

POP AX; POP DX; POP DS<br />

IRET<br />

}<br />

Komentarz we wstawce assemblerowskiej musi zostać poprzedzony<br />

typowym dla C - /* (sam średnik, jak w TASM jest<br />

niedopuszczalny):<br />

asm {<br />

MOV DX, 1 ;TAK NIE MOŻNA W BASM !<br />

...<br />

asm {<br />

ADD AX, BX; /* Taki komentarz może być */<br />

[???] KŁOPOTY Z REJESTRAMI ?<br />

________________________________________________________________<br />

Jeśli zastosujesz rejestry DI i SI we wstawce assemblerowaj,<br />

kompilator <strong>C++</strong> nie będzie miał gdzie umieścić zmiennych klasy<br />

register z programu głónego. Zastanów się - co się bardziej<br />

opłaca.<br />

________________________________________________________________<br />

O WEKTORACH PRZERYWAŃ DOS<br />

Mikroprocesory Intel 80X86 rezerwują w pamięci naszych PC<br />

początkowe 1024 Bajty (adresy fizyczne 00000...00400 hex) na 256<br />

wektorów przerywań (każdy wektor składa się z dwu słów i może<br />

być traktowany jako DW, bądź far pointer). Następne 256 bajtów<br />

(00400...00500 hex) zajmuje BIOS, a kolejne 256 (00500...00600<br />

- 180-

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

Saved successfully!

Ooh no, something went wrong!