Предыдущий раздел | ВЫВОД СИМВОЛОВ НА ЭКРАН | Следующий раздел |
Функция номер 02h для прерывания “int 21h” печатает один символ на экране. Другая функция, номер 09h, выводит на экран целую строку и прекращает вывод, когда находит символ "$".
Поместим строку в память, начиная с ячейки 200h, чтобы эта строка не перепуталась с кодом самой программы. В в е д и т е следующие числа, используя команду Е 200:
48 65 6C 6C 6F 2C 20 44
4F 53 20 68 65 72 65 2E
24
Последнее число 24h является ASCII–кодом для символа $, и оно сообщает DOS, что это конец строки символов. Теперь посмотрим, что содержит эта строка, запустив следующую программу:
15AC:0100 В409 mov ah, 09
15AC:0102 BA0002 mov dx, 0200
15AC:0105 CD21 int 21
15AC:0107 CD20 int 20
200h – адрес строки, которую мы ввели, а загрузка 200h в регистр DX сообщает DOS о том, где ее искать. П р о в е р ь т е программу командой U и затем запустите ее командой G:
_G
Hello, DOS here.
Program terminated normally
Команда Debug D (от "Dump") дампирует (выводит содержимое) памяти на экран. Это похоже на действия, совершаемые командой U при распечатке машинных команд. Подобно U поместите после D адрес, чтобы сообщить Debug, откуда начинать дамп.
Н а б е р и т е команду "D 200". Она выведет содержимое участка памяти, в котором хранится только что введенная строка:
_D 200
15АC:0200 48 65 6C 6C 6F 2C 20 44-4F 53 20 68 65 72 65 2E Hello, DOS here.
15АC:0210 24 5D C3 55 83 EC 30 8B-EC С7 06 10 00 00 00 E8 $J.U..0………
После каждого числа, обозначающего адрес (как 15AС:0200 в примере), мы видим 16 пар шестнадцатеричных чисел, вслед за которыми записаны 16 ASCII–символов для этих пар (байтов). Например, в первой строке записаны символы, которые вы ввели. Символ $ является первым символом в следующей строке, остальная часть строки представляет собой беспорядочный набор символов.
Точка "." в окне АSCII означает, что это может быть как точка, так и специальный символ, например греческая буква "pi". Команда Debug D выдает только 96 из 256 символов символьного набора IBM PC, поэтому точка используется для обозначения остальных 160 символов. Часть специальных символов представляет собой прописные и строчные буквы русского алфавита. Соответствующие шестнадцатеричные коды приведены в табл. 4.
Теперь запишем программу, выводящую строку на экран, на диск. Программа начинается со строки l00h, и из выполненного дампа памяти можно видеть, что символ, следующий за знаком $, заканчивающим нашу строку, расположен по адресу 211h. С о х р а н и т е разность 211h-100h в регистре CX, опять установив ВХ в ноль. Используйте команду N, чтобы дать имя программе (добавьте расширение com, чтобы запускать программу прямо из DOS), и затем командой W запишите программу и данные в дисковый файл.
Предыдущий раздел | В начало | Следующий раздел |