Теперь вы готовы к тому, чтобы ввести и запустить программу,
которая действительно что-то делает. Вернитесь в текстовый редак-
тор и введите следующую программу 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
.startup
mov ax,@Data
mov ds,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; извлечь длину строки
mov ah,40h; функция записи DOS
mov bx,1; описатель стандартного
; вывода
mov dx,OFFSET ReverseString; напечатать строку
int 21h
Done:
mov ah,4ch; функция DOS завершения
; программы
int 21h; завершить программу
ends
END
Скоро вы увидите, что сможет делать эта программа. Для нача-
ла не забудьте ее сохранить (под именем REVERSE.ASM).
Запуск программы 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.
Литература по языку Ассемблера
Многие ведущие издательства издают по продуктам фирмы
Borland превосходные книги, предназначенные для любого круга чи-
тателей - от начинающих пользователей до тех, кто имеет достаточ-
ный опыт работы. Приведем несколько названий книг, в которых
можно найти дополнительную информацию о Турбо Ассемблере, Турбо
отладчике и Турбо Профайлере:
Ackerman, Charles. Turbo Debugger and Tools: A Self-Teaching
Guide, John Wiley and Sons (New York: 1990).
Swan, Tom. Mastering Turbo Assembler. Indianapolis: Hayden
Books, 1989.
Swan, Tom. Mastering Turbo Debugger and Tools. Howard W.
Sams and Co. (Carnel, IN: 1990).
Syck, Gary. The Waite Group's Turbo Assembler Bible,
Howard W. Sams and Co. (Carmel, IN: 1990).