Софт-Архив

Turbo Assembler img-1

Turbo Assembler

Рейтинг: 4.0/5.0 (1901 проголосовавших)

Категория: Windows: Компиляторы

Описание

Turbo Assembler (TASM) - Студопедия

Turbo Assembler (TASM)

NASM (Netwide Assembler)

NASM — свободный (LGPL и лицензия BSD) ассемблер для архитектуры Intel x86. Используется для написания 16-, 32- и 64-битных программ.

NASM был создан Саймоном Тэтхемом совместно с Юлианом Холлом и в настоящее время развивается небольшой командой разработчиков на SourceForge.net. Первоначально он был выпущен согласно его собственной лицензии, но позже эта лицензия была заменена на GNU LGPL после множества проблем, вызванных выбором лицензии. Начиная с версии 2.07 лицензия заменена на «упрощённую BSD» (BSD из 2 пунктов).

NASM может работать на платформах, отличных от x86, таких как SPARC и PowerPC, однако код он генерирует только для x86 и x86-64.

NASM успешно конкурирует со стандартным в Linux- и многих других UNIX-системах ассемблером gas. Считается, что качество документации у NASM выше. Кроме того, ассемблер gas по умолчанию [5] использует AT&T-синтаксис, ориентированный на процессоры не от Intel, в то время как NASM использует вариант традиционного для x86-ассемблера Intel-синтаксиса; Intel-синтаксис используется всеми ассемблерами для Windows-систем, например MASM, TASM, FASM.

NASM компилирует программы под различные операционные системы в пределах x86-совместимых процессоров. Находясь в одной операционной системе, можно беспрепятственно откомпилировать исполняемый файл для другой.

Компиляция программ в NASM состоит из двух этапов. Первый — ассемблирование, второй — компоновка. На этапе ассемблирования создаётся объектный код. В нём содержится машинный код программы и данные, в соответствии с исходным кодом, но идентификаторы (переменные, символы) пока не привязаны к адресам памяти. На этапе компоновки из одного или нескольких объектных модулей создаётся исполняемый файл (программа). Операция компоновки связывает идентификаторы, определённые в основной программе, с идентификаторами, определёнными в остальных модулях, после чего всем идентификаторам даются окончательные адреса памяти или обеспечивается их динамическое выделение.

Для компоновки объектных файлов в исполняемые в Windows можно использовать свободный бесплатно распространяемый компоновщик alink, а в Linux — компоновщик ld, который есть в любой версии этой операционной системы.

В NASM используется Intel-синтаксис записи инструкций.

TASM — программный пакет компании Borland, предназначенный для разработки программ на языке ассемблера для архитектуры x86. Кроме того, TASM может работать совместно с трансляторами с языков высокого уровня фирмы Borland, такими как Turbo C и Turbo Pascal. Как и прочие программные пакеты серии Turbo, Турбо Ассемблер больше не поддерживается.

TASM до сих пор используется для обучения программированию на ассемблере под архитектуру x86. Многие находят его очень удобным и продолжают его использовать, расширяя набором дополнительных макросов.

Пакет TASM поставляется вместе с компоновщиком Turbo Linker и порождает код, который можно отлаживать с помощью Turbo Debugger.

По умолчанию TASM работает в режиме совместимости с другим распространённым ассемблером — MASMi, то есть TASM умеет транслировать исходники, разработанные под MASM. Кроме того, TASM имеет режим IDEAL, улучшающий синтаксис языка и расширяющий его функциональные возможности.

Другие статьи, обзоры программ, новости

Borland Turbo Assembler 5

Borland Turbo Assembler 5.0 [Английский]

Borland Turbo Assembler 5.0 [Английский]

Название Программы: Borland Turbo Assembler 5.0

Версия программы: 5.0

Последняя Версия программы: 5.0

Язык интерфейса: Английский

Лечение: не требуется

Системные требования:

Совместим как с DOS так и со всеми версиями Windows.

