Почему сборка символов печати может вернуться - PullRequest
0 голосов
/ 07 октября 2018

Следующий код печатает символ 'a':

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

Я прочитал это руководство и обнаружил, что в al мы получаем:

Return: AL = последний символьный вывод

Я пытаюсь понять, что почему нам действительно нужен этот тип возвращаемого значения? Это не имеет смысла для меня, поскольку мыполучить вывод на экран, и у нас все равно будет последний напечатанный символ в DL (как мы только что напечатали).Есть идеи?

1 Ответ

0 голосов
/ 07 октября 2018

Список прерываний Ральфа Брауна гласит:

AL = вывод последнего символа ( несмотря на официальные документы, в которых ничего не указано ) (по крайней мере DOS 2.1-7.0)

«Ничто не возвращается» не означает: «Значения регистров не изменены», но это может означать: «Значения регистров могут иметь любое значение».

Возможно, в версиях MS-DOS с 2.1 по 7.0 внутренне используется регистр AL таким образом, что AL обычно содержит символ, записанный при возврате прерывания.

Однакопоскольку в официальной документации MS-DOS ничего не возвращается, на это нельзя полагаться:

В некоторых случаях некоторые версии MS-DOS могут возвращать любое другое значение в AL!

...