没有在标准8086中看到回声

时间:2016-10-01 02:16:18

标签: assembly x86-16 dosbox

装配noob在这里。 我没有从回声中得到任何标准。

mov ah, 01h   ;
int 21h       ;

当我进行文件重定向时

program.asm<输入>输出

唯一输出的是我明确定义打印的内容。 但是当我在没有文件重定向的情况下运行我的程序时,我看到我输入的所有内容都没有问题。

我正在模仿DOSBox。

关于什么可能导致回声没有发生的任何想法?

2 个答案:

答案 0 :(得分:1)

我的BIOS / DOS参考文件告诉以下有关DOS功能01h的信息 名称“键盘 InputWithEcho ”有点暗示即将出现的问题!

  

重定向STDIN和STDOUT时,使用此功能时可能会出现问题:

     
      
  • 如果输入来自文件,则可能返回与扩展键盘代码不对应的零字节。
  •   
  • 在V4之前的DOS版本中,该函数无法检测到文件的结尾。
  •   
     

当重定向STDIN以便从文件中检索输入时,这些注意事项可能会导致严重问题。因此,您可能需要使用不同的DOS输入函数:06h,07h,08h或3Fh(使用句柄0,STDIN时)。

由于您使用两种重定向( program.asm< input> output ),因此最好开始使用DOS函数08h。它提供了与01h功能最接近的匹配。 它不回显这一事实无关紧要,因为您仍希望将输出重定向到文件。
如果需要,请使用功能02h在屏幕上显示每个字符。

答案 1 :(得分:0)

如果要在控制台中打印一个字符,则需要使用DOS调用02h并在DL寄存器中设置要打印的ASCII代码:< / p>

示例:

mov ah,02h
mov dl,41h
int 21h