gpt4 book ai didi

assembly - DosBox 有问题,int 15h ah = 86h

转载 作者:行者123 更新时间:2023-12-03 21:28:07 26 4
gpt4 key购买 nike

我目前正在开发一个汇编程序,但我需要让程序每隔一段时间等待一次。

所以,我一直在使用 int 15h/ah = 86h,但出于某种原因,DosBox 给我带来了困难,程序要么与像素(奇怪的颜色)混淆,要么在更糟的情况下;碰撞。
有人可以帮帮我吗?

最佳答案

这是 0.74.3 版 DOSBox 中的一个错误。缺少一个breakswitch他们的 int 15h处理函数,所以 ah=86h处理程序落入 ah=87h , Copy Extended Memory它从一些随机地址复制内存。见 bios.cpp around line 663-681 . (如果他们打开了 -Wextra 他们就会收到编译器警告!)
这似乎是fixed in trunk back in 2011但不知何故,我想它从未发布过。
我已提交 bug #548报告此事。ah=87h要复制的区域由 cx 中的计数指定以及 es:si 指向的描述符表中的地址.如果这些地址超出范围,您应该只获取 Illegal read/write警告和其他有害行为,但如果它们碰巧指向实际内存,则可能会覆盖一些重要的内容。我怀疑在 OP 的测试中,目的地恰好指向视频内存,解释了“奇怪的颜色”
同理,如果 cx = 0那么什么都不会被复制,错误就不会出现。这证明了 rkhb 已删除答案中的解决方法,即在循环中执行小于 65 毫秒的延迟。

关于assembly - DosBox 有问题,int 15h ah = 86h,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43194265/

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