我有一个被调用的变量,average
在我的 中DATASEG
,它每次都会改变,因为用户每次输入不同的输入。我想要做的是转到图形模式(VGA),然后在那里打印您的平均值是:然后平均值我知道如何更改为这样的图形模式:
mov ax, 13h
int 10h
Run Code Online (Sandbox Code Playgroud)
打印平均值后,如果平均值高于 75,我想打印在下面你是个好学生,继续努力,如果不是。别担心,你会好起来的!提前致谢。
在我的8086汇编程序中执行循环时,有一个键盘按键阈值,如果你按键太多次,PC扬声器将开始发出哔哔声.这是令人讨厌的,它减慢了我的程序爬行速度,因为CPU必须跳离我的程序并花半秒钟来驱动扬声器.
几个月前我开始在实际硬件上测试我的程序之前,我甚至都不知道这个问题.这个问题在DosBox中不是问题,甚至在DosBox中安装的Dos 6.22中也不是问题.所以它必须是PC BIOS内置的一些低级硬件中断,我不太了解这些东西.
它出现在我的286机器和我的Pentium mmx笔记本电脑上,无论操作系统如何.
即使它只是一个死循环,我甚至没有轮询键盘输入,如果我按太多键也会发出蜂鸣声
我已经尝试将我的输入代码包装在cli和sti中,希望能够从系统中屏蔽我的键盘输入,但这确实不起作用.我只在程序中的一个奇点处收集扫描码,所以其余的时间都启用了中断.所以绝大多数时候仍然会发出哔哔声.
必须有一些我可以禁用的硬件寄存器或其他东西.我仔细查看了Boch的端口列表(http://bochs.sourceforge.net/techspec/PORTS.LST),寻找类似的东西,但没有看到任何东西.
也许我可以关闭中断?我想很多汇编程序员一定遇到过这个问题,但Google在这里根本没有帮助我.
我的程序既写入又读取这样的颜色数组:
struct Image {
size_t width;
size_t height;
struct Color *data;
}
struct Color {
char r;
char g;
char b;
}
Run Code Online (Sandbox Code Playgroud)
如何在 C 语言的屏幕上显示这样的数组?