TASM имеет полную поддержку 8088, 8086, 80286, 80386, i486, Pentium процессоров, а также поддержка интерфейса на C, C + +, Pascal, FORTRAN и COBOL.Полноэкранный интерактивный отладчик (Turbo Debugger) также включен.

Пакет TASM поставляется вместе с компановщиком Turbo Linker, и способен пораждать код, который можно отлаживать с помощью отладчика Turbo Debugger. TASM имеет режим совместимости с другим распространённым ассемблером — Макро Ассемблером (Masm) фирмы Microsoft, т.е. TASM в состоянии скомпилировать файлы, предназначенные для компиляции с помощью MASM. Кроме того, TASM имеет IDEAL-совместимый режим, который позволяет использовать дополнительные расширения.

Turbo assembler

/ Архитектура ВС (Карцева А.С.) / labs / labs_tasm

ознакомление с общими принципами построения программ на языке ассемблера;

обучение работе с программами Tasm.exe,Tlink.exe;

создание *.EXE файла первой программы

просмотр работы программы в Турбоотладчике (Td.exe);

ознакомление со структурой программы на ассемблере;

дать понятие о директивах определения данных;

директивы DATA, CODE, Mode;

ТЕОРЕТИЧЕСКАЯ ЧАСТЬ

Программирование на языке ассемблера или использование его в других языках дает широкий спектр возможностей для программиста в создании полноценных, по истине, профессиональных программ.

Язык ассемблера — это символическое представление машинного языка. Все процессы, происходящие на вашем компьютере, так или иначе, команды (инструкции) машинного языка. Отсюда понятно, что, несмотря на общее название, язык ассемблера для каждого типа компьютера свой. По-настоящему решить проблемы, связанные с аппаратурой невозможно без знания языка ассемблера.

Для первоначального ознакомления с ассемблером традиционно используется в качестве примера программа, выводящая на экран сообщение "Привет!". В рамки данной работы не входит доскональное понимание структуры программы на языке ассемблера.

В отличие от других языков программирования, язык ассемблера не имеет своей среды написания исходного кода. В качестве редактора можно использовать любой редактор, формирующий файлы в коде ASCII.

Примечание. если вы используете редакторWord, сохраняйте файлы под фильтром "ТекстDOS".

.MODEL SMALL

.STACK 100h

Message DB 'Привет!',13,10,'$'

mov dx,OFFSET Message

mov ah,4ch

После того, как вы введете эту программу, сохраните ее на диске желательно в каталоге C:\Tasm\.

Трансляция . После того, как вы сохранили свой файл, вы захотите запустить программу. Однако, перед тем, как вы сможете ее запустить, вам потребуется преобразовать программу в выполняемый вид. Как показано на Рис.1, где изображен полный цикл создания программы (редактирование, ассемблирование, компоновка и выполнение), это потребует двух дополнительных шагов - трансляции и компоновки.

Рис 1. Полный цикл создания программы на языке ассемблера

На этом этапе ассемблирования ваш исходный код программы превращается в промежуточную форму, которая называется объектным модулем, а на этапе компоновки один или несколько модулей комбинируются в выполняемую программу. Ассемблирование и компоновку вы можете выполнять с помощью командной строки.

Для ассемблирования файла Lab1.asm наберите команду:

и нажмите клавишу ENTER. Если вы не задали другое имя, файл Lab1.asm будет ассемблирован в файл Lab1.obj. (расширение имени файла можно не вводить, ассемблер подразумевает в этом случае, что файл имеет расширение .asm.) На экране вы увидите следующее:

Turbo Assembler Version 4.1 Copyright (C) 1988, 1996 by Borland International Inc (1)

Assembling file:Lab1.asm (2)

Error messages: None (3)

Warning messages: None (4)

Remaining memory: 389K (5)

1 - Турбо ассемблер, версия 4.1; авторские права фирмы Borland, 1988, 1996 гг.; 2 - ассемблирован файл Lab1.asm; 3 - сообщения об ошибках: нет; 4 - предупреждающие сообщения: нет; 5 - остается памяти:389Кb

