Ich versuche es mal einfacher zu formulieren.
Das BIOS wird mit der Assembler Programmier Sprache geschrieben. Das sieht in etwa so aus. Alles was nach dem Semikolon steht, ist nur eine Zusatzinfo an den User. Wird beim Codeschreiben ignoriert.
Code:
readCmosReg 0x75, 0xF0 ; read drive strength from CMOS
cmp al, 0
je drivestrength_end ; jump to next setting if auto selected (equal 0000.0000)
xor ebx, ebx
mov bl, al
shr bl, 4
or bl, al
mov al, bl ; save bl
shl ebx, 24 ; shift bl to highest 8bit segment
mov bh, al
writePciReg 0x80000464, ebx, 0x00FF00FF ; offset 65 and 67
writePciReg 0x80000470, ebx, 0x00FF00FF ; offset 71 and 73
and ebx, 0x00FFFFFF
writePciReg 0x8000047C, ebx, 0xFFFF00FF ; offset 7D
writePciReg 0x80000480, ebx, 0xFFFF00FF ; offset 81
drivestrength_end: ; jump target
Das sind die Instruktionen an das System. Der obere Code ist ein Teil aus dem Zusatz (orom), den wir für die "neuen" NF2 BIOSe schreiben. Wie man an dem Text sieht, ist das der Teil, der die drive strength in die PCI register schreibt. Den kompletten Assebler Code zu unserem Zusatz kann man bei den BIOSen, die ich gemoddet habe, selber ansehen. Einfach in den bin Unterordner nach einer .ASM Datei suchen und mit Notepad öffnen. Da stehen auch andere Infos wie die PCI register drin.
Wenn der Assembler Code fertig ist, muss das BIOS kompiliert und in die Maschinensprache umgeschrieben werden. Der Code sieht dann in etwa so aus:
Ja genau, man erkennt nichts. So sieht ein BIOS aus, wenn man das mit einem HEX-Tool öffnet. Anhand dieses Codes kann man den Assembler Code nicht mehr erkennen. Man kann auch nicht erraten, was der Code macht. Um das heraus zu finden, brauchen wir ein Programm, dass aus dem fertigen Maschinencode zurück den Assembler Code generiert. Das ist nicht immer so einfach, da das Programm an manchen Stellen zwischen dem Datencode (fertige Buchstaben, Sätze oder Zahlen) und den Befehlen nicht unterscheiden kann. Da muss man von Hand mithelfen. Dementsprechend, erfordert das Übung. Tzk ist da etwas geübter als ich.
Der Anfang der BPL sieht im Assembler Code dann so aus. Das ist nur ein kleiner Teil.
Diesen Asseblercode zu lesen erfordert Übung. Die einzelnen Befehle zu lernen ist nicht schwer, aber die ganzen Zusammenhänge und Codesprünge (siehe Pfeile auf der linken Seite) ist nicht einfach.
Ich hoffe, das gibt eine kleine Übersicht zu der Sache mit dem BIOS code.
Tausend Dank für deine Arbeit daran. Ich hatte bereits auch solche Probleme, habe es aber darauf geschoben, dass ich vielleicht irgendwas vermurkst hatte im BIOS und daher dem Problem keine weitere Beachtung geschenkt. Wenn ich das so lese, muss ich vllt. ein paar der Bretter irgendwann nochmal neu durchtesten, die sich zickig gezeigt haben.
Gerne. Ich teste derzeit mein zweites Abit AN7. Ich werde in dem Zuge die AN7 BIOSe ändern und testen. Danach nehme ich mir die NF7 BIOSe vor. Mal sehen. Bisher ist das zweite AN7 eher krückig denn eine OC Rakete (~240MHz FSB).
Wo wir beim AN7 sind, weiß Jemand, ob die Abit Guru Clock auch auf dem AN7 geht? Ich habe bisher immer gedacht, dass das AN7 auch kann. Der Anschluss dafür ist ja vorhanden. Laut Abit ist das board nicht auf der Support Liste.