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 ; напечатать строку