首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MS-DOS上调用5接口

在MS-DOS上调用5接口
EN

Stack Overflow用户
提问于 2013-05-21 11:52:03
回答 3查看 764关注 0票数 0

我有一个Hello程序,用于MS,它使用int 21h进行系统调用。

代码语言:javascript
复制
mov dx,hello
mov ah,9
int 0x21
mov ah,0
int 0x21

"hello“是字符串'hello,world',13,10,'$‘的地址。

这个程序很管用。

但是,当我将(第一个)“int0x21”替换为“调用5”时,程序会使计算机崩溃(即运行PTS的VirtualBox虚拟机)。在DOSbox上,它只是终止并返回到命令提示符。

我试着用不同的寄存器来记录地址和电话号码,但结果总是一样。

现在我在想..。

  1. 以后的DOS版本是否不再支持CP/M兼容性调用5接口?
  2. DOSbox中的PTS和DOS不支持呼叫5吗?
  3. 我是不是用错了接口?
  4. 我必须先配置段寄存器吗?(我尝试将所有段寄存器设置为零。)

有什么想法吗?

更新:我接受了答案,因为根据文档,答案是正确的。它仍然不工作,但这可能是由于我的DOS版本或其他一些问题。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-05-21 12:03:30

有没有DOS的版本,你真的看到了CP/M“呼叫5”的工作?我从DOS 2.1开始,但确实为1.1编写了一些代码,我看到的唯一的CP/M兼容性是在FCB中。当然,我并没有明确的寻找它,但我不记得“呼叫5”报告说有人支持.

后续行动:

最新的PSP定义(在web上列出,所以YMMV)确实有支持的“调用5”接口。任何真正的DOS兼容环境都应该支持它。

票数 0
EN

Stack Overflow用户

发布于 2016-10-08 22:09:35

DOSBox不支持调用5。从它的源代码

代码语言:javascript
复制
// lets hope nobody really uses this address
sSave(sPSP,cpm_entry,RealMake(0xDEAD,0xFFFF));
票数 4
EN

Stack Overflow用户

发布于 2016-10-09 22:52:08

我不希望旧的“调用5”界面能与DOSBox一起工作,因为它只是试图模仿游戏中使用的东西,而且很可能没有MS游戏使用它。这种模糊界面的存在仅仅是为了使CP/M程序更容易移植到MS,而MS在最初的版本中基本上只是CP/M的克隆。同样,如果在其他模拟环境或MS克隆中不工作,我也不会感到惊讶,因为它们并不真正需要它。

如果你试图使用这种深奥的东西,你应该使用一个真正的MS版本。您还可能需要使用真正的PC,因为即使像VirtualBox这样的VM也忽略了人们实际使用它的程序所不需要的东西。

然而,即使在真实的MS上,在使用CALL 5兼容接口时也有一些限制:

  • 正如迈克尔在注释中所指出的,函数号需要加载在CL中而不是AH中。
  • 政务司司长必须指出PSP。换句话说,它只在.COM程序中工作。需要设置.EXE格式的可执行文件才能像.COM文件那样运行。
  • 您不能加载HIMEM.SYS或任何将启用A20行的内容。PSP:0005的跳远指令依赖于实际8086 CPU的1MB地址包装。PSP:0006的远地址的低字是为CP/M兼容性而在PSP段中设置分配空间的数量。这意味着远地址通常类似于F01D:FEF0 0,因此它跳转到0000:00C0 ( INT 30向量),然后跳转到实际的MS入口点。
  • 不能使用调试来运行程序。所有版本的调试包括在MS,因为2有一个错误,他们把错误的地址在PSP。
  • 您只能使用函数数小于或等于24小时的旧MS 1.x函数。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16669352

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档