Nun, so war es auch...
Ich habe das geändert, allerdings funktioniert es nicht. Auch habe ich noch eine Frage.
Wenn ich "mov eax, [GlobaleVariable]" schreibe, heißt das doch eigentlich hole den Inhalt von "GlobaleVariable" und schiebe ihn nach eax. Oder ist das falsch?
Hier der Code zum ausgeben eines Zeichens:
EDIT:
Noch eine kleine Frage nebenbei: Muss ich für die Shift-Operator wirklich lokale Variablen anlegen, oder kann man das auch anders lösen, da z.B. folgendes Konstrukt nicht funktioniert:
Ich habe das geändert, allerdings funktioniert es nicht. Auch habe ich noch eine Frage.
Wenn ich "mov eax, [GlobaleVariable]" schreibe, heißt das doch eigentlich hole den Inhalt von "GlobaleVariable" und schiebe ihn nach eax. Oder ist das falsch?
Hier der Code zum ausgeben eines Zeichens:
Code: [Auswählen]
video_write_char:
push ebp
mov ebp, esp
; save later used registers
push eax
push edi
; ToDo: Calculate position for edi
mov esi, 0xb8000
mov eax, [video_cursor_y]
mov ebx, 80
mul ebx
add eax, [video_cursor_x]
mul esi
mov eax, esi
; Read parameter and print out character
mov al, FUNCTION_PARAMETER_1 ; <-- Character
mov ah, 0x0F ; <-- black background white fontcolor
stosw
; ToDo: Set new Cursor positions
mov eax, [video_cursor_x]
inc eax
mov [video_cursor_x], eax
; Move Cursor;
call video_move_cursor
; restore register
pop edi
pop eax
mov esp, ebp
pop ebp
ret 4Am Ende der Datei sind folgende Daten reserviert worden:Code: [Auswählen]
[SECTION .data]
video_cursor_x dw 0
video_cursor_y dw 0
video_address dd 0xb8000 EDIT:
Noch eine kleine Frage nebenbei: Muss ich für die Shift-Operator wirklich lokale Variablen anlegen, oder kann man das auch anders lösen, da z.B. folgendes Konstrukt nicht funktioniert:
Code: [Auswählen]
out dx, [ebx >> 8]

Übersicht
Wiki
Hilfe
Suche
Einloggen
Registrieren
Drucken


Gespeichert
