2012-03-01 141 views
1

我使用内联汇编在Visual C++和一直试图天现在得到INT 21H与我的计划工作。其他中断工作(int 3),这导致我相信我打电话21小时错误或以某种方式被阻止。当我使用int 21h时,我只会遇到运行时错误。如果我注释它可以移动寄存器罚款。用INT 21H与内联汇编

到目前为止,我已经得到了一起:

int _tmain(int argc, _TCHAR* argv[]) 
{ 
    __asm { 
     mov ah, 1h 
     int 21h 

     mov dl, al 
     mov ah, 2h 
     int 21h 
    } 
} 
+0

也许这是一个段错误。你不能在32个应用程序,据我所知使用整数.. – BlackBear 2012-03-01 21:33:51

+0

如前所述,其他中断做的工作。 int 3成功地使断点没有错误。我似乎遇到的唯一问题是int 21h。 – ozdrgnaDiies 2012-03-01 21:37:13

+0

这是一个什么样的程序? Int21h是一个DOS中断。 – 2012-03-01 21:30:22

回答

6

不能使用DOS中断在Windows程序中;它们是不同的平台

可以使用硬件中断,如int 1int 3

+0

自从我问了这个问题以来,我一直在阅读,这似乎就是这样。感谢有关int 3工作原因的解释,现在更有意义。 – ozdrgnaDiies 2012-03-01 22:01:35