du kannst ASM einfach in C einbauen. Sobald du den ASM-Block aber verlässt und später wieder betrittst, hast du keine Garantie, dass die Register noch die gleichen sind.
Ich benutze Borland Turbo C++ 3.0 zum programmieren von C (nicht C++ xD). mit dem "#pragma inline" und dem TASM geht das super.
Eine beispiel funktion:
Code: Alles auswählen
void setSysCarret(byte x, byte y){
asm{
MOV AH, 02h
MOV BH, 00h
MOV DH, y
MOV DL, x
INT 10h
}
}
Variablen namen bleiben unverändert
C functionen beginnen in Assembler mit einem Unterstrich (C: printf, ASM: _printf)
Alle C variablen können genauso benutzt werden wie ASM variablen
Labels funktionieren meist nur in C (siehe unten)
Geltungsbereich von Variablen beachten!
Ein beispiel zu Sprungmarken. Ein sinn ist nicht enthalten: (zumindest bei mir ist es so)
Code: Alles auswählen
asm{
CMP AX, 0000h
JA SPRUNG_LABEL
MOV AX, 0000h
}
SPRUNG_LABEL:
asm{
MUL BX
}