Если вы введете файл Lab1.asm в точности так, как показано, то вы не получите никаких предупреждающих сообщений или сообщений об ошибках. Если вы получаете такие сообщения, они появляются на экране наряду с номерами строк, указывающими строки, где содержатся ошибки. При получении сообщений об ошибках проверьте исходный код (текст) программы и убедитесь, что он выглядит точно так, как исходный код в нашем примере, а затем снова ассемблируйте программу.

Компоновка . После ассемблирования файлаLab1.asm вы продвинулись только на один шаг в процессе создания программы. Теперь, если вы скомпонуете только что полученный объектный код в выполняемый вид, вы сможете запустить программу.

Для компоновки программы используется программа TLINK, представляющая собой поставляемый вместе с Турбо ассемблером компоновщик. Введите командную строку:

TLINK Lab1

Здесь опять не требуется вводить расширение имени файла. Tlink по умолчанию предполагает, что этим расширением является расширение .obj. Когда компоновка завершится, компоновщик автоматически присвоит файлу с расширением .exe имя, совпадающее с именем вашего объектного файла (если вы не определили другое имя). При успешной компоновке на экране появляется сообщение:

Turbo Linker Version 3.0 Copyright (c) 1987, 1990 by by Borland International Inc.

В процессе компоновки могут возникнуть ошибки (в данной программе это маловероятно). Если вы получили сообщения об ошибках компоновки, (они выводятся на экран), измените исходный код программы так, чтобы он в точности соответствовал тексту программы в приведенном выше примере, а затем снова выполните ассемблирование и компоновку.

Запуск . Теперь программу можно запустить на выполнение. Для этого перейдите в каталог 'C:\Tasm\' наберите в командной строкеLab1 и нажмите ENTER. На экран выведется сообщение:

Это наиболее простой пример написания исходного кода и перевода его в исполняемый файл, где процессы ассемблирования и компоновки использованы без ключей. В приложении 1 и 2 к данной работе описаны ключи Tasm.exeиTlink.exe. изучите их внимательно, попробуйте проделать выше перечисленные процессы уже с использованием некоторых ключей.

Как, известно, в процесс написания программы большую часть времени занимает отладка. В состав пакет ассемблирования программ входит также файл Td.exe- "Турбоотладчик". Вкратце основы работы с Турбоотладчиком состоит в следующем: для запуска и программы уже готового .exe-файла наберите в командной строке

В появившемся окне Турбоотладчик сообщит о том, что загружена программа. Нажмите Enter, затемF5 и окно Турбоотладчика развернется во весь экран.

На экране вы увидите код своей программы в немного измененном варианте. Нажимая клавиши F8 илиF7, вы будете пошагово выполнять свою программу, при этом следите за содержанием окон Турбоотладчика.

Программа на ассемблере представляет собой совокупность блоков памяти, называемых сегментами памяти. Программа может состоять из одного или нескольких таких блоков-сегментов. Каждый сегмент содержит совокупность предложений языка, каждое из которых занимает отдельную строку кода программы.

Предложения ассемблера бывают четырех типов:

команды или инструкции. представляющие собой символические аналоги машинных команд. В процессе трансляции инструкции ассемблера преобразуются в соответствующие команды системы команд микропроцессора;

макрокоманды — оформляемые определенным образом предложения текста программы, замещаемые во время трансляции другими предложениями;

директивы. являющиеся указанием транслятору ассемблера на выполнение некоторых действий. У директив нет аналогов в машинном представлении;

строки комментариев. содержащие любые символы, в том числе и буквы русского алфавита. Комментарии игнорируются транслятором.

Для простых программ, содержащих по одному сегменту для кода, данных и стека, хотелось бы упростить ее описание. Для этого в трансляторы MASM и TASM ввели возможность использования упрощенных директив сегментации. Но здесь возникла проблема, связанная с тем, что необходимо было как-то компенсировать невозможность напрямую управлять размещением и комбинированием сегментов. Для этого совместно с упрощенными директивами сегментации стали использовать директиву указания модели памяти MODEL, которая частично стала управлять размещением сегментов и выполнять функции директивы ASSUME (поэтому при использовании упрощенных директив сегментации директиву ASSUME можно не использовать). Эта директива связывает сегменты, которые в случае использования упрощенных директив сегментации имеют предопределенные имена, с сегментными регистрами (хотя явно инициализироватьds все равно придется).

