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=ContentExpress&func=display&ceid=150
Kod ten jest napisany trochę inaczej dev mi go nie łapał więc go zmieniłem z takiego (oryginalnego)
na taki
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ś
I dalej mi nie działa błąd " Assembler messages: suffix or operands invalid for `out' ".
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.
http://elportal.pl/index.php?module=ContentExpress&func=display&ceid=150
Kod ten jest napisany trochę inaczej dev mi go nie łapał więc go zmieniłem z takiego (oryginalnego)
Kod:
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
}
}
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"
);
}
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.
Ostatnio edytowane przez moderatora: