如何在dosbox中输出到视频屏幕?

时间:2019-04-05 12:48:17

标签: assembly dosbox

此代码不输出任何内容。如何在新屏幕的左上角输出字符“ A”?

我尝试了下面的代码。

、、、、、、、、、、

假设CS:代码,DS:代码
代码段
组织100h

开始:

mov ax,0B800h
mov es,ax
mov byte ptr es:[0],'A'
int 20h
代码结尾
结束开始

、、、、、、、、、

我想在否则为空白屏幕的左上角找到字母'A'。

1 个答案:

答案 0 :(得分:1)

  

此代码不输出任何内容。

可能性包括:

  • 视频模式未使用0xB800:0x0000处的显示内存(例如图形视频模式)。

  • 代码确实写了'A',但属性使它不可见(例如,黑色前景和黑色背景)。

  • 代码确实写了“ A”,并且该属性使它可见。但是一旦程序存在(在您有机会看到它之前),它就会被覆盖或滚动到屏幕顶部

要防范所有这些潜在问题:

  • 设置视频模式以确保其使用文本模式

  • 执行mov ax,(0xF0 << 8) | 'A'mov [es:0],ax来设置属性,同时还要写入字符。注意:这可以优化为单个mov word [es:0],(0xF0 << 8) | 'A'指令。

  • 在退出之前会有某种延迟(等待时间过去,等待用户按下键,...)。