Mit welchem Compiler kompilierst du das?
while (error =! 0);
muss while (error != 0);
heissen.
Folgendes geht nicht, weil cf kein Register ist.
ASM mov error,cf; //Fehlerüberprüfung!
ASM lahf; // flags nach ah laden
ASM mov al, ah; // gleich nach al kopieren
ASM and al, 1; // das carry flag isolieren
ASM xor ah, ah; // ah auf 0 setzen
ASM mov error, ax;
Entweder 0x1000 oder 1000h aber nicht beides zusammen. (0x1000h)
Außerdem fehlt das h bei ASM int 13;
Alles mit Vorbehalt, weil ich deinen Compiler wie gesagt nicht kenne.