基础知识 | 每日一练(166)

基础知识练习

士人有百折不回之真心,才有万变不穷之妙用。立业建功,事事要从实地着脚,若少慕声闻,便成伪果;讲道修德,念念要从虚处立基,若稍计功效,便落尘情。 ——菜根谭

读者:怎样调用 BIOS 函数?写 ISR?创建 TSR?

小林:这些都是针对某一特定系统的问题 (最可能的是运行 MS-DOS 的 PC 兼容机)。在针对系统的新闻组 comp.os.msdos.programmer 或它的 FAQ 里你会取得更好的信息; 另一个很好的资源是 Ralf Brown 的中断列表。

读者:我不能使用这些非标准、依赖系统的函数, 程序需要兼容 ANSI!

小林:你很不走运。要么你误解了要求, 要么这不可能做到。 ANSI/ISO C 标准没有定义做这些事的方法; 它是个语言的标准, 不是操作系统的标准。国际标准POSIX (IEEE 1003.1, ISO/IEC 9945-1) 倒是定义了许多这方面的方法, 而许多系统 (不只是 Unix) 都有兼容 POSIX 的编程接口。可以做到, 也是可取的做法是使程序的大部分兼容 ANSI, 将依赖系统的功能集中到少数的例程和文件中。这些例程或文件可以大量使用 #ifdef 或针对每一个移植的系统重写。

正文完