Was bedeutet diese codezeile?

10/11/2013 18:18 lolxdflyx3#1
Hi,
was bedeutet oder bring die letzte Codezeile?
Code:
        uint16_t scancode; //variable scancode wird erstellt
        scancode = inb(0x60); //Scancode wird ausgelesen
        scancode &= ~0x80; //???
10/11/2013 19:02 MrSm!th#2
0x80 wird binär negiert und dann binär mit scancode UND-verknüpft.
Das Ergebnis landet wieder in scancode.

Beispiel:
Code:
 
unsigned short scancode = 1;
unsigned short tmp = ~0x80; // 00000000 10000000 - > 11111111 01111111
scancode &= tmp;
//scancode == 00000000 00000001
10/11/2013 19:03 Logtetsch#3
Quote:
Originally Posted by lolxdflyx3 View Post
Hi,
was bedeutet oder bring die letzte Codezeile?
Code:
        uint16_t scancode; //variable scancode wird erstellt
        scancode = inb(0x60); //Scancode wird ausgelesen
        scancode &= ~0x80; //???
Scancode wird ausgelesen? Schau nochmal richtig hin. Wofür soll "inb" sein?
10/11/2013 19:33 lolxdflyx3#4
Quote:
Originally Posted by Logtetsch View Post
Scancode wird ausgelesen? Schau nochmal richtig hin. Wofür soll "inb" sein?
ähm... so wie ich das verstanden habe wird der port 0x60 ausgelesen und in die Variable scancode geschrieben:D
Wobei jetzt wo du es sagst bin ich mir nicht mehr sicher.

EDIT: Es ließt den Iput von dem Port 0x60 (Quelle: [Only registered and activated users can see links. Click Here To Register...])
10/11/2013 19:46 Logtetsch#5
Code:
scancode = inb(0x60); //Scancode wird ausgelesen
Der Variable 'scancode' wird etwas zugewiesen, aber es wird nichts aus 'scancode' gelesen. Würde auch keinen Sinn machen. Google mal nach 'L-Value' und schau dir nochmal an, was genau Operatoren/ Operanden sind → [Only registered and activated users can see links. Click Here To Register...]
10/11/2013 20:03 Dr. Coxxy#6
um es mal etwas verständlicher zu formulieren:
das 8. bit von rechts wird aus "scancode" gelöscht (ist also danach 0) - der rest von scancode wird belassen wie er ist.#

EDIT:
Logtetsch das ist schwachsinn, die formulierung ist vollkommen in ordnung, ein scancode wird ausgelesen und der gleichnamigen variable zugewiesen.

EDIT2:
das ist übrigens normal so bits zu setzen und zu clearen, meistens aber mit #define konstanten anstatt einfach direkt 0x80.

bit setzen:
Code:
#define SOME_BIT 0x80
value |= SOME_BIT; // das 8. bit auf 1 setzen - den rest unangetastet lassen
value &= ~SOME_BIT; // das 8. bit auf 0 setzen - den rest unangetastet lassen
if (value & SOME_BIT) // testen ob das 8. bit auf 1 gesetzt ist.
10/11/2013 20:03 lolxdflyx3#7
Quote:
Originally Posted by Logtetsch View Post
Code:
scancode = inb(0x60); //Scancode wird ausgelesen
Der Variable 'scancode' wird etwas zugewiesen, aber es wird nichts aus 'scancode' gelesen. Würde auch keinen Sinn machen. Google mal nach 'L-Value' und schau dir nochmal an, was genau Operatoren/ Operanden sind → [Only registered and activated users can see links. Click Here To Register...]
Ich meint auch dass der ioPort der Tastatur ausgelesen wird und in Form von Scancode in die Variable scancode geschrieben wird
10/11/2013 20:05 Schlüsselbein#8
Er liest den Wert an der Stelle 0x60 so wies aussieht. Bei mC Programmierung ist es durchaus gängige Praxis, so direkt von einem I/O-Port zu lesen.

Für mich liest sich der Code so: Er liest ein Word an Port 0x60 ein und löscht anschließend das 8. Bit.

Edit: bin nur mobil online und so ist es wirklich unübersichtlich - kann also gut sein dass ich was übersehe. Steinigt mich, falls es so sein sollte.
10/11/2013 20:31 Logtetsch#9
Quote:
Originally Posted by Dr. Coxxy View Post
ein scancode wird ausgelesen und der gleichnamigen variable zugewiesen.
Hmm, dass ich das nicht berücksichtigt habe :confused:
10/12/2013 18:53 lolxdflyx3#10
Hi,
ich hab noch ne Frage dazu:
Was genau ist für das binär zuständig?
Also wenn ich jetzt zum Beispiel mit einer if-Schleife abfragen will ob eine Variable einem gewissen binärcode entspricht. Wie sage ich das die Zahl binär interpretiert werden soll?
10/12/2013 22:37 MrSm!th#11
Auf dem PC ist alles binär.

[Only registered and activated users can see links. Click Here To Register...]
10/13/2013 00:59 Tyrar#12
Quote:
Originally Posted by lolxdflyx3 View Post
Hi,
ich hab noch ne Frage dazu:
Was genau ist für das binär zuständig?
Also wenn ich jetzt zum Beispiel mit einer if-Schleife abfragen will ob eine Variable einem gewissen binärcode entspricht. Wie sage ich das die Zahl binär interpretiert werden soll?
Du meinst vermutlich, wie die Zahlen dargestellt werden. Da alles binär interpretiert wird brauchst du dir darum keine Gedanken machen.
(1 << 7) ist das gleiche wie 0x80, ist im Prinzip nur eine Sache der Übersicht.

[Only registered and activated users can see links. Click Here To Register...] :P