Piszę program w c++ (deva używam) do obsługi portu lpt 1 aby po podłączeniu układu elektronicznego zaświeciły się diody led - w googlach dużo jest różnych sposobów żeby to napisać, ja wybrałem sposób poprzez asemblera - wstawke do c++. I tu zaczynają się dla mnie schody bo z asemblerem nie miałem nigdy do czynienia. Opis kodu wziąłem z tąd
http://elportal.pl/index.php?module=...splay&ceid=150
Kod ten jest napisany trochę inaczej dev mi go nie łapał więc go zmieniłem z takiego (oryginalnego)
na takiKod:void WriteDataToPort ( unsigned short port_address, unsigned char port_data ) { __asm { ; do rejestru DX podajemy adres portu I/O mov dx, port_address ; do rejestru AL podajemy bajt do wysłania na port mov al, port_data ; i wysyłamy... out dx, al } }
Tylko, że to też nie działa wyskakiwał mi błąd, że " Assembler messages: too many memory references for `mov' i tak samo dla drugiego mova i too many memory references for `out'" . Później trochę poczytałem w necie i zmieniłem na takie cośKod:void WriteDataToPort(unsigned short port_address, unsigned char port_data) { asm ( //; do rejestru DX podajemy adres portu I/O "mov dx, port_address \n" //; do rejestru AL podajemy bajt do wysłania na port "mov al, port_data \n" //; i wysyłamy... "out dx, al \n" ); }
I dalej mi nie działa błąd " Assembler messages: suffix or operands invalid for `out' ".Kod:void WriteDataToPort(unsigned short port_address, unsigned char port_data) { asm ( //; do rejestru DX podajemy adres portu I/O "mov port_address, %dx \n" //; do rejestru AL podajemy bajt do wysłania na port "mov port_data, %al \n" //; i wysyłamy... //"out dx, %al \n" ); }
W sumie nie wiem nic o co chodzi. Może mi ktoś powiedzieć co źle zrobiłęm i najlepiej zmienić ten oryginalny kod na poprawny, który będzie chodził pod xp i viste i 7. Jak już mówiłem używam dev c++ i jeszcze includem władowałem iostreama i windows.h.


Odpowiedź z Cytatem
