gpt4 book ai didi

assembly - 为什么每当我尝试使用中断时,我的 masm32 程序就会崩溃?

转载 作者:行者123 更新时间:2023-12-02 14:02:40 25 4
gpt4 key购买 nike

代码如下:

.386 ;target for maximum compatibility
.model small,stdcall ;model
.code
main:
int 20h
END main

结果:http://img705.imageshack.us/img705/3738/resultom.png

“test.exe 已停止工作” - 当到达中断时始终正确。

This is the interrupt I'm trying to use.它应该简单地退出程序。我尝试过的其他方法包括字符输入/输出等。没有任何效果。

我使用的是 Windows 7,使用 masm32 和 WinAsm IDE。

似乎我应该能够用中断来做很多很酷的事情...但是,每当我尝试使用中断时它就会崩溃 - 总是以同样的方式。

这似乎相关并且可能有用:DOS Interrupt in masm x86 assembly crashing

...但我还没有真正从中弄清楚任何事情。

有什么建议吗?

最佳答案

是的。这种性质的中断是专门针对 MS-DOS 的,因此在 Windows ME 和以前的版本中可以工作,但不能在 NT 体系结构上工作,除非在 DOS 模拟器 (command.com) 下。我不知道 Windows 7 是否仍然附带此功能 - 我知道 x64 版本的 Windows 默认情况下没有它。

如果您正在编写 Native NT 应用程序(如果您不知道它是什么,那么您不太可能这样做,但如果您想了解详情,请查看 MSDN 上 Mark Russinovich 的博客),这里有一个列表NT中断及其对应函数:http://www.ctyme.com/intr/rb-4249.htm

除此之外,您想要调用 Win32 API 中的函数:http://msdn.microsoft.com/en-us/library/aa383749%28VS.85%29.aspx

编辑:在该代码示例中,您没有为通过寄存器完成的中断指定任何选项。哦,只要你为 DOS 而不是 Windows 进行编译,你就可以让它工作。如果您使用链接器,您可能会创建一个 Windows PE 可执行文件。但是,如果您使用的是 64 位 Windows,正如我所说,请不要尝试。

您可以做的一件事是安装虚拟机系统,例如 VirtualBox 或 VMware,然后安装 FreeDOS。它根本不会占用太多 RAM,并且可以让您自由地尝试汇编/dos。

关于assembly - 为什么每当我尝试使用中断时,我的 masm32 程序就会崩溃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2354167/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com