修改C语言程序代码的错误

void printman(int x,int y)
{
gotoxy(y,x);
_AX=02;_CX=01;_AH=0xa;
geninterrupt(0x10);
}
为什么在code blocks 里面是错误的 、
错误提示:'_AX' undeclared (first use in this function)
该怎么修改

_AX , _CX , _AH 是寄存器,geninterrupt(0x10); 是调用中断 0x10 。 估计只能在DOS 或者WINDOWS95 WIN31 等系统下运行,而 CodeBlocks不是一个编译器,只是运行IDE,它依赖于其他的编译器 比如 MinGW VC++ ,而这些编译器中默认没有 _AX , _CX , _AH 这些寄存器变量。所以报错说没有定义这些变量。要使用这些寄存器,有两种方式:
1 嵌入汇编指令
2 使用汇编语言,编译为 obj 然后链接到exe 中。

如果 codeblocks 调用 VS 那么可以 用
__asm {
mov ax,02
mov cx,01
mov ah,0ah
int 10
}
但是vs代码只是32位程序支持,64位不支持。
如果使用 MinGW 它支持嵌入AT&T 汇编,你可以百度一下它的格式。

但是你这段代码估计在win xp win7 win8 win10 上 不允许调用 int 10h 中断,会引发异常(在win10上试了,不行,其他系统没验证)

做一个dos 虚拟机,或者 win95虚拟机实验一下。应该能通过。

但是
__asm {
mov ax,02
mov cx,01
mov ah,0ah
int 10
}
这个代码在code blocks 里面显示的也是有错误的
expected string literal before ')' token

codeblocks 中使用的编译器是 vs 还是 mingW还是 其他的?
使用vc 编译器用下面的写法

 __asm { 
mov ax,02
mov cx,01
mov ah,0ah
int 10
}

使用mingW 编译器要用下面的写法.

     __asm__("movw $2, %ax\n\t"
    "movw $1,%cx\n\t"
    "movb $0x0a, %ah\n\t"
    "int  $0x10"
    );