assembler / IO ports

Tags:    c++

hej
har to spørgsmål:

1) hvordan skriver og læser man fra IO porten i C++ ? kan det gøres uden inline assembly? da det bare crasher - hvilket leder til spørgsmål 2..

2) har XP problemer/restriktioner på kørsler i dos consollen??
jeg har prøvet at skrive nogen assembler programmer i både TASM5.0, C++ (også i debug:bounce:) alt kompiler og linker fint.. men når jeg køre programmerne i dos console, crasher det hele tiden..



6 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 6 karma
Sorter efter stemmer Sorter efter dato
Nu må du ikke hænge mig op på det, men jeg mener at xp har restiction på dos konsollen, bl.a, med hensyn til adgang til porte, jeg mener også der var en måde hvorpå man kunne få adgang til porten, jeg mener at jeg i vb proejkt downlaod en dll fil, og så fik adgang til porten igennem det, msåek der findes et api indbyggede.



Så vidt jeg ved vil nedenstående fungere med GCC, men du må ikke hænge mig på det. Er ikke alt for hård til GAS
Fold kodeboks ind/udKode 




Du kan ikke gøre det direkte fra programmet, hvis programmet skal køre under Windows, Windows tillader det ikke, derfor crasher programmet.

Det er nogen tid siden jeg har leget med det, men på denne side http://logix4u.net/ kan du downloade inpout32.dll der skulle gøre det muligt.



benji, så vidt jeg ved er det kun drivere der kan få lov til at skrive og læse fra IO porte. Og ja du skal bruge inline assembler for at gøre det.

Hvis du ikke kan fra XP så er det nok fordi at port access er disablet hvilket jo også er logisk nok. Ellers ville det være utrolig nemt at få direkte adgang til stort set alt hardware på computeren for evt. malware :)



benji, så vidt jeg ved er det kun drivere der kan få lov til at skrive og læse fra IO porte. Og ja du skal bruge inline assembler for at gøre det.


Nej, det er ikke nødvendigt at programmere i assembly, men det er korrekt at kun drivere må kommunikere direkte med hardwaren (operativ systemet faktisk, men der ligger driverne også).

Kig evt. her: http://www.codeproject.com/KB/system/serial_com.aspx

Dit program crasher sandsynligvis fordi det udførte en ulovlig instruktion...ulovlig i userspace, men lovlig i kernel space.



Robert, jeg er relativt sikker på at benji snakker om IO porte, ikke seriel eller parallel porte



t