Синтаксис директивы MODEL показан на рис. 2.

Рис. 2 Синтаксис директивы MODEL

Обязательным параметром директивы MODEL является модель памяти. Этот параметр определяет модель сегментации памяти для программного модуля. Предполагается, что программный модуль может иметь только определенные типы сегментов, которые определяются упомянутыми нами ранееупрощенными директивами описания сегментов. Эти директивы приведены в таблице 1.

Таблица 1. Упрощенные директивы определения сегмента

Компилятор TASM

Компилятор TASM. Отладчик Turbo Debugger.

Цель работы: Научиться использовать компилятор TASM и отладчик Turbo Debugger.

Необходимые сведения

Язык ассемблера – это специфический язык программирования со взаимно однозначным соответствием между его операторами и командами процессора. Язык ассемблера существует для каждого типа процессоров или целого семейства процессоров, поскольку команды на языке ассемблера должны иметь взаимно однозначное соответствие с системой машинных команд и должны быть согласованы с архитектурой компьютера.

Ассемблер – это программа, преобразовывающая исходные коды языка ассемблера в машинные команды. Ассемблер может создавать листинг программы с номерами строк, адресами памяти, исходными операторами и таблицей перекрестных ссылок символов и переменных, используемых в программе. Специальная программа – загрузчик (компоновщик)– позволяет собрать отдельные файлы, созданные ассемблером, в единую исполняемую программу.

Программа, написанная в кодах ассемблера, называется исходной программой, а ее преобразованный вид в команды микропроцессора – объектной программой или объектным модулем. Компоновщик позволяет создать исполняемый файл или исполняемый модуль. Отладчик – это программа, позволяющая отображать на экране значения необходимых переменных, получать состояния всех регистров и ячеек памяти при пошаговом исполнении программы, вносить изменения в программу, указывать точки останова и многое другое.

Обработка программ на языке ассемблера в MS - DOS состоит из следующих этапов:

    Создать с помощью текстового редактора файл с текстом програ м мы на языке ассемблера. Транслировать программу с помощью ассемблера TASM ; Скомпоновать программу с помощью компоновщика TLINK . Запустить программу на выполнение. Проверить результаты работы программы. В случае несоответствия необходимо найти ошибки с помощью отладчика Turbo Debugger

Рассмотрим детально каждый из этапов на примере простейшей программы, которая выводит на экран строку « Hello. world !» (без кавычек)

Для создания файла с текстом программы на языке ассемблера можно воспользоваться встроенным текстовым редактором в Far Manager. Комбинация клавиш Shift - F 4 позволяет создать новый файл для редактирования, при этом необходимо указать имя вновь создаваемого файла, например, Myprog. asm. (Расширение файла с программой или исходного файла обязательно должно быть asm ) Для редактирования уже существующего файла нужно навести на него курсор и нажать F 4. Сохранить изменения в файле – F 2, выйти из редактора – ESC. Также можно воспользоваться редактором БЛОКНОТ среды Windows. (Пуск/Программы/Стандартные/Блокнот)

В текстовом редакторе наберите строки следующей программы. Каждый оператор на отдельной строке.(Комментарии не обязательно)

Turbo assembler

Лабы по ассемблеру:

Компиляторы

Существует несколько пакетов для программирования на ассемблере.

Основными являются:
  1. Borland TASM 5.0 (Turbo Assembler);
  2. Microsoft MASM 6.1, 6.13. 7.0 (MS Macro Assembler);
  3. MASM32 7.0;
  4. FASM 1.20 (Flat Assembler);
  5. NASM.

1. Очень популярный в нашей стране ассемблер TASM. Изначально пятая версия задумывалась как дополнение к Borland C++ Builder 5.02, но затем была выделена в отдельный пакет.

