CodeNet / Языки программирования / Ассемблер / СПРАВОЧНИК по системе программирования ТУРБО АССЕМБЛЕР 2.0
СПРАВОЧНИК по системе программирования ТУРБО АССЕМБЛЕР 2.0
Ваша вторая программа на Турбо Ассемблере
-----------------------------------------------------------------
Теперь вы готовы к тому, чтобы ввести и запустить программу,
которая действительно что-то делает. Вернитесь в текстовый редак-
тор и введите следующую программу REVERSE.ASM:
DOSSEG
.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 ; извлечь длину строки
mov ax,40h ; функция записи DOS
mov bx,1 ; описатель стандартного
; вывода
mov dx,OFFSET ReverceString ; напечатать строку
Done:
mov ah,4ch ; функция DOS завершения
; программы
int 21h ; завершить программу
END
Скоро вы увидите, что сможет делать эта программа. Для нача-
ла не забудьте ее сохранить (под именем REVERSE.ASM).
Запуск программы REVERSE.ASM
-----------------------------------------------------------------
Для запуска программы REVERSE.ASM вы должны сначала ассем-
блировать ее:
TASM reverse
а затем ввести:
TLINK reverse
для создания выполняемого файла. Запустите программу, введя в от-
вет на подсказку DOS слово reverse. В случае вывода при ассембли-
ровании сообщений об ошибках, внимательно проверьте исходный код,
сравните его с приведенным текстом, а затем попытайтесь повторить
процесс.
После запуска программы на экране останется мерцающий кур-
сор. Очевидно, программа ожидает, что вы что-нибудь введете. Поп-
робуйте ввести:
ABCDEFG
а затем нажмите клавишу ENTER. Программа выведет на экран:
GFEDCBA
и завершит работу. Снова введите reverse в командной строке. На
этот раз введите:
0123456789
и нажмите клавишу ENTER. Программа выведет на экран:
9876543210
Теперь ясно, что делает программа REVERSE.ASM: она изменяет
порядок символов во введенной строке на обратный. Быстрая работа
со строками и символами - эта одна из областей, где язык Ассем-
блера превосходно демонстрирует свои качества. Вы увидите это в
следующих нескольких главах.
Вас можно поздравить! Вы только что ввели, ассемблировали и
скомпоновали несколько программ на Ассемблере и, таким образом,
ознакомились в действии с основами программирования на Ассембле-
ре: вводом, обработкой данных и выводом.
Если вы не хотите создавать объектный файл, но хотите полу-
чить файл листинга, или если вы хотите получить файл перекрестных
ссылок, но не хотите создавать файл листинга или объектный файл,
задайте в качестве имени файла пустое (нулевое) устройство
(NULL). Например, команда:
TASM FILE1,,NUL,
ассемблирует файл FILE1.ASM в объектный файл FILE1.OBJ, не созда-
вая файла листинга, и создает файл перекрестных ссылок FILE1.XRF.
Теперь вы готовы к тому, чтобы изучить основные элементы
программирования на языке Ассемблер, о которых рассказывается в
Главе 5 "Элементы программы на Ассемблере".
Глава 3. Работа с командной строкой Турбо Ассемблера
-----------------------------------------------------------------
Данная глава посвящена ознакомлению вас с необязательными
параметрами командной строки Турбо Ассемблера. Мы опишем каждый
параметр командной строки, которые вы можете использовать для
того, чтобы изменить поведение Ассемблера, и покажем, как и где
используются командные файлы. Наконец, мы опишем также файл кон-
фигурации.
Запуск Турбо Ассемблера из DOS
-----------------------------------------------------------------
В Турбо Ассемблере имеется очень мощный и гибкий синтаксис
командной строки. Если вы запустите Турбо Ассемблер, не задав ни-
каких аргументов, например:
TASM
то на экран выведется справочная информация, (на английском язы-
ке) описывающая множество параметров командной строки и синтаксис
для спецификации ассемблируемых файлов. На Рис. 3.1 показано, как
она выглядит.
-----------------------------------------------------------------
Turbo Assembler Version 2.0 Copyright (C) 1990
by Borland International, Inc
Usage:
TASM [параметры] исх_файл [,объект_файл] [,листинг] [,пер_ссылки]
/a,/s Упорядочивание сегментов по алфавитному порядку
или порядку исходного кода
/c Генерация в листинге перекрестных ссылок
/dSYM[=VAL] Определяется SYM = 0 или SYM = VAL
/e,/r Эмулируемые или действительные инструкции с плаваю-
щей точкой
/h,/? Выводится данная справочная информация
/lPATH Включаемые файлы ищутся по маршруту, определяемому
PATH
/jCMD Определяет начальную директиву Ассемблера (напри-
мер, jIDEAL)
/kh#,/ks# Мощность хеш-таблицы #, мощность объема строки #
/l,/la Генерация листинга: l=обычный листинг, la=расширен-
ный
/ml,/mx,/mu Различимость в регистре букв идентификаторов:
ml=все, mx=глобальные, mu=не различаются
/mv# Задает максимальную длину идентификаторов
/m# Разрешает выполнение нескольких проходов для удов-
летворения опережающих ссылок
/n Подавление в листингах таблицы символов
(идентификаторов)
/p Проверка перекрытия сегмента кода в защищенном
режиме
/q Подавление записей .OBJ, не требующиеся при компо-
новке
/t Подавление сообщений при успешном ассемблировании
/w0,/w1,/w2 Задание уровня предупреждение: w0=нет
предупреждений, w1=w2=есть предупреждения
/w-xxx,/w+xxx Запрещение или разрешение предупреждения типа xxx
/x Включение в листинги блоков условного ассемблирова-
ния
/zi,/zd Информация об идентификаторах для отладки: zi=пол-
ная, zd=только о номерах строк
-----------------------------------------------------------------
Рис. 3.1 Командная строка Турбо Ассемблера.
С помощью параметров командной строки вы можете задавать имя
одного или нескольких ассемблируемых файлов, а также параметры,
управляющие их ассемблированием.
Общий вид командной строки выглядит следующим образом:
TASM файлы [; файлы]...
Точка с запятой после левой квадратной скобки позволяет вам
в одной командной строке ассемблировать несколько групп файлов.
По желанию вы можете задать для каждой группы файлов различные
параметры, например:
TASM /E FILE1; /A FILE2
В общем случае группа файлов в командной строке может иметь
вид:
[параметр]...исх_файл [[+] исходный_файл]...
[,[объектный_файл] [, [файл_листинга],
[, [файл_перекрестных_ссылок]]
Этот синтаксис показывает, что группа файлов может начинать-
ся с любого параметра, который вы хотите применить к этим файлам,
а затем могут следовать файлы, которые вы хотите ассемблировать.
Именем файла может быть одно имя файла, либо вы можете использо-
вать обычные трафаретные символы DOS * и ? для задания группы ас-
семблируемых файлов. Если расширение имени файла не указано, Тур-
бо Ассемблер использует по умолчанию расширение .ASM.
TASM MYFILE,,,MYXREF
По этой команде файл MYFILE.ASM ассемблируется в файл
MYFILE.OBJ, листинг выводится в файл с именем MYFILE.LST, а пе-
рекрестные ссылки - в файл MYXREF.XRF.
Если при спецификации ассемблируемых исходных файлов вы ис-
пользуете трафаретные символы, их можно использовать также для
задания имен файла листинга и объектного файла. Например, если в
текущем каталоге содержатся файлы XX1.ASM и XX2.ASM, то командная
строка:
TASM XX*,YY*
ассемблирует все файлы, начинающиеся с букв XX, генерирует объек-
тные файлы, имена которых будут начинаться с YY, а остальную
часть имени формирует в соответствии с именем исходного файла.
Результирующие объектные файлы получат, таким образом, имена YY1,
OBJ и YY2.OBJ.
Если вы не хотите создавать объектный файл, но хотите полу-
чить файл листинга, или если вы хотите получить файл перекрестных
ссылок, но не хотите создавать файл листинга или объектный файл,
можно в качестве имени файла задать нулевое (фиктивное) устройс-
тво. Например:
TASM FILE1,,NUL,
Эта команда ассемблирует файл FILE1.ASM в объектный файл
FILE1.OBJ. При этом файл листинга не создается, а создается файл
перекрестных ссылок FILE1.XRF.
Оставить комментарий
Комментарии
1.


10 мая 2005, 14:38:55
Сделана опечатка в строчке:
mov dx,OFFSET Rever"c"eString ; напечатать строку
mov dx,OFFSET Rever"c"eString ; напечатать строку
