Министерство Образования и Науки Украины
Севастопольский Национальный Технический Университет
Кафедра кибернетики и вычислительной техники
Пояснительная записка
к курсовому проекту
«Программная модель вычислительной системы. Эмулятор»
по дисциплине «Программирование»
Выполнил: студент группы М-22д
Маслов В.О.
Проверил: Смагина А.О.
Севастополь 2010
Содержание
Введение
1.Постановка задачи
2.Описание входных и выходных данных
.Разработка алгоритма
.Разработка эмулятора
.Отладка и тестирование
Заключение
Библиографический список
Приложение
Введение
В настоящее время в связи с бурным развитием компьютерных технологий, все большее предпочтение среди программистов получают языки высокого уровня; однако, во многих случаях, программы, написанные на таких языках, теряют в быстродействии по сравнению с машинно-ориентированными языками (ассемблерами), а размер программы, написанной на языке высокого уровня почти всегда превышает (причем значительно) размер программы, написанной на ассемблере. Таким образом, для написания быстродействующих компактных программ (например, драйверов, компьютерных вирусов, резидентных программ и т. п.) следует использовать языки низкого уровня. Несмотря на развитие языков программирования высокого уровня, ассемблер нельзя назвать мертвым, изжившим себя языком, так как каким бы хорошим ни был оптимизирующий компилятор, он не заменит хорошего программиста на ассемблере; более того, ассемблер часто используется именно там, где необходимо обеспечить максимальное быстродействие или работу на «машинном» уровне.
Эмулятор - это программа, позволяющая запускать и отлаживать программы, созданные для оборудования, отличного от стандартного ПК. Отладчик содержит в своём составе процедуры моделирования операций, выполняемых в ходе функционирования.
1.Постановка задачи
Целью разрабатываемого курсового проекта, является изучение внутреннего устройства ЭВМ с точки зрения программиста. В процессе выполнения проекта необходимо создать кросс-эмулятор - программную модель ЭВМ с заданной архитектурой.
Задана структура микропроцессорной системы (№3):
Объем оперативной памяти - 4096 байт.
Команды имеют длину один или два байта. Биты 0-3 первого байта содержат код команды в соответствии с таблицей команд. Биты 4-7 и второй байт используются для здания адреса памяти, где находится операнд или константа.
Арифметические и логические операции выполняются над операндом, находящемся в памяти и верхним элементом стека. Результат выполнения операции в память.
Список команд для структуры №3 :
В соответствии с заданием, длина объектного кода команды составляет один или два байта, формат команды схематически изображен на следующем рисунке:
0123456701234567Код операцииАдресАдресБайт № 1Байт № 2Рисунок 1 - изображение формата команды
2.Описание входных и выходных данных
Входные данные
Входными данными для эмулятора является объектный файл, сгенерированный ассемблером. Объектный файл содержит программу и указания эмулятору, как необходимо ее загружать. Формат объектного файла «признак-байт».
Программа на ассемблере помимо команд процессора содержит также две специальные директивы: ORG - указание на адрес в памяти, куда необходимо загружать последующие команды, и DATA - задание константы. Чтобы эмулятор мог отличить их друг от друга, каждая команда имеет свой байт-признак, указывающий ее тип:
- адрес; ADDRESS
- команда; COMMAND
- данные; DATA
Например: 01 10 02 E5 02 23 01 20 03 D2 означает, что начиная с адреса 10 идут 2 команды E5 23, а затем с адреса 20 идут данные D2.
Выходные данные
Выходными данными является вывод в окно терминала текущего состояния элементов стека(R0, R1, R2, R3, R4, R5, R6, R7), PC(счетчик адреса команд), rgCOM(регистр команд), значение флагов(ноль, отрицательный, переполнение) и текущее состояния ячеек оперативной памяти.
3.Разработка алгоритма
1.Открываем поток чтения из объектного файла, сгенерированного транслятором.
2.В цикле читаем из файла по два байта. В зависимости от первого байта, который является либо признаком адреса, либо признаком данных, второй байт используем по назначению: если первый байт является признаком адреса, то начинаем с запоминания этого адреса, а если первый байт является признаком данных, то помещаем в текущую ячейку памяти.
Предметы
Актуальные Курсовые работы (Теория) по программному обеспечению, программированию