 |
Чтобы получить распечатку программы (вывести ее на устройс-
тво печати), обратитесь к руководству по редактору текстов. Ис-
ходные файлы Турбо Ассемблера представляют собой обычные тексто-
вые файлы в коде ASCII (американский стандартный код обмена
информацией), поэтому вы можете также напечатать исходный текст
Турбо Ассемблер 3.0/tasm/#1-2 = 27 =
программы на Ассемблере с помощью команды PRINT, введя ее в ответ
на подсказку операционной системы DOS.
Вывод информации на устройство печати
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Устройство печати (принтер) - это очень полезное устройство.
Вам может не только потребоваться распечатать текст программы, но
и передать на принтер выводимую информацию. Следующая версия
программы выводит информацию вместо экрана на принтер:
.MODEL SMALL
.STACK 100h
.DATA
Message DB 'Привет!',13,10,'$'
Message_Length EQO $ - Message
.CODE
mov ax,@Data
mov dx,ax ; установить регистр DS таким
; образом, чтобы он указывал
mov ah,40h ; функция DOS вывода строки
; на устройство
mov bx,4 ; описатель принтера
mov cx,Message_Length ; число печатаемых символов
mov dx,OFFSET Message ; ссылка на "Привет!"
int 21h ; вывести "Привет!" принтер
mov ah,4ch ; функция DOS завершения
; программы
int 21h ; завершить программу
END
В данной версии программы функция DOS вывода строки на экран
заменена на функцию DOS, которая передает информацию на выбранное
устройство или в файл, в данном случае - на принтер. Введите и
запустите программу. Посмотрите, как она напечатает на принтере
слово "Привет!". (Перед запуском программы не забудьте ее сохра-
нить при завершении работы в редакторе. При этом программа будет
сохранена в файле HELLO.ASM, а предыдущая версия программы будет
потеряна.)
Вы можете модифицировать эту программу таким образом, чтобы
она снова посылала выходные данные на экран, а не на устройство
печати, заменив просто строку:
mov bx,4 ; описатель принтера
на строку:
mov bx,1 ; описатель стандартного вывода
Сделайте такое изменение, а затем снова выполните перекомпи-
ляцию и перекомпоновку программы перед ее запуском. Запустив
программу, вы увидите, что сообщение появится на экране, а пос-
Турбо Ассемблер 3.0/tasm/#1-2 = 28 =
ледним символом будет графический символ перевода формата (кружок
с крестиком внизу - "зеркальце Венеры"). Этот символ программа
передает на принтер, чтобы вынудить его после вывода сообщения
выполнить перевод страницы, поскольку на экране страниц нет, он
ничего не знает о переводе формата и просто выводит на экран сим-
вол из набора символов компьютера РС.
Ваша вторая программа на Турбо Ассемблере
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Теперь вы готовы к тому, чтобы ввести и запустить программу,
которая действительно что-то делает. Вернитесь в текстовый редак-
тор и введите следующую программу REVERSE.ASM:
.MODEL SMALL
.STACK 100h
.DATA
MAXIMUM_STRING_LENGTH EQU 1000
StringToReverse DB MAXIMUM_STRING_LENGTH DUP (?)
ReverseString DB MAXIMUM_STRING_LENGTH DUP (?)
.CODE
mov ax,@Data
mov dx,ax ; установить регистр DS таким
; образом, чтобы он указывал
mov ah,3fh ; функция DOS чтения ввода
mov bx,0 ; описатель стандартного ввода
mov cx,MAXIMUM_STRING_LENGTH ; считать до максималь-
; ного числа символов
mov dx,OFFSET StringToReverse ; сохранить строку
int 21h ; получить строку
and ax,ax ; были считаны символы?
jz Done ; нет, конец
mov cx,ax ; поместить длину строки в
; регистр СХ, который можно
; использовать, как счетчик
push cx ; сохранить в стеке длину
; строки
mov bx,OFFSET StringToReverse
mov si,OFFSET ReverseString
add si,cx
dec si ; указывает на конец буфера
; строки
ReverseLoop:
mov al,[bx] ; получить следующий символ
mov [si],al ; сохранить символы в
; обратном порядке
inc bx ; указатель на следующий
; символ
dec si ; указатель на предыдущую
; ячейку buffer
loop ReverseLoop ; переместить следующий
; символ, если он имеется
pop cx ; извлечь длину строки
Турбо Ассемблер 3.0/tasm/#1-2 = 29 =
mov ax,40h ; функция записи DOS
mov bx,1 ; описатель стандартного
; вывода
mov dx,OFFSET ReverceString ; напечатать строку
Done:
mov ah,4ch ; функция DOS завершения
; программы
int 21h ; завершить программу
END
Скоро вы увидите, что сможет делать эта программа. Для нача-
ла не забудьте ее сохранить (под именем REVERSE.ASM).
Турбо Ассемблер 3.0/tasm/#1-2 = 30 =
Запуск программы REVERSE.ASM
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Для запуска программы REVERSE.ASM вы должны сначала ассем-
блировать ее:
TASM reverse
а затем ввести:
TLINK reverse
для создания выполняемого файла. Запустите программу, введя в от-
вет на подсказку DOS слово reverse. В случае вывода при ассембли-
ровании сообщений об ошибках, внимательно проверьте исходный код,
сравните его с приведенным текстом, а затем попытайтесь повторить
процесс.
После запуска программы на экране останется мерцающий кур-
сор. Очевидно, программа ожидает, что вы что-нибудь введете. Поп-
робуйте ввести:
ABCDEFG
а затем нажмите клавишу ENTER. Программа выведет на экран:
GFEDCBA
и завершит работу.
Теперь ясно, что делает программа REVERSE.ASM: она изменяет
порядок символов во введенной строке на обратный. Быстрая работа
со строками и символами - эта одна из областей, где язык Ассем-
блера превосходно демонстрирует свои качества. Вы увидите это в
следующих нескольких главах.
Вас можно поздравить! Вы только что ввели, ассемблировали и
скомпоновали несколько программ на Ассемблере и, таким образом,
ознакомились в действии с основами программирования на Ассембле-
ре: вводом, обработкой данных и выводом.
Если вы не хотите создавать объектный файл, но хотите полу-
чить файл листинга, или если вы хотите получить файл перекрестных
ссылок, но не хотите создавать файл листинга или объектный файл,
задайте в качестве имени файла пустое (нулевое) устройство
(NULL). Например, команда:
TASM FILE1,,NUL,
ассемблирует файл FILE1.ASM в объектный файл FILE1.OBJ, не созда-
вая файла листинга, и создает файл перекрестных ссылок FILE1.XRF.
Турбо Ассемблер 3.0/tasm/#1-2 = 31 =
Литература по языку Ассемблера
ДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД
Многие ведущие издательства издают по продуктам фирмы
Borland превосходные книги, предназначенные для любого круга чи-
тателей - от начинающих пользователей до тех, кто имеет достаточ-
ный опыт работы. Приведем несколько названий книг, в которых
можно найти дополнительную информацию о Турбо Ассемблере, Турбо
|