Autor Thema: EAX in C lesen  (Gelesen 17309 mal)

JG

  • Beiträge: 189
    • Profil anzeigen
Gespeichert
« Antwort #20 am: 07. March 2005, 14:46 »
Hallo,
1.   asm volatile ("outb %%al, %%dx" : : "d" (_port), "a" (_value)) ich dachte man macht inline ASM so: _asm{...}
2. Warum "outb", heißt das nicht nur "out"?
3. Heißt das ganze nicht "out port, value"
4. Warum char?

Irgendwie versteh ich des net....

zacK

  • Beiträge: 216
    • Profil anzeigen
    • http://www.domae.ch
Gespeichert
« Antwort #21 am: 07. March 2005, 15:05 »
1. es giebt verschiedene wege asm einzubinden
2. out für den out befehl und "b" damit mit einem byte gearbeitet wird
3. im AT&T syntax (den ich verwende) muss man dass drehen
4. char ist ein zeichen sprich ein byte....

variablen typen

char  =   8 bit = 1 byte
short = 16 bit = 2 byte
long  = 32 bit = 4 byte
 
unsigned heist das das most sinified byte (keine ahnung wie man das schreibt) nicht gesetzt werden kann... das benutzt man um minus zahlen zu schreiben. wenn man unsigned variablen macht kann man höhere zahlen speichern, dafür nicht ins minus gehen...
;)

JG

  • Beiträge: 189
    • Profil anzeigen
Gespeichert
« Antwort #22 am: 07. March 2005, 15:23 »
Wenn ich z.b. 0x00 senden will, dann ist das doch ein byte, oder?

Geht das?:

unsigned char inb(unsigned int);
void outb(unsigned int, unsigned char);

unsigned char secound;

void main(void)
{
   outp(0x70, 0x00);
   secound = inp(0x71);
}




unsigned char inb(unsigned int _port)
{
   unsigned char result;
   asm volatile ("inb  %%dx, %%al" : "=a" (result) : "d" (_port) );
   return result;
};



void outb(unsigned int _port, unsigned char _value)
{
   asm volatile ("outb %%al, %%dx" : : "d" (_port), "a" (_value));
};

? Oder hab ich was falsch verstanden?

Edit: Warum nehm ich net gleich long, dann brauch ich keine 3 funktioonen?

zacK

  • Beiträge: 216
    • Profil anzeigen
    • http://www.domae.ch
Gespeichert
« Antwort #23 am: 07. March 2005, 15:30 »
jep sollte gehen!

JG

  • Beiträge: 189
    • Profil anzeigen
Gespeichert
« Antwort #24 am: 07. March 2005, 15:32 »
Und siehe mal wegen meinem edit da oben ^^

Jidder

  • Administrator
  • Beiträge: 1 625
    • Profil anzeigen
Gespeichert
« Antwort #25 am: 07. March 2005, 15:45 »
Zitat von: JG
Edit: Warum nehm ich net gleich long, dann brauch ich keine 3 funktioonen?


warum 3 funktionen für char, short und long? weil manche ports nur char, short oder long lesen und bei anderen datenbreiten fehler verursachen ...
Dieser Text wird unter jedem Beitrag angezeigt.

 

Einloggen