Beiträge anzeigen

Diese Sektion erlaubt es dir alle Beiträge dieses Mitglieds zu sehen. Beachte, dass du nur solche Beiträge sehen kannst, zu denen du auch Zugriffsrechte hast.


Nachrichten - Flexxx

Seiten: [1]
1
Lowlevel-Coding / Zufallszahl generieren
« am: 19. August 2005, 14:51 »
Danke, jetzt funktioniert es.

Zum Abschluss noch der korekte Code:
; Zufallszahl generieren
rand:
xor ebx,ebx ; EBX leeren
mov ax,0x0040
mov es,ax
mov eax,[es:0x006c] ; BIOS Zeitzähler nach EAX auslesen
.rand1:
xor edx,edx ; EDX leeren
mov ecx,0x0a
div ecx ; mit 10(0x0a) dividieren
add ebx,edx ; Quersumme bilden (mehrere durchläufe erforderlich)
cmp eax,0
jne .rand1 ; zahl nicht zu ende? >> nochmal
;Zufallszahl in EBX
retn
2
Lowlevel-Coding / Zufallszahl generieren
« am: 19. August 2005, 14:37 »
Danke, jetzt gibt es nur noch eine Fehlermeldung.

Das Lesen von 4 Byte von 0x0040:0x006c funktioniert immer noch nicht, obwohl ich jetzt ein Segmentregister verwende (mov eax,es:[0x006c])
Mein aktueller Code:
; Zufallszahl generieren
rand:
xor ebx,ebx ; EBX leeren
mov ax,0x0040
mov es,ax
mov eax,es:[0x006c] ; BIOS Zeitzähler nach EAX auslesen
.rand1:
xor edx,edx ; EDX leeren
mov ecx,0x0a
div ecx ; mit 10(0x0a) dividieren
add ebx,edx ; Quersumme bilden (mehrere durchläufe erforderlich)
cmp eax,0
jne .rand1 ; zahl nicht zu ende? >> nochmal
retn
3
Lowlevel-Coding / Zufallszahl generieren
« am: 19. August 2005, 13:20 »
Hallo erstmal.

Also ich habe bereits ein paar Ausgaben vom LowlevelMagazin gelesen und mich auch sonst shcon etwas mit OS Dev auseinandergesetzt.
Als erstes wollte ich mal etwas üben...

Also wollte ich den Kernel aus Ausgabe 1 so erweitern, dass er eine Zufallszahl generieren soll, die man dann später raten kann. (auch bekannt als Zahlenraten)

Jedoch gibt NASM 2 Fehlermeldungen aus, beim kompilieren. Jedoch weiß ich nicht was ich falsch gemacht habe.

; Zufallszahl generieren
rand:
xor ebx,ebx ; EBX leeren
mov eax,0x0040
mov edx,eax
mov eax,edx:[0x6c] ; BIOS Zeitzähler nach EAX auslesen
.rand1:
xor edx,edx ; EDX leeren
div 0xa
add ebx,edx ; Quersumme bilden (mehrere durchläufe erforderlich)
cmp eax,0
jne .rand1 ; zahl nicht zu ende? >> nochmal
retn


In dem Code soll die Quersumme von der Zeit gebildet werden, die dann die Pseudozufallszahl ist.

Es gibt Probleme mit Zeile 6 (mov eax, edx:[0x6c]) und Zeile 9 (div 0xa)
Fehlermeldung zu den bieden Zeilen ist jeweils:
error: invalid combination of opcode and operands

Kann mir da jemadnd weiterhelfen?

EDIT: Der Prozessor befindet sich noch im Real Mode.
Seiten: [1]

Einloggen