Pat
Commander
- Registriert
- Jan. 2003
- Beiträge
- 2.255
Hi 
Ich habe folgenden Assembler-Code, um etwas auf den Bildschirm zu schreiben (im Realmode):
Dies gibt logischerweise "12" auf dem Bildschirm aus.
Nun möchte ich das ganze gerne mit GCC in C umsetzen!
Es gibt ja den Befehl z.B. asm("mov %ax, 0xB800");
Aber leider funktioniert das ganze nicht mehr mit
asm("mov [%es:0], '1'"); - er motzt da "Error: invalid char '[' beginning operand 1 [%es:0]'
Hat irgendjemand eine Idee wie man in GCC mit asm() auf die Speicherinhalte des Registers zugreift?
Und wie kann man das direkt in C mit Pointers lösen? Das wäre wohl die schönste Methode... nur leider hab ich's net geschafft
Ich habe folgenden Assembler-Code, um etwas auf den Bildschirm zu schreiben (im Realmode):
Code:
mov ax, 0xB800 ; Text-Videospeicher
mov es, ax
mov [es:0], '1'
mov [es:2], '2'
Dies gibt logischerweise "12" auf dem Bildschirm aus.
Nun möchte ich das ganze gerne mit GCC in C umsetzen!
Es gibt ja den Befehl z.B. asm("mov %ax, 0xB800");
Aber leider funktioniert das ganze nicht mehr mit
asm("mov [%es:0], '1'"); - er motzt da "Error: invalid char '[' beginning operand 1 [%es:0]'
Hat irgendjemand eine Idee wie man in GCC mit asm() auf die Speicherinhalte des Registers zugreift?
Und wie kann man das direkt in C mit Pointers lösen? Das wäre wohl die schönste Methode... nur leider hab ich's net geschafft