2. MASM создан компанией MS. Преимущество этого компилятора в том, что количество приложений, написанных для него больше, чем для всех остальных.

3. Этому также способствует существование пакета MASM32 от других разработчиков, который включает в себя компилятор MASM, а также множество примеров, заголовочных файлов (что очень удобно, ведь для других асмов зачастую приходится вручную объявлять используемые функции), а также некоторые дополнительные приложения.

4. Молодой, но быстро развивающийся пакет FASM.

5. NASM разработан как бесплатная альтернатива TASM и MASM, но MASM сейчас и так бесплатный.

В настоящее время наибольшую популярность имеет пакет MASM32. Он разрабатывается независимыми разработчиками и постоянно обновляется. Очень много примеров и дополнительных инструментов.

MASM32 можно скачать:

Существует также замечательная программа-отладчик OllyDbg. позволяющая увидеть программу "изнутри" и выполнить её по шагам. OllyDbg - один из лучших дебаггеров для MS Windows. Производит анализ кода - отслеживает регистры, распознаёт процедуры, циклы, API-вызовы.

Сначала нужно выбрать нужную программу через меню File/Open. Появится множество окошек и ярлыков, а также одно чёрное окно, куда программа должна выводить результаты своей работы. Если программа ничего не выводит, то, соответственно, это окошко будет пустым. Да и пусть с ним, нам важно сосредоточиться на отладчике. Инструкции программы расположены в левом верхнем углу, а регистры процессора показаны в правом окне вверху. Начать пользоваться отладчиком, несмотря на его устрашающий вид, очень просто. Для выполнения программы по шагам достаточно воспользоваться клавишей F8. Если вы хотите перезапустить последнюю отлаженную программу, просто нажмите Ctrl+F2.

При изучении ассемблера пригодится также пакет Emu8086 v 2.57. Программа выполняет код на эмуляторе шаг за шагом и позволяет наблюдать изменение состояния регистров и флагов.

Turbo assembler

Разработка и отладка программ на языке Ассемблера Разработка и отладка программ на языке Ассемблера

Изучение языка ассемблера целесообразнее всего начать с разработки простой программы, например, такой:

Данная программа ничего не вычисляет и не обрабатывает, а всего лишь выводит на экран терминала строку с фразой "Начинаем!".

Чтобы создать такую программу и увидеть, как она работает, на компьютере должен быть установлен набор программ Turbo Assembler, позволяющий создавать из представленного исходного текста программы исполнимый файл, представляющий собой готовую программу, которую можно запускать на исполнение. Обычно такой набор программ расположен в каталоге TASM. Если на вашем компьютере такого набора нет его можно скачать здесь. Данный файл представляет собой архив, содержащий каталог, в котором находится требуемый набор программ. Разверните этот каталог на вашем компьютере в удобном для вас месте. Используя Блокнот создайте в этом каталоге файл, содержащий представленную программу и сохраните его с прозвольным именем и расширением asm.

Следует заметить, что при вводе исходного текста программы с клавиатуры можно использовать как прописные, так и строчные буквы: транслятор воспринимает их одинаково.

Содержимое строк достаточно вводить до точки с запятой, означающих начало комментария.

Прежде чем продолжить работу с программой внимательно прочтите следующее краткое описание того, как работает данная программа.

Программа содержит 18 строк-предложений языка ассемблера. Первое предложение с помощью оператора segment открывает сегмент команд программы. Сегменту дается произвольное имя text. В конце предложения после точки с запятой располагается комментарий. Предложение языка ассемблера может состоять из четырех полей: имени, оператора, операндов и комментария, располагаемых в перечисленном порядке. Не все поля обязательны; так, в предложении 1 есть только имя, оператор и комментарий, а операнды отсутствуют; предложение 3 включает все 4 компонента: имя begin, оператор (команда процессора) mov, операнды этой команды АХ и data и, наконец, после точки с запятой комментарий; в предложении 4 (и многих последующих) отсутствует имя.

