Это выводит ABC на экран.
Код, который вы показали, может сделать это, только если мы предположим, что AH=0Eh
, идентификационный номер для функции BIOS Teletype.
Как мне сделать что-то похожее с перемещением этих 3 символов в другой регистр?Например, DL.
Вы можете!
Помимо BIOS API (int 10h
) есть также DOS API (int 21h
).
Если вы установитесимволы - по одному за раз - в регистре DL
функция вывода символов DOS 02h также будет печатать их на экране, и с дополнительным преимуществом, что вам не нужно беспокоиться о номере DisplayPageв BH
или CharacterColor в BL
.
mov ah, 02h ;DOS Character Output
mov dl, 41h
int 21h
mov dl, 42h
int 21h
mov dl, 43h
int 21h
Ответ Питера Кордеса, очевидно, остается правильным.
"Вы не можете свободно выбирать, какие регистры вы используете для запроса какой-либо функции API."
Примечание о шестнадцатеричных числах.
В такой инструкции, как mov al, 041h
, префикс шестнадцатеричного числа с 0 является избыточным и - по крайней мере для меня - несколько снижает читабельность.
Вы должны только ставить нулевой префикс шестнадцатеричного числаиначе бы это начиналось с буквы, поэтому те, которые начинаются с 'A' ... 'F'.