odczyt danych z portu????

0

witam ,dostałem na przyszły tydzien referat z programowania a jego temat brzmi"odczyt danych z portu",jeśli ktoś mógłby mi pomóc i napisać o czym to ma być ,czy chodzi tu o jakieś komendy,funkce czy co??jestem dopiero na etapie "kalkulatorów,ciągow czy prostych tablic" i nie za bardzo sie orientuje w tej tematyce,byłbym wdzięczny za jakieś przykłady,naprowadzenie albo wskazówki(jeśli można prosiłbym o pisanie wmiarę prostym językiem jak dla początkującego programisty )

0

IN (AL|AX|EAX), (imm8|DX)

Dziwny material na referat :P

0
Wolverine napisał(a)

IN (AL|AX|EAX), (imm8|DX)

Dziwny material na referat :P

mialo byc zrozumiale dla prostego ludzia ;)

To co podal Wolverine to sposob na pobranie wartosci z portu w assemblerze.
Przyklad:
MOV DX, 60h
MOV AL, DX

teraz w al jest wartosc, ktora siedzi na porcie o nr 60h

jednak istnieje duzo innych sposobow odczytywania danych jak chocby pod Pascalem bodajze funkcja in( port ). Dodatkowo dane z niektorych portow mozesz pobierac korzystajac z shella command.com lub cmd.exe ( pod win xp ). Przyklad: type com1
Tak samo piszac programy pod Windows traktujac np. port com jak plik.

0

dzięki za te odpowiedzi ,juz wiem chociaz ze chodzi porty sprzetowe a nie internetowe,ale nadal nie wiem ,gdzie tego szukac ,zapomnialem wspomniec ,że chodzi m tu o język c++,może jakies przyklady w tym jezyku,bo co dotyczy wczytywanie jakis komend typu cmd to jestem zielony w tym temacie .
P.S.moze ze slowem referat przesadzilem,ale moj nauczyciel od programowania rozdawal do przygotowania tematy typu ,typu puts,printf,itp a mi przypadl temat:"odczyt danych z portu"

0

jaki trzeba wpisać plik nagłówkowy,żeby polecenie mov zadziałało??

0

jaki system operacyjny?

0

win xp

0

moze tez byc win98 lub linux:)

0

jaki trzeba wpisać plik nagłówkowy,żeby polecenie mov zadziałało??

mov jest poleceniem asemblera
asemblera możesz używać w c/cpp poprzez wstawki
asm{

mov ax, dx

}

/// nie pamietam czy nawias klamrowy czy okragły sprawdz:)

0

nadal wywala mi jakiś błąd,przy zmianie na klamre jest to samo:

//odczyt z portu
using namespace std;
asm {
mov DX,60h //kopiowanie wartości z 60h bajtu pamięci do rejestru procesora DX
//60h to port kontrolera klawiatury
IN AL,DX //wczytanie danych do rejestru procesora DX(akumulatora)
}
main()
{
}

wiersz 3 syntax error before `{' token
wiersz 8 invalid suffix "h" on integer constant

można podawać w heksydecymalnym czy zmienić na dziesiątkowy??
robiłem to w dev-cpp,pod xp

0

więc w devcpp jest ogólnie prze****** jeśli chodzi o wstawki asma
możesz przerzucić sie na kompilator np. borlanda
albo nauczyć składni AT&T asemblera :D (lepiej zmień kompilator)
http://www.imada.sdu.dk/~kslarsen/dm18/Litteratur/IntelnATT.htm
http://gcc.gnu.org/onlinedocs/gcc-3.2.2/gcc/Extended-Asm.html

może jest jeszcze inne wyjście którego nieznam ??
czytałem coś ze do gcc można dodac polecenie -masm=intel ale u mnie to nie działa :(

0

jeśli dobrze pamiętam w C były do tego dwie funkcje:

#include <dos.h>

outportb(0x3e8, 0x80); /* wpisuje do portu o numerze 0x3e wartość 0x80 /
char w = inportb(0x3e8); /
odczyt z portu o numerze 0x3e8 */

ale to działało tylko pod DOS. W Windows służy do tego funkcja CreateFile

1 użytkowników online, w tym zalogowanych: 0, gości: 1