[GCC] GCC und asm()

Pat

Commander
Registriert
Jan. 2003
Beiträge
2.255
Hi :)

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 :o
 
Ich habe ein paar mal das Schlüsselwort __asm und asm gesehen. Das wird allerdings mit sehr hoher Wahrscheinlichkeit kein Standard sein. Musst mal versuchen, ob der GCC das unterstützt. Ansonsten mit nem Assembler ein Object-File erzeugen und das im Code verwenden.
 
Zurück
Oben