Ваша вторая программа на Турбо Ассемблере
Теперь вы готовы к тому, чтобы ввести и запустить программу, которая действительно что-то делает. Вернитесь в текстовый редактор и введите следующую программу REVERSE.ASM:
.MODEL SMALL .STACK 100h .DATA MAXIMUM_STRING_LENGTH EQU 1000 StringToReverse DB MAXIMUM_STRING_LENGTH DUP (?) ReverseString DB MAXIMUM_STRING_LENGTH DUP (?)
mov ax,@Data mov dx,ax mov ah,3fh 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 loop ReverseLoop pop cx mov ax,40h mov bx,1 mov dx,OFFSET ReverceString Done: mov ah,4ch int 21h END | установить регистр DS таким образом, чтобы он указывал на сегмент данных функция DOS чтения ввода описатель стандартного ввода считать до максимального числа символов сохранить строку получить строку были считаны символы? нет, конец поместить длину строки в регистр СХ, который можно использовать, как счетчик сохранить в стеке длину строки
указывает на конец буфера строки
получить следующий символ сохранить символы в обратном порядке указатель на следующий символ указатель на предыдущую ячейку buffer переместить следующий символ, если он имеется извлечь длину строки функция записи DOS описатель стандартного вывода напечатать строку
функция DOS завершения программы завершить программу
|
Скоро вы увидите, что сможет делать эта программа. Для начала не забудьте ее сохранить (под именем 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). 1 2 3 4 5 6 7 8
8 8 8
| |