【发布时间】:2012-03-20 10:19:47
【问题描述】:
我在 Visual C++ 中使用内联汇编,并且几天来一直在尝试让 int 21h 与我的程序一起工作。其他中断起作用(int 3),这让我相信要么我打错了 21 小时,要么它以某种方式被阻止。我只在使用 int 21h 时出现运行时错误。如果我将其注释掉,它可以很好地移动寄存器。
到目前为止,我已经完成了这个:
int _tmain(int argc, _TCHAR* argv[])
{
__asm {
mov ah, 1h
int 21h
mov dl, al
mov ah, 2h
int 21h
}
}
【问题讨论】:
-
这是什么程序? Int21h 是一个 DOS 中断。
-
可能是段错误。据我所知,您不能在 32 位应用程序中使用整数..
-
如前所述,其他中断确实有效。 int 3 成功地使断点没有错误。我似乎唯一遇到问题的是 int 21h。
-
如果你想要一个 DOS 程序,请使用 Turbo C++ 或 Open Watcom C/C++ 或 DJGPP。
标签: c++ winapi visual-c++ assembly inline-assembly