Предыдущий раздел ВЫВОД СИМВОЛОВ НА ЭКРАН Следующий раздел

4.4. Вывод на экран строки символов

Функция номер 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 запишите программу и данные в дисковый файл.

 


Предыдущий раздел В начало Следующий раздел