Любая программа должна обязательно состоять из сегментов - без сегментов программ не бывает. Обычно в программе задаются три сегмента: команд, данных и стека. В сегменте команд располагается собственно программа, т. е. описание (с помощью команд процессора) последовательности требуемых действий. В сегменте данных описываются данные, с которыми должна работать программа; в нашем примере это строка текста. Назначение сегмента стека будет описано ниже.

В предложении 2 с помощью оператора assume сообщается ассемблеру (ассемблером называется программа-транслятор, преобразующая исходный текст программы в коды команд процессора), что сегментный регистр CS будет указывать на сегмент команд text, а сегментный регистр DS - на сегмент данных data. Сегментные регистры (а всего их в процессоре 4) играют очень важную роль. Когда программа загружается в память и становится известно, по каким адресам памяти она располагается, в сегментные регистры заносятся начальные адреса закрепленных за ними сегментов. В дальнейшем любые обращения к ячейкам программы осуществляются путем указания сегмента, в котором находится интересующая нас ячейка, а также номера того байта внутри сегмента, к которому мы хотим обратиться. Этот номер носит название относительного адреса или смещения. Транслятор должен знать заранее, через какие сегментные регистры будут адресоваться ячейки программы, и мы сообщаем ему об этом с помощью оператора assume (assume - предположим). При этом в регистр CS адрес начала сегмента будет загружен автоматически, а регистр DS нам придется инициализировать вручную. Обращение к стеку осуществляется особым образом, и ставить ему в соответствие сегментный регистр (конкретно - сегментный регистр SS) нет необходимости.

Первые два предложения программы служат для передачи служебной информации программе ассемблера. Ассемблер воспринимает и запоминает эту информацию и пользуется ею в своей дальнейшей работе. Однако в состав выполнимой программы, состоящей из машинных кодов, эти строки не попадут, так как процессору, выполняющему программу, они не нужны. Другими словами, операторы segment и assume не транслируются в машинные коды, а используются лишь самим ассемблером на этапе трансляции программы. Такие нетранслируемые операторы иногда называют псевдооператорами или директивами ассемблера в отличие от истинных операторов - команд языка.

Предложение 3, начинающееся с метки begin, является первой выполнимой строкой программы. Для того чтобы процессор знал, с какого предложения начать выполнять программу после ее загрузки в память, начальная метка программы указывается в качестве операнда самого последнего оператора программы end (см. предложение 18).

Начиная от точки входа программа выполняется строка за строкой точно в том порядке, в каком эти строки написаны программистом.

В предложениях 3 и 4 выполняется инициализация сегментного регистра DS. Сначала значение имени text (т. е. адрес сегмента text) загружается командой mov (от move - переместить) в регистр общего назначения процессора АХ, а затем из регистра' АХ переносится в регистр DS. Такая двухступенчатая операция нужна потому, что процессор в силу некоторых особенностей своей архитектуры не может выполнить команду непосредственной загрузки адреса в сегментный регистр. Приходится пользоваться регистром АХ в качестве "перевалочного пункта".

Предложения 5, 6 и 7 реализуют существо программы - вывод на экран строки текста. Делается это не непосредственно, а путем обращения к служебным программам операционной системы MS-DOS. Дело в том, что в составе команд процессора и, соответственно, операторов языка ассемблера нет команд вывода данных на экран (как и команд ввода с клавиатуры, записи в файл на диске и т. д.). Вывод даже одного символа на экран в действительности представляет собой довольно сложную операцию, для выполнения которой требуется длинная последовательность команд процессора. Конечно, эту последовательность команд можно было бы включить в нашу программу, однако гораздо проще обратиться за помощью к операционной системе. В состав DOS входит большое количество программ, осуществляющих стандартные и часто требуемые функции - вывод на экран и ввод с клавиатуры, запись в файл и чтение из файла, чтение или установка текущего времени, выделение или освобождение памяти и многие другие.

