- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在开发一个汇编程序,但我需要让程序每隔一段时间等待一次。
所以,我一直在使用 int 15h/ah = 86h,但出于某种原因,DosBox 给我带来了困难,程序要么与像素(奇怪的颜色)混淆,要么在更糟的情况下;碰撞。
有人可以帮帮我吗?
最佳答案
这是 0.74.3 版 DOSBox 中的一个错误。缺少一个break
在 switch
他们的 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/
我正在慢慢尝试进入 osdev 只是为了玩。 This tutorial有一个等待驱动器准备就绪的组件: reset_drive: mov ah, 0 int 13h or ah,
我试图理解一个程序来获取箭头键。 这是代码: int getkeys( ) { union REGS i,o; while(!kbhit( ));
我不小心删除了我的一个 GAE 项目(用 Go 编写)中的 ah-builtin-datastoreservice 和 ah-builtin-python-bundle 这两个版本。这意味着我的自动备
我对x86寄存器的理解是,每个寄存器都可以被整个32位代码访问,并且它被分成多个可访问的寄存器。 在此示例中,EAX 是一个 32 位寄存器,如果我们调用 AX 它应该返回前 16 位,如果我们调用
我正在尝试学习汇编并编写引导程序。以下代码将软盘驱动器的内容加载到内存中并跳转到它(从地址0x1000开始加载)。该代码应该在屏幕上打印“ X”,但是由于某种原因它会打印一个空格。有人可以告诉我怎么了
我的信息来自here。作业要求读取一个不超过20个字符的程序,然后将这些字符转换为大写字母,然后将输入内容打印为大写字母。 我不知道如何从int21/AH = 0ah访问输入。除非我了解上面的链接,否
大部分汇编代码由以下指令终止 MOV AH, 4CH INT 21H “MOV AH,4CH”是什么意思? 最佳答案 DOS中断int 21/4Ch为EXIT-TERMINATE WITH RETUR
我的 Java 应用程序引擎已经运行良好几个月了。但最近两天,在执行/_ah/warmup 时,我看到了 5 个 HardDeadlineExceededError,现在是 34 个。 错误发生在简单
来自 https://www.felixcloutier.com/x86/div : ... temp ← AX / SRC; IF temp > FFH TH
我使用 GNU 汇编器和 AT&T 语法编写了我的第一个引导加载程序。假设将 hello world 打印到屏幕上,然后通知用户按任意键将导致重新启动。只有按下某个键后才会启动重新启动。我的引导加载程
我想获取我的硬盘的参数。使用描述的技术here . 这是显示软盘正常参数的代码: mov dl,00h mov ah,08h int 13h 这是代码,显示无效的硬盘参数(可能是我的硬盘空间很大(LB
我正在尝试将第一个硬盘驱动器的一个 block 读入内存。我尝试使用不同的 LBA,但它会将空间加载到缓冲区中。在下面的代码中,我添加了 for 循环,这样我就可以看到它是否加载了除空格之外的任何其他
我计划通过公共(public) VPS 提供商托管我的网络应用程序基础设施。由于 VPS 主机的专用网络可由其托管的所有 VPS 访问,并且许多基础设施组件没有任何类型的访问控制/身份验证,因此我需要
我正在使用 Bochs 2.4.5 编写引导扇区代码。我使用 INT 13H 从软盘读取扇区。但我发现如果要读取的扇区计数 > 72,则 INT13 将失败。返回码为 AH=1。下面是代码,这里是 I
我正在尝试实现应用程序内购买,而且似乎运行良好。当我尝试购买商品时,会出现带有价格的对话框。但是,当我将我的电子邮件帐户(或与开发者帐户没有任何关系的另一封电子邮件)放入“许可测试”列表中进行测试购买
我目前正在开发一个汇编程序,但我需要让程序每隔一段时间等待一次。 所以,我一直在使用 int 15h/ah = 86h,但出于某种原因,DosBox 给我带来了困难,程序要么与像素(奇怪的颜色)混淆,
在引导加载程序的第二阶段,我尝试将虚拟软盘上的一些扇区加载到 bochs 中的内存中。 ,但是在调用 int 0x13 时,例程不会返回。 我相信我的第二阶段的相关代码是: bootsys_start
我正在尝试在 x86 程序集中创建一个简单的命令系统。命令系统是第二阶段,加载于0x1000:0000。要查看我的引导加载程序,请单击 on this stackoverflow question .
我使用了第一个扇区中的所有内存,现在我想在第二个扇区(第二阶段)中存储一个新的变量字符串并打印它。例如: hello db 'Hello World' 新字符串应该位于另一个扇区中(因为第一个扇区中没
Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。 想改善这个问题吗?更新问题,以便将其作为on-topic
我是一名优秀的程序员,十分优秀!