作爲一種心理練習,我重新熟悉DOS彙編程序。我設置了DOSBox來編寫和測試程序,並注意到它缺少一個「更多」命令,所以我決定寫我自己的。一般流程是:在命令行DOS彙編程序從管道讀取
- 讀取參數
- 命名的命令行(3DH,INT 21H)
- 讀取文件到內存(3FH,INT 21H)
- 關閉文件打開文件(3EH,INT 21H)
- 顯示文件23行的時間,暫停對空格鍵或q
- 退出
當文件名作爲參數運行時,該程序運行良好。然後我想將它擴展到重定向輸入,所以我添加了一個測試來查看stdin是否有任何數據(函數0bh,int 21h),如果是,則將stdin的文件句柄設置爲0。
問題是,一旦數據讀入緩衝區並且文件關閉,按鍵不起作用(仍在重定向?)文件的前23行隨「更多」提示一起顯示,但之後就卡住了。獲取重定向輸入並仍能訪問鍵盤的正確方法是什麼?
也許不是你正在尋找的解決方案,但是如何從端口'60H'讀取你的提示以獲得掃描碼(假設你的方案仍然有效)? – Michael
這是一個好主意。不過,我仍然想知道,是否有一個用於處理重定向stdin的「最佳做法」。 – Mechatechzilla