Warte warte !!!!
in : lädt was wohin, 1. parameter ist das register in dem fall die niedriger (L) wertigen 8 bit vom A register (erstes) wohin etwas geladen wird
61h also der 2. parameter ist die addresse in h = HEXADEZIMAL... in dem fall ist das die von warte mal.... IBM festgelegte adresse wo ein PC die equipment flags zurückhält
Flags sind meistens Binary ... d.h. man zerlegt ein byte (8bit) in seine einzelteile und jede 0 bzw 1 schaltet funktionen ein oder aus.. 8 lichtschalter wenn du so willst.
d.h. nach
IN AL, 61h
haben wir im register AL die aktuellen equipment flags "eingelesen" und können mit arbeiten
XOR ist exclusive OR also ... 1 xor 1 = 0, 1 xor 0 = 1
der erste parameter ist das erste byte bzw register in dem gearbeitet wird und der zweite ist das byte welches exclusive oder mit dem ersten genommen wird.
d.h. wenn dort 00001100b steht (b steht für binary schreibweise) dann schaltet XOR an der 5. und 6. stelle von links im register AL die bits "um" also aus 1 wird 0 und aus 0 wird 1.
nach
XOR AL, 00001100b
wurden also die bits in AL an 5. und 6. stelle von links "gedreht"
so damit jetzt wieder was passiert muss dieses "byte" nur noch wieder an seine alte stelle geschrieben werden, wo sich ibm damals dachte .... usw etc.. pp...
deshalb nutzen wir OUT, welches den 2. parameter ( sei es ein register oder ein fixer wert ) an die adresse des ersten parameter ( hier die zahl 61h also eine adresse ) schreibt.
nach
OUT 61h, AL
wurde also unser geändertes equipment flag wieder zurück an die adressse 61h geschrieben.
Dort wird dann vermutlich das BIOS im nächsten Zyklus sehen, dass die Register Flags für das System geändert wurden und seine weitere schwarte Magie anwenden
um den Rechner schneller oder langsamer machen.
Eigentlich ganz simpel...
Man muss halt wissen wo was steht im System und dann heisst es eigentlich nur noch schritt für schritt ans ziel..
Ich weiss schon die Jugend von heute programmiert eher wie folgt :
System.GeileGeschäftsIdee.Ferrari.Weiber.AllesMeins.Drogen.Insolvenz.Suizid(Ich);
- frei nach java&co -
aber früher waren die Dinge noch etwas entspannter und da wusste man dann noch wie sowas unter der haube funktioniert...
immer wenn ich was mit assembler mache, habe ich das gefühl ne alte vespa zu zerlegen... und man wusste noch wie jedes teil läuft und funktioniert,
anstelle sich zu wundern warum einem nach dem chiptuning die zylinder um die ohren fliegen...
Da gabs mal sone Werbung, die ich gerne für heutige Informatiker adaptiere :
Schreib dich nicht ab.... lern (x86) Assembler !
VG, Chris