КАТЕГОРИИ: Архитектура-(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; Просмотров: 601; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |