Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Направления 6.0501–«Компьютерная инженерия»Стр 1 из 2Следующая ⇒
МЕТОДИЧЕСКИЕ УКАЗАНИЯ к выполнению курсовой работы «Разработка системы программирования языка Ассемблер» п о д и с ц и п л и н е «Системное программирование» для студентов дневной и заочной форм обучения Направления 6.0501–«Компьютерная инженерия»
Севастополь УДК 681.3.06
Методические указания к выполнению курсовой работы «Разработка системы программирования языка Ассемблер» по дисциплине «Системное программирование» для студентов дневной и заочной форм обучения направления 6.0501 «Компьютерная инженерия» / Тертычный А.И., Шалимова Е.М. – Севастополь: Издательство СевНТУ, 2010.- 20с.
Целью методических указаний к выполнению курсовой работы является изложение основных теоретических положений разработки системного программного обеспечения. В методических указаниях представлены требования к транслятору с языка Ассемблер и универсальному отладчику – эмулятору. Кроме того, в методических указаниях приведены рекомендации по разработке алгоритмов и выбору структур данных, порядок выполнения курсовой работы, варианты заданий и содержание пояснительной записки.
Методические указания утверждены на заседании кафедры кибернетики и вычислительной техники, протокол № 4 от 25 ноября 2010 г.
Рецензент Апраксин Ю.К., канд. техн. наук, профессор.
Допущено учебно-методическим центром СевНТУ в качестве методических указаний.
Ответственный за выпуск заведующий кафедрой кибернетики и вычислительной техники профессор Скатков А.В.
СОДЕРЖАНИЕ
1. Основные теоретические положения……………………………………...4 1.1. Требования к транслятору………………………………………........8 1.2. Требования к отладчику…………………………………………......11 2.Задание на курсовое проектирование…………………………………......13 3. Порядок выполнения курсовой работы…………………………………..15 4. Варианты заданий……………………………………………………….....17 Библиографический список …………………………………………………20
ОСНОВНЫЕ ТЕОРЕТИЧЕСКИЕ ПОЛОЖЕНИЯ Программное обеспечение персональных ЭВМ (ПО) можно разделить на прикладное и специальное или системное. Прикладное ПО – это программы пользователей, системное – это операционные системы, компиляторы, трансляторы, отладчики, драйверы и т.д.
В рамках данной курсовой работы предполагается разработка системы программирования низкого уровня, включающей транслятор для подмножества команд языка Ассемблера IBM PC и универсальный отладчик-эмулятор. Любая программа, переводящая программу на исходном языке в выходную или объектную программу, называется транслятором. Если исходным языком является Ассемблер, то транслятор тоже часто называют ассемблером. Язык Ассемблер является машинно-ориентированным языком, другими словами, для разработки ассемблерных программ от программиста требуется знание организации всей системы компьютера: архитектуры, памяти, адресации и т.д. [1-7]. Абстрактная модель ЭВМ представлена на рисунке 1.
Рисунок 1– Абстрактная модель ЭВМ.
На рисунке 1 приняты следующие обозначения: ЦП – центральный процессор; УУ – устройство управления; АЛУ – арифметико-логическое устройство; передача данных; передача управляющих сигналов. Процессоры i8086/8088 имеют 14 регистров, каждый из которых имеет длину в одно слово. Длина машинного слова – 2 байта или 16 бит. Всем регистрам присвоены имена, которые и используются для обращения к регистрам. На рисунке 2 приведена классификация регистров. Р Е Г И С Т Р Ы Индексные Регистр Регистры SI,DI командного Указателя IP Рисунок 2– Классификация регистров процессора i8086/8088.
Регистры общего назначения состоят из двух 1-байтовых регистров, к которым можно обращаться независимо: АН, ВН, СН, DН (старшие байты) и AL, BL, CL, DL (младшие байты). Память компьютера представляется в виде линейной пронумерованной последовательности байт. Каждый байт имеет адрес (номер), т.е. байт – это минимальная адресуемая единица информации. Процессор может обращаться как к байтам, так и к словам памяти. Слово содержит два смежных байта памяти и может начинаться как с четного, так и нечетного адреса. При размещении слова в памяти байт с адресом, соответствующим адресу слова, содержит его младшую часть, а следующий байт содержит его старшую часть.
Логически память разбивается на сегменты размером по 64 Кбайт. Физический адрес памяти представляется 20-битовым числом и получается из двух 16-битных частей: адреса начала сегмента и смещения относительно начала сегмента. Физический адрес любого байта памяти формируется сложением следующих операндов:
+
При таком способе формирования адреса сегмент всегда начинается с адреса, кратного 16. Все пространство памяти делится на параграфы – области из 16 смежных байт, начиная с нулевого адреса. Очевидно, что любой сегмент может начинаться только на границе параграфа (четыре младших бита адреса – нулевые). В общем случае длина машинной команды от 1 до 6 байт. Код команды занимает первый байт, способ адресации задается во втором байте, в остальных байтах команды указываются непосредственные данные или адрес памяти, где эти данные находятся. Структура адресного байта представлена на рисунке 3.
. 7 6 5 4 3 2 1 0
Mod reg r/m
Рисунок 3 – Структура адресного байта
Байт кода команды содержит бит w, определяющий длину операндов команды: w=0 – размер операндов – байт; w=1 – размер операндов – слово. Однако, положение бита w для разных команд может быть различно. Например,
MOV AH,0 10110100 00000000
w
ADD BX,AX 00000011 11 011 000
Mod reg r/m D w
Кроме того, первый байт машинного кода может содержать бит d, который указывает направление потока данных между операндами. Если d=0, то поле reg определяет второй операнд, а поля mod и r/m – первый, иначе поле reg определяет первый операнд, а поля mod и r/m – второй. В последнем примере d=1 означает, что поле reg определяет первый операнд, а поля mod и r/m - второй. Операнды команды кодируется полями reg или mod,r/m. Поле reg предназначено для указания операнда с регистровым режимом адресации и содержит код регистра. Поле r/m предназначено для указания операнда с регистровым режимом адресации или с режимом адресации оперативной памяти. Если биты поля mod имеют значение 11, это значит, что операнд находится в регистре, т. е. биты r/m вместе с битом w определяют конкретный регистр. Кодирование регистров приведено в таблице 1. Если биты поля mod имеют значение 00,01,10 это значит, что операнд находится в оперативной памяти, т. е. поле r/m содержит код способа адресации оперативной памяти.
Таблица 1– Таблица соответствия кодов и мнемонических имен регистров
Значения битов mod имеют следующую интерпретацию: mod=00 – биты r/m задают абсолютный адрес, байт смещения отсутствует; mod=01 – биты r/m задают абсолютный адрес памяти и имеется один байт смещения; mod=10 – биты r/m задают абсолютный адрес памяти и имеется два байта смещения. Кодирование типов адресаций приведено в таблице 2.
Таблица 2– Таблица кодов адресации
В объектном коде команды, если используются операнды длиной в слово, сначала указывается младший байт, а затем – старший.
Например,
Байт байт байт байт
В командах с одним операндом или в командах, когда второй операнд является непосредственным значением, первый операнд кодируется полями mod и r/m, а поле reg содержит дополнительные 3 бита кода операции.
Например,
ТРЕБОВАНИЯ К ТРАНСЛЯТОРУ
Транслятор с языка Ассемблер должен:
– выявить ошибки в исходной программе; – распределить память; – перевести на машинный язык команды мнемокода и константы; – сформировать объектный код программы; – сформировать протокол трансляции (листинг).
Эти задачи трудно решить за один просмотр [3–7]. Поэтому, как правило, используются двухпросмотровые ассемблеры. При первом просмотре ассемблер просматривает исходную программу и строит таблицу идентификаторов, т.е. имен полей данных и меток, используемых в программе, и их относительных адресов. Кроме того, при первом проходе подсчитывается длина объектного кода, но сам объектный код не генерируется. При втором просмотре, ассемблер, используя таблицу идентификаторов, генерирует объектный код для каждой команды. В ходе трансляции ассемблер использует постоянные и временные таблицы. Постоянные таблицы составляются при разработке ассемблера, а временные создаются в ходе трансляции. Примером постоянной таблицы может служить таблица команд, в которой перечислены все мнемонические коды команд, типы операндов и их машинные эквиваленты, или таблица сообщений об ошибках, в которой фиксируется тип ошибки и соответствующий текст для вывода в файл-листинг. Множество и структура таблиц зависят от особенностей машины, языка Ассемблер и, наконец, от конкретной реализации транслятора. Однако, обязательной временной таблицей в любом ассемблере является таблица идентификаторов (имен), содержащая все имена, определенные в исходной программе и их характеристики: тип, значение, длину и т.д. Результатом работы транслятора с языка Ассемблер являются листинг и объектный код. Причем, если объектный код формируется только при отсутствии ошибок в тексте исходной программы, то листинг создается в любом случае. Листинг содержит не только исходный текст, но и, при отсутствии ошибок, машинный код команды в шестнадцатиричном формате, а также шестнадцатиричный адрес команды. Если же в исходном тексте команды есть ошибки, то, очевидно, объектный код команды не может быть сформирован, и листинг содержит подробную информацию об ошибках.
Общая схема обработки данных транслятором приведена на рисунке 4. Стрелками на рисунке представлены информационные и логические связи между блоками транслятора.
КОП – мнемонический код операции; ОП1 и ОП2 – операнды первый и второй соответственно.
ТРЕБОВАНИЯ К ОТЛАДЧИКУ
Современные системы программирования, как правило, имеют в своем составе специальные средства для облегчения процесса отладки программ, называемые отладчиками. Отладчики позволяют управлять процессом исполнения отлаживаемой программы и получать информацию о ее текущем состоянии или о содержимом памяти, изменять его, приостанавливать и вновь возобновлять исполнение программы. Все отладчики можно разделить на две группы: универсальные отладчики для работы на уровне машинного языка и специализированные отладчики, ориентированные на работу с определенным языком программирования высокого уровня. Очевидное достоинство универсальных отладчиков состоит в том, что с помощью одного и того же отладчика можно анализировать любую исполняемою программу. Недостатком же таких отладчиков является то, что от программиста требуется определенное знание машинного языка и способов адресации памяти. Основное достоинство отладчиков языков высокого уровня состоит в том, что ими гораздо легче пользоваться, т.к. доступ к переменной можно получить по ее имени, не задумываясь о том, с каким физическим адресом памяти она связана. Кроме того, использование отладчиков этого типа не требует знаний, в какие машинные коды преобразуется тот или иной оператор исходной программы. Недостатком же таких отладчиков является то, что они зависят от реализации самого языка высокого уровня. Как правило, они менее универсальны, поскольку не обеспечивают анализ машинных кодов, генерируемых компилятором. Как уже отмечалось выше, в настоящей работе рассматривается задача разработки универсального отладчика – эмулятора. На вход универсального отладчика поступает объектный код программы в заданном формате (см. п.2), и отладчик должен обеспечивать проверку правильности структуры объектного кода и выполнение команд программы. Кроме того, отладчик должен фиксировать ошибки исполнения команд (например, деление на ноль) и отслеживать недопустимые ссылки (передачу управления за пределы программы). Схема обработки данных отладчиком представлена на рисунке 5. Стрелками на рисунке обозначены информационные и логические связи между отдельными блоками отладчика.
Рисунок 5 – Схема обработки данных отладчиком.
ЗАДАНИЕ НА КУРСОВОЕ ПРОЕКТИРОВАНИЕ
Разработать программу транслятора для подмножества команд языка Ассемблера процессора i8086/8088. Транслируемая программа имеет следующий формат:
NAMESEG SEGMENT ORG выражение ... Область команд ... NAMEDATA DB DW ... Область данных ... NAMESEG ENDS END
В качестве признака завершения вычислений использовать команду INT 20H. В результате работы транслятора должны быть сформированы протокол трансляции и объектный код программы. Протокол трансляции представляется файлом-листингом, в котором содержится объектный код и мнемонический код команд, сообщения об ошибках, информация о результатах трансляции и т. д. Объектный код программы записывается в файл объектного кода и должен иметь следующий формат:
H запись-заголовок T тело E запись-конец
Здесь запись-заголовок имеет формат: H<Имя_сегмента><Длина_кода> запись-тело: T<адрес_кода><длина_кода><Код> запись-конец: E<точка_входа>
Коды команд и данных записать в виде строки, представляющей шестнадцатеричную константу.
Во всех вариантах реализовать обработку команды MOV и команд, определенных номером варианта (п. 4). Кроме того, во всех вариантах предусмотреть обработку директив:
1) SEGMENT, ENDS, END; 2) ORG, OFFSET; 3) DB; 4) DW.
Разработать среду отладчика-эмулятора, в которой предусмотреть следующие возможности: 1) загрузка объектного кода в память; 2) вывод состояния регистров, регистра флагов и заданной области памяти; 3) вывод реассемблированного текста программы; 4) пошаговое выполнение программы. Исходными данными для отладчика являются объектный код и значения сегментных регистров. Результат работы отладчика – состояния регистров и оперативной памяти после выполнения каждой команды, отображаемые на экране компьютера.
ВАРИАНТЫ ЗАДАНИЙ
Разрабатываемая программа (транслятор или отладчик) должна обрабатывать следующие команды: команду MOV и по одной команде из трех групп команд. Варианты заданий приведены в таблице 3, а группы команд – в таблице 4.
Команда MOV и команда первой группы должны иметь четыре формата:
КОП Р,Р КОП Р,НО КОП Р,ОП КОП ОП,Р где КОП – мнемонический код команды, Р – регистр общего назначения, НО – непосредственный операнд, ОП – оперативная память.
Режим адресации данных в оперативной памяти задан буквой: П – прямая, К – косвенная, И – индексная, Б – базовая, С – базово-индексная. В команде второй группы операндом может быть регистр общего назначения (Р) или данные в оперативной памяти (ОП). Режим обращения к оперативной памяти такой же, как для команды первой группы.
Например, в варианте 45 задано следующее множество команд:
MOV Р,Р MOV Р,НО MOV Р,ОП(базовая) MOV ОП(базовая),Р ADD Р,Р ADD Р,НО ADD Р,ОП(базовая) ADD ОП(базовая),Р MUL ОП(базовая) JB ссылка INT 21H
Таблица 3 – Варианты заданий
Таблица 4 – Группы команд
БИБЛИОГРАФИЧЕСКИЙ СПИСОК
1. Абель П. Ассемблер. Язык и программирование для IBM PC / П. Абель. – Минск: КОРОНА-Век, 2009. – 736с. 2. Дао Л. Программирование микропроцессора 8088 / Л. Дао – М.: Мир, 1988.– 355с. 3. Бек Л. Введение в системное программирование / Л. Бек – М.: Мир, 1988. – 448c. 4. Пильщиков В.Н. Программирование на языке Ассемблера IBM PC/ В.Н.Пильщиков. – М.: Диалог – МИФИ, 2001. – 288 с. 5. Донован Дж. Системное программирование / Дж. Донован. –М.: Мир,1975.– 540c. 6. Баррон Д. Ассемблеры и загрузчики / Д. Баррон – М.: Мир, 1974. – 74c. 7. Лебедев В. Н. Введение в системы программирования / В.Н.Лебедев. – М.: Статистика, 1975. – 311с.
Заказ №_______от «___»________2010 ____Тираж_________экз. Изд-во СевНТУ
МЕТОДИЧЕСКИЕ УКАЗАНИЯ к выполнению курсовой работы «Разработка системы программирования языка Ассемблер» п о д и с ц и п л и н е «Системное программирование» для студентов дневной и заочной форм обучения направления 6.0501–«Компьютерная инженерия»
Севастополь УДК 681.3.06
Методические указания к выполнению курсовой работы «Разработка системы программирования языка Ассемблер» по дисциплине «Системное программирование» для студентов дневной и заочной форм обучения направления 6.0501 «Компьютерная инженерия» / Тертычный А.И., Шалимова Е.М. – Севастополь: Издательство СевНТУ, 2010.- 20с.
Целью методических указаний к выполнению курсовой работы является изложение основных теоретических положений разработки системного программного обеспечения. В методических указаниях представлены требования к транслятору с языка Ассемблер и универсальному отладчику – эмулятору. Кроме того, в методических указаниях приведены рекомендации по разработке алгоритмов и выбору структур данных, порядок выполнения курсовой работы, варианты заданий и содержание пояснительной записки.
Методические указания утверждены на заседании кафедры кибернетики и вычислительной техники, протокол № 4 от 25 ноября 2010 г.
Рецензент Апраксин Ю.К., канд. техн. наук, профессор.
Допущено учебно-методическим центром СевНТУ в качестве методических указаний.
Ответственный за выпуск заведующий кафедрой кибернетики и вычислительной техники профессор Скатков А.В.
СОДЕРЖАНИЕ
1. Основные теоретические положения……………………………………...4 1.1. Требования к транслятору………………………………………........8 1.2. Требования к отладчику…………………………………………......11 2.Задание на курсовое проектирование…………………………………......13 3. Порядок выполнения курсовой работы…………………………………..15 4. Варианты заданий……………………………………………………….....17 Библиографический список …………………………………………………20
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2017-01-23; просмотров: 326; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.145.166.7 (0.179 с.) |