gpt4 book ai didi

assembly - x86 汇编中的串行端口如何设置为 19200 波特?

转载 作者:行者123 更新时间:2023-12-04 00:58:35 25 4
gpt4 key购买 nike

我应该修改一个使用串行端口的 16 位程序集编写的应用程序。目标之一是支持 19200 波特的速度。我在 Internet 上阅读过的大部分资源(例如 this)都展示了使用 INT 14h 的方法。我基本上将一个魔数(Magic Number)写入 al 寄存器,调用中断并(希望)设置端口。操作系统的系统调用应用程序用于设置串行端口使用相同的方法(如果需要,我可以随意修改它)。

该方法的问题是设置速度的字段是一个 3 位字段,最大速度是 9600 波特。如何使用更高的速度?

最佳答案

我对 BIOS 功能不太熟悉,但如果您对串行端口的底层了解更多 UART芯片,您很可能可以直接对其进行编程,绕过 BIOS 对它的支持。

例如,经典16550 UART (例如 here 中的数据表)支持高达 1 Mbps 左右的速度,并使用两个 8 位寄存器来表示所需的时钟缩放。

Here是关于这样做的引用文本,即编程“除数锁存字节”以设置所需的波特率。从随附的代码中可以清楚地看出,对于基 I/O 地址为 0x3f8 的 COM1,您会在 0x3f8 处找到低位除数字节,在 0x3f8 处找到高位除数字节0x3f9 处的字节。

关于assembly - x86 汇编中的串行端口如何设置为 19200 波特?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8501261/

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