我应该修改用16位汇编语言编写的应用程序,它使用串口。其中一个目标是支持19200波特的速度。我在互联网上阅读的大多数资源(例如this)都显示了使用INT 14h进行此操作的方式。我基本上将一个幻数写入al寄存器,调用中断并且(希望)设置端口。操作系统的系统调用应用程序用于设置串口使用相同的方法(如果需要,我可以随意修改)。
该方法的问题在于设置速度的字段是3位字段,如果是9600波特则是最大速度。如何使用更高的速度?
答案 0 :(得分:2)
我对BIOS功能不太熟悉,但如果您对串口UART芯片了解更多信息,可以直接对其进行编程,绕过BIOS对它的支持。
例如,经典的16550 UART(例如here找到的数据表)支持高达约1Mbps的速率,并使用两个8位寄存器来表示所需的时钟缩放。 / p>
Here是关于正是这样做的参考文本,即编程“除数锁存字节”以设置所需的波特率。从附带的代码中可以清楚地看出,对于具有0x3f8
基本I / O地址的COM1,您会发现0x3f8
处的低阶除数字节和{{1}处的高位字节}。