Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Характеристика




Запись команд (директив) в ассемблере

Форматы команд

Структура команд

Машинные команды ПК занимают от 1 до 6 байтов.

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

Команды могут иметь от 0 до 2 операндов, у большинства команд - один или два операнда. Размер операндов - байт или слово (редко ­двойное слово). Операнд может быть указан в самой команде (это т.н. непосредственный операнд), либо может находиться в одном из регистров ПК и тогда в команде указывается этот регистр, либо может находиться в ячейке памяти и тогда в команде тем или иным способом указывается ад­рес этой ячейки. Некоторые команды требуют, чтобы операнд находился в фиксированном месте (например, в регистре AX), тогда операнд явно не указывается в команде. Результат выполнения команды помещается в ре­гистр или ячейку памяти, из которого (которой), как правило, берется первый операнд.

В ПК форматы машинных команд достаточно разнообразны. Для примера приведем лишь основные форматы команд с двумя операндами.

1) Формат "регистр-регистр" (2байта)

2) Формат "регистр-память" (2-4 байта)

 

3) Формат " память - регистр " (2-4 байта)

 

4) Формат "регистр - непосредственный операнд" (3-4 байта)

 

5) Формат "память - непосредственный операнд" (3-6 байтов)

 

Если в команде используются два операнда, то первый операнд является приёмником, а второй – источником.

Помимо рассмотренных в ПК используются и другие форматы команды с двумя операндами; так, предусмотрен специальный формат для команд, один из операндов которых фиксирован (обычно это регистр AX). Имеют свои форматы и команды с другим числом операндов.

Минимальная единица текста программы на языке ассемблера — строка.

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

Директивы (псевдооператоры) предназначены для управления работой ассемблера, а не микропроцессора.

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

Строка в программе может состоять из 4-х полей: поле метки; поле оператора; поле операндов; поле комментарий. Только поле оператора (директивы) является обязательным, все остальные поля могут отсутствовать.

[метка:] мнемокод [операнды] [; комментарий]

[имя] директива [операнды] [; комментарий]

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

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

Поле метки

При определении метки или имени можно использовать буквы латинского алфавита (от a до z и от A до Z), цифры (от 0 до 9), а также символы подчеркивания “-”, “?” — вопросительный знак, символ “коммерческого at –” @ и символ доллара “$”.

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

Количество символов в метке (имени) ограничено 255 символами, но, по умолчанию, они различаются по первым 32 символам.

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

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

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

Поле оператора

В поле оператора записывается мнемоника команды или директивы. Это единственное обязательное поле в строке программы

Поле операндов

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

Поле комментарий

В это поле записывается любая информация, поясняющая выполняемые в программе действия. При ассемблировании эта информация игнорируется.

Комментарии можно использовать, например, при отладке программы для временного исключения из программы некоторых команд, оставив их в тексте. Для этого необходимо в качестве первого символа вставить в строку точку с запятой «;».

 

Глава 5 Этапы создания программы

Разработка программы на языке ассемблера (ЯА) включает несколько этапов:

1. Подготовка исходного текста программы.

2. Ассемблирование программы (получение объектного кода).

3. Компоновка программы (получение исполняемого файла программы).

4. Отладка программы.

1. Подготовка текста программы

Текст программы записывается на ЯА в один или несколько текстовых файлов. Имена файлов и их расширения могут быть любые, но принято использовать расширение *.asm, а для файлов с определениями констант и новых типов — расширение *.inc.

Эти файлы являются текстовыми, их можно подготовить с помощью стандартных редакторов текста.

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

2. Ассемблирование программы

Подготовленный текст программы на ЯА, т.е. в мнемокодах является исходной (.asm) программой. Задача программы ассемблер — преобразовать текст программы в машинные коды, которые могут быть выполнены микропроцессором. После ассемблирования получаем объектную программу, имеющую расширение *.obj

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

TASM prog1.asm

Эта форма вызова является минимально необходимой и часто, кроме имени текстового файла программы, необходимо перед именем файла задать так называемые “опции” (ключи).

3. Компоновка программы

Процесс объединения объектных модулей в один файл, а также определение адресов совместно используемых переменных или функций, осуществляется специальной программой — компоновщиком (например, TLINK)

Для получения выполняемого файла, имеющего расширение *.exe или *.com, нужно вызвать программу компоновщика, передав ей в качестве параметров в командной строке имена объектных файлов. В таком случае имя исполняемого файла определяется именем первого *.obj файла:

TLINK prog1.obj prog2.obj

4. Отладка программы

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

Отладчик DEBUG служит инструментом для поиска и исправления ошибок в программе.

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

Схема процесса разработки программы на ассемблере

 

Программы, реализующие шаги схемы, входят в состав программного пакета ассемблера. На рынке ассемблеров для микропроцессоров фирмы INTEL имеется два пакета:

- «Макроассемблер» MASM фирмы Microsoft.

- Turbo Assembler TASM фирмы Borland.

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

 

Глава 6 Основные группы команд и их краткая

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

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

Например, команда jcxz является сокращением от слов jump if cx is zero. Запомнить такую мнемонику проще, чем байт Е3, соответствующий коду этой команды в программе.

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

1. команды пересылки данных;

2. арифметические команды;

3. команды сдвига;

4. логические команды;

5. команды передачи управления;

6. команды ввода / вывода;

7. команды работы со строками;

8. дополнительные команды.

Команды пересылки данных широко применяются в микропроцессоре и позволяют пересылать данные из регистров микропроцессора в ячейки памяти и, наоборот, из регистра в регистр.

Арифметические команды позволяют проводить арифметические действия над данными, представленными в различном формате.

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

Логические команды также рассматривают свои операнды в качестве набора битов и позволяют выполнять над ними различные логические операции.

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

Команды ввода / вывода осуществляют обмен информацией между программой и внешними устройствами.

Команды работы со строками могут выполнять ряд элементарных действий (пересылка, сравнение и т.п.) с массивами данных.

 




Поделиться с друзьями:


Дата добавления: 2014-11-09; Просмотров: 577; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.033 сек.