Для того чтобы обратиться к DOS, надо загрузить в регистр общего назначения АН номер требуемой функции, в другие регистры - исходные данные для выполнения этой функции, после чего выполнить команду int 2lh, (int - от interrupt - прерывание), которая передаст управление DOS. Вывод на экран строки текста можно осуществить с помощью различных функций DOS; мы воспользовались функцией 09h, которая требует, чтобы в регистре DX содержался адрес выводимой строки. В предложении 6 адрес строки mesg загружается в регистр DX, а в предложении 7 осуществляется вызов DOS.

В предложениях 5 и 7 указанные в тексте программы числа сопровождаются знаком h. Таким образом в языке ассемблера обозначаются шестнадцатеричные (далее - 16-ричные) числа, в отличие от десятичных, которые никакого завершающего знака не требуют.

После окончания работы программы DOS должна выполнить некоторые служебные действия. Надо освободить занимаемую нашей программой память, чтобы туда можно было загрузить следующую программу. Надо вызвать компонент операционной системы, который выведет на экран запрос DOS (как правило, в виде символа >, предваряемого именем текущего каталога) и будет ждать следующей команды оператора. Все эти действия выполняет функция DOS с номером 4Ch. Эта функция предполагает, что в регистре AL находится код завершения нашей программы, который она передаст DOS. Если программа завершилась успешно, код завершения должен быть равен нулю, поэтому в предложении 9 мы загружаем 0 в регистр AL и вызываем DOS уже знакомой нам командой int 21h. Поскольку выполняемая часть программы на этом закончилась, можно (и нужно) закрыть сегмент команд, что выполняется с помощью директивы ends (от end segment, конец сегмента), перед которой для наглядности обычно указывается имя закрываемого сегмента, в данном случае сегмента text.

Вслед за сегментом команд описывается сегмент данных. Он, как и сегмент команд, начинается директивой segment, предваряемой произвольным именем нашего сегмента, и заканчивается директивой ends. У нас в качестве данных выступает строка текста. Текстовые строки вводятся в программу с помощью директивы ассемблера db (от define byte, определить байт) и заключаются в апострофы или в кавычки. Для того чтобы в программе можно было обращаться к данным, поля данных, как правило, предваряются именами. В нашем случае таким именем является вполне произвольное обозначение mesg (от message, сообщение), с которого начинается предложение 13.

Выше, в предложении 6, мы через регистр DX передали DOS адрес начала выводимой на экран строки текста. Но как DOS определит, где эта строка закончилась? Хотя нам конец строки в программе отчетливо виден, однако в машинных кодах, из которых состоит выполнимая программа, он никак не отмечен, и DOS, выведя ча экран последний символ строки - восклицательный знак, продолжит вывод байтов памяти, расположенных за фразой "Начинаем!". Поэтому DOS следует передать информацию о том, где кончается строка текста. Некоторые функции DOS требуют указания в одном из регистров длины выводимой строки, однако функция 09h работает иначе. Она выводит текст до знака доллара ($), которым мы и завершили нашу фразу.

Сегмент стека, которому мы дали произвольное имя stk, начинается, как и остальные сегменты, оператором segment и заканчивается оператором ends. Стек представляет собой отдельный сегмент обычно небольшого объема, в котором просто резервируется определенное количество пустых байтов. Для выделения в программе группы байтов используется конструкция

db размер dup (заполнитель)

В нашем примере для стека выделено 256 байт, заполненных нулями.

Оператор segment, начинающий сегмент стека, имеет описатель stack. Указание этого обозначения приводит к тому, что при загрузке программы в память регистры процессора, используемые для работы со стеком, инициализируются системой должным образом. Конкретно, сегментный регистр стека SS будет настроен на начало сегмента стека, а указатель стека SP - на его конец (стек заполняется данными от конца к началу).

Последняя строка программы содержит директиву end, которая говорит программе ассемблера, что закончился вообще весь текст программы и больше ничего транслировать не нужно. В качестве операнда этой директивы, как уже отмечалось, обычно указывается точка входа в программу, т. е. адрес первой выполнимой программной строки. В нашем случае это метка begin.

Сопутствующий материал

Assembler: учебный курс

Генерация предупреждающих сообщений класса

xxx (эти же функции выполняют директивы WARN и NOWARN). Знак “-” означает “запретить генерацию сообщений класса xxx”. Знак “+” означает “разрешить генерацию сообщений класса xxx”. Классы предупреждающех сообщений обозначаются идентификатором из трех символов:

ALN — выравнивание сегмента в памяти;

ASS — подразумевается использование 16-разрядного сегмента;

BRK — требуются квадратные скобки;

ICG — неэффективная генерация кода;

LCO — переполнение счетчика адреса;

OPI — открытый блок условия IF;

OPP — открытая процедура;

OPS — открытый сегмент;

OVF — арифметическое переполнение;

PRO — запись в память в защищенном режиме требует переопределения регистра CS. Использование этого класса предупреждений имеет смысл при написании программ, работающих в защищенном режиме (под Windows). На уроке 16 обсуждался момент, связанный с тем, что в защищенном режиме запрещено производить запись в сегмент кода. Класс предупреждений PRO призван уже на стадии трансляции программы предупредить такого рода ошибки;

RES — предупреждение о резервируемом слове;

TPI — предупреждение о недопустимости в Turbo Pascal;

/W+ — разрешить все сообщения;

/W– — запретить все сообщения

Turbo assembler - это

turbo assembler это: Смотреть что такое "turbo assembler" в других словарях:

Turbo Assembler — ou TASM, est un assembleur pour la famille de processeurs x86, cree par Borland. Cette section est vide, insuffisamment detaillee ou incomplete. Votre aide est la bienvenue ! Voir aussi Turbo C Turbo Pascal Turbo Basic Assembleur Programme… … Wikipedia en Francais

Turbo Assembler — Der Turbo Assembler (TASM) ist ein Assembler fur x86er Prozessoren auf dem Betriebssystem MS DOS. Er wurde 1989 von der Firma Borland als Bestandteil von Turbo C 2.0 vorgestellt, war aber auch als separates Paket zusammen mit dem Turbo Linker… … Deutsch Wikipedia

Turbo Assembler — Infobox Software name = Turbo Assembler developer = Borland latest release version = latest release date = operating system = genre = Assembler license = website = The Turbo Assembler (TASM) mainly PC targeted assembler package was Borland s… … Wikipedia

Turbo Assembler — El Turbo Assembler (TASM), un paquete ensamblador principalmente destinado a la plataforma del IBM PC y sus compatibles. Fue la oferta de Borland en el mercado de herramientas de programacion en lenguaje ensamblador para la familia de los… … Wikipedia Espanol

Turbo Pascal — est un environnement de developpement integre pour le langage Pascal. Sa puissance et son prix « democratique » ont fait son succes dans les annees 1980 et 1990. Sommaire 1 Histoire 2 Versions 3 Voir aussi … Wikipedia en Francais

Turbo Basic — est un environnement de developpement integre qui edite par Borland International (la version 1.0 est parue en 1987 en France). Il permettait de programmer en langage BASIC. A l inverse des autres environnements BASIC de l epoque, qui etaient… … Wikipedia en Francais

Turbo C — est un environnement de developpement integre et un compilateur concu par Borland pour le langage de programmation C. Sommaire 1 Historique des versions 2 Notes et references 3 Voir aussi … Wikipedia en Francais

Turbo Prolog — Desarrollador Borland Informacion general Lanzamiento 1986 Ultima version estable 2.0 1988 … Wikipedia Espanol

Turbo C++ — Infobox Software name = Turbo C++ caption = collapsible = author = developer = Borland released = February 28, 1991 latest release version = 2006 latest release date = September 5, 2006 latest preview version = latest preview date = frequently… … Wikipedia

Turbo Debugger — In its prime, this tool provided a typical full screen debugger with powerful capabilities for watching the execution of instructions, monitoring machine registers, etc. Later versions are able to step through source code that includes debug… … Wikipedia

Turbo C — Для термина «Turbo» см. другие значения. Turbo C  интегрированная среда разработки и компилятор языка программирования Си от Borland. Впервые выпущен в 1987 году и отличался удобством своей интегрированной среды разработки, малым размером,… … Википедия