作为一种心理锻炼,我正在重新熟悉 DOS 汇编程序。我设置了 DOSBox 来编写和测试程序,发现它缺少“更多”命令,所以我决定自己编写。一般流程是:
- 从命令行读取参数
- 打开命令行命名的文件(3dh,int 21h)
- 将文件读入内存(3fh,int 21h)
- 关闭文件(3eh,int 21h)
- 一次显示文件 23 行,空格键或 q 暂停
- 出口
该程序在以文件名作为参数运行时效果很好。然后我想将它扩展为从重定向输入工作,所以我添加了一个测试以查看 stdin 是否有任何数据(函数 0bh,int 21h),如果有,则将 stdin 的文件句柄设置为 0。
问题是,一旦将数据读入缓冲区并关闭文件,按键就不起作用(仍然被重定向?)文件的前 23 行与“更多”提示一起显示,但随后它是卡住。获得重定向输入并仍然能够访问键盘的正确方法是什么?