为什么汇编字符打印可以返回

时间:2018-10-07 12:40:59

标签: assembly x86-16 emu8086

以下代码显示字符“ a”:

mov dl, ‘a'
mov ah, 2
int 21h

我已经读过this manual,发现在al中我们得到了:

  

返回:AL =输出最后一个字符

我想了解的是为什么我们实际上需要这种返回值吗?当我们在屏幕上获得输出时,这对我来说毫无意义,而且无论如何我们都拥有最后一个打印字符DL(正如我们刚刚打印的那样)。有想法吗?

1 个答案:

答案 0 :(得分:4)

拉尔夫·布朗(Ralph Brown)的打扰名单说:

  

AL =最后一个字符输出(尽管官方文档指出了   什么都不会返回)(至少 DOS 2.1-7.0

“什么也没有返回”并不表示:“寄存器的值没有改变”,但这可能表示:“寄存器的值可以具有任何值。”

也许MS-DOS 2.1到7.0版本在内部使用AL寄存器,而AL 通常包含中断返回时写入的字符。

但是,由于正式的MS-DOS文档说什么也没返回,因此您不能依靠它:

在某些情况下,某些MS-DOS版本可能会在AL中返回任何其他值!