CodeNet / Языки программирования / Ассемблер / СПРАВОЧНИК по системе программирования ТУРБО АССЕМБЛЕР 2.0
СПРАВОЧНИК по системе программирования ТУРБО АССЕМБЛЕР 2.0
Ваша первая программа на Турбо Ассемблере ----------------------------------------------------------------- В программировании первой программой традиционно является программа, выводящая на экран сообщение "Привет!". Не будет иск- лючением и наша программа, поскольку это является хорошей отправ- ной точкой. Войдите в текстовый редактор (один из тех редакторов, которые формируют файлы в коде ASCII) и введите следующие строки программы под названием HELLO.ASM: DOSSEG .MODEL SMALL .STACK 100h .DATA Message DB 'Привет!',13,10,'$' .CODE mov ax,@Data mov dx,ax ; установить регистр DS таким ; образом, чтобы он указывал ; на сегмент данных mov ah,9 ; функция DOS вывода строки mov dx,OFFSET Message ; ссылка на сообщение "Привет!" int 21h ; вывести "Привет!" на экран mov ah,4ch ; функция DOS завершения ; программы int 21h ; завершить программу END После того, как вы введете эту программу, сохраните ее на диске. Если вы знакомы с языками Си или Паскаль, вам может пока- заться, что эта версия программы несколько длинновата. Это дей- ствительно так, программы на Ассемблере длиннее, поскольку каждая инструкция Ассемблера выполняет меньше функций, чем инструкция Паскаля или Си. С другой стороны, вам предоставляется свобода, и вы можете комбинировать эти инструкции Ассемблера так, как захо- тите. Это означает, что в отличие от языков Си и Паскаль, Ассем- блер позволяет вам программировать компьютер таким образом, что он будет делать все, на что способен. Часто это стоит нескольких дополнительных строк. Ассемблирование вашей первой программы ----------------------------------------------------------------- После того, как вы сохранили файл HELLO.ASM, вы захотите за- пустить программу. Однако, перед тем, как вы сможете ее запус- тить, вам потребуется преобразовать программу в выполняемый вид. Как показано на Рис. 2.1, где изображен полный цикл создания программы (редактирование, ассемблирование, компоновка и выполне- ние), это потребует двух дополнительных шагов - ассемблирования и компоновки. Создание новой программы | -------------------------------->| | | | Редактирование | | | V | ------------------------------------------------ | | Исходный файл Ассемблера HELLO.ASM | | ------------------------------------------------ | | | Ассемблирование | | | V | ----------------------------------------------- | | Объектный файл HELLO.OBJ | | ----------------------------------------------- | | | Компоновка | | | V | ----------------------------------------------- | | Выполняемый файл HELLO.EXE | | ----------------------------------------------- | | | Выполнение | ---------------------- | ----( Если нужны изменения )------ ---------------------- Рис. 2.1 Редактирование, ассемблирование, компоновка и вы- полнение программы. На этапе ассемблирования ваш исходный код (текст программы) превращается в промежуточную форму, которая называется объектным модулем, а на этапе компоновки один или несколько модулей комби- нируются в выполняемую программу. Ассемблирование и компоновку вы можете выполнять с помощью командной строки. Для ассемблирования файла HELLO.ASM наберите команду: TASM hello и нажмите клавишу ENTER. Если вы не задали другое имя, файл HELLO.ASM будет ассемблирован в файл HELLO.OBJ. (Заметим, что расширение имени файла вводить не требуется. Турбо Ассемблер под- разумевает в этом случае, что файл имеет расширение .ASM.) На эк- ране вы увидите следующее: Turbo Assembler Version 2.0 Copyright (C) 1990 (1) by Borland International Inc. Assembling file: HELLO.ASM (2) Error messages: None (3) Warning messages: None (4) Remaining memory: 266K (5) 1 - Турбо Ассемблер, версия 2.0; авторские права фирмы Borland, 1990 г.; 2 - ассемблирован файл HELLO.ASM; 3 - сообщения об ошиб- ках: нет; 4 - предупреждающие сообщения: нет; 5 - остается памя- ти: 266К Если вы введете файл HELLO.ASM в точности так, как показано, то вы не получите никаких предупреждающих сообщений или сообщений об ошибках. Если вы получаете такие сообщения, они появляются на экране наряду с номерами строк, указывающими строки, где содер- жатся ошибки. При получении сообщений об ошибках проверьте исход- ный код (текст) программы и убедитесь, что он выглядит точно так, как исходный код в нашем примере, а затем снова ассемблируйте программу. Компоновка программы ----------------------------------------------------------------- После ассемблирования файла HELLO.ASM вы продвинулись только на один шаг в процессе создания программы. Теперь, если вы ском- понуете только что полученный объектный код в выполняемый вид, вы сможете запустить программу. Для компоновки программы используется программа TLINK, представляющая собой поставляемый вместе с Турбо Ассемблером ком- поновщик. Введите командную строку: TLINK HELLO Здесь опять не требуется вводить расширение имени файла. TLINK по умолчанию предполагает, что этим расширением является расширение .OBJ. Когда компоновка завершится (самое большее через несколько секунд), компоновщик автоматически присвоит файлу с расширением .EXE имя, совпадающее с именем вашего объектного фай- ла (если вы не определили другое имя). При успешной компоновке на экране появляется сообщение: Turbo Linker Version 3.0 Copyright (c) 1987, 1990 by by Bor- land International Inc. В процессе компоновки могут возникнуть ошибки (в данной программе это маловероятно). Если вы получили сообщения об ошиб- ках компоновки (они выводятся на экран), измените исходный код программы так, чтобы он в точности соответствовал тексту програм- мы в приведенном выше примере, а затем снова выполните ассембли- рование и компоновку. Запуск вашей первой программы ----------------------------------------------------------------- Теперь программу можно запустить на выполнение. Для этого в ответ на подсказку операционной системы DOS введите hello и наж- мите ENTER. На экран выведется сообщение: Привет! Пока это все. Вы только что создали и выполнили свою первую прог- рамму на Ассемблере!. Что происходит? ----------------------------------------------------------------- Теперь, когда вы получили и выполнили программу HELLO.ASM, давайте вернемся назад и рассмотрим подробно, что происходит с момента ввода текста программы до ее выполнения. Когда вы первый раз вводите исходный код программы на ассем- блере, ее текст сохраняется текстовым редактором в памяти. Если питание компьютера в этот момент по какой-то причине будет выклю- чено, исходный код будет потерян, поэтому мы рекомендуем вам по- чаще сохранять исходный код, чтобы избежать такой трагедии. После того, как вы сохраните исходный код на диске, постоянная копия текста будет записана в файл HELLO.ASM, который сохранится и пос- ле выключения или сбоя питания (однако этот файл может быть поте- рян в результате порчи диска, поэтому рекомендуется регулярно де- лать резервные копии файлов). Файл HELLO.ASM - это стандартный текcтовый файл в коде ASCII. Вы можете вывести его на экран, вве- дя в ответ на подсказку DOS команду: type hello.asm Его можно также отредактировать с помощью текстового редактора. Когда вы ассемблируете файл HELLO.ASM, Турбо Ассемблер прев- ращает текст инструкций в этом файле в их двоичный эквивалент в объектном файле HELLO.OBJ. Этот файл является промежуточным фай- лом (промежуточным звеном в процессе перехода от текстового к вы- полняемому файлу). Файл HELLO.OBJ содержит всю информацию, необ- ходимую для создания выполняемого кода из инструкций, содержащих- ся в файле HELLO.ASM, но она записана в виде, который позволяет комбинировать ее с другими объектными файлами для создания одной программы. В Главе 5 ("Более подробно о программировании на Турбо Ассемблере") вы увидите, насколько полезным это может оказаться при разработке больших программ. При компоновке файла HELLO.OBJ утилита TLINK преобразует его в выполняемый файл HELLO.EXE, который вы запускаете, введя hello в ответ на подсказку DOS. Теперь введите команду: dir hello.* При этом будет выведен список файлов HELLO на диске. Это будут файлы HELLO.ASM, HELLO.OBJ, HELLO.EXE и HELLO.MAP.
Оставить комментарий
Комментарии
1.
+2 / -0
26 октября 2009, 12:35:18
Ошибка:
mov ax,@Data
mov dx,ax
надо DS в место DX... :)
mov ax,@Data
mov dx,ax
надо DS в место DX... :)