Процесс трансляции программы на языке ассемблера в объектный код. Разработка интерфейса для взаимодействия и связи программ. Понятие компиляции. Структура модели микропроцессора. Пример структуры двухбайтной команды. Арифметическо-логичесткие операции.
Ассемблер (сборщик) - компьютерная программа, компилятор исходного текста программы, написанной на языке ассемблера, в программу на машинном языке. Так, многие компиляторы с языков программирования высокого уровня выдают результат в виде программы на языке ассемблера, которую в дальнейшем обрабатывает ассемблер. Также результатом ассемблирования может быть не исполнимый, а объектный модуль, содержащий разрозненные блоки машинного кода и данных программы, из которого (или из нескольких объектных модулей) в дальнейшем с помощью программы-компоновщика может быть скомпонован исполнимый файл. Процесс трансляции программы на языке ассемблера в объектный код принято называть ассемблированием.Разработать программную модель микропроцессора, разработать программу кросс отладки.Рассмотрим команды : 1)ADD регистр1, регистр2. -в регистр команд заносится значение 0000 -в промежуточные регистры заносятся значения регистра1, регистра2 -результат сложения заносится в регистр1 -в промежуточные регистры заносятся значения регистра1, регистра2С его помощью осуществляется перемещение по памяти, доступ и запись данных в память АЛУ - Арифметическо-логическое устройство - осуществляет действия над числами, такие как : сложение, побитовое И, побитовое ИЛИ, инверсия. Промежуточные регистры - при выполнении операций сложения, побитового И, побитового ИЛИ, инверсии два (или один) операнда заносятся в них для последующей передачи в АЛУ. Результат - после выполнения операций над операндами(если они есть), результат передается в регистр или в память по адресу, в зависимости от команды. В объекте полями будет выступать массив из 4-х элементов - 4 регистраВ качестве исходных данный программа использует объектный файл - файл, содержащий набор команд в виде байтов. Это значит, что следующий байт будет командой, а не адресом для записи в память. Для того, чтобы отладчик мог определить, какой байт будет означать адрес записи, а какой байт - команду или данные, используется байт-определитель, который принимает значение [00] - если следующий байт - адрес памяти, куда будут загружаться следующие команды, или [01] - если следующий байт - команда или данные. Пример содержимого объектного файла addload.bin (байт-определитель выделен) : В этой программе сначала задается адрес, по которому отладчик должен загружать данные в оперативную память. В результате выполнения программы (полного или пошагового) мы должны увидеть: - Состояние памяти в определенный момент выполнения программы ;Программа состоит из 6 классов:-Main Класс Main содержит 3 метода и 1 внутренний класс с конструктором. Поля класса :-S4AK - поле типа int, для реализации СЧАК Методы:-main - запускает методы класса GUI для прорисовки интерфейса Кнопка step запускаем метод execute класса Main 1 раз, а кнопка execute запускает в цикле, пока метод не вернет null значение.Пример 1 (команды ADD и MOV, файл addmov.bin)Пример 2(команды LOAD и ADD, addload.bin) ADDКак видно из тестовых примеров, данная часть курсового проекта работает в соответствии с заданной структурой ЭВМ. Следовательно. можно сделать вывод, что задание на проект выполнено успешно.1. Структура программы.switch(COMREG=(Temp>>4)) {case 0: MYRON.set(HALFBYTE>>2, MYALU.ADD((MYRON.get(HALFBYTE>>2)), MYRON.get(HALFBYTE&3))); break; //ADD R1 R2 case 1: MYRON.set(HALFBYTE>>2, MYALU.ADD(MYRON.get((HALFBYTE>>2)), (MYRAM.get(MYRAM.get( S4AK))))); break; // ADD R1 RAM case 2: MYRON.set(HALFBYTE>>2, MYALU.AND(MYRON.get((HALFBYTE>>2)), MYRON.get((HALFBYTE&3)))); break; // AND case 3: MYRON.set(HALFBYTE>>2, MYALU.OR(MYRON.get((HALFBYTE>>2)), MYRON.get((HALFBYTE&3)))); break; // MOV case 6: MYRON.set(HALFBYTE>>2, (MYRAM.get(MYRAM.
План
Содержание
Введение
1. Постановка задачи
2. Анализ набора команд
3. Анализ структуры микропроцессора и выбор моделирующих переменных
4. Описание входных и выходных данных
5. Разработка программы (алгоритм, логика программы)
6. Описание программы
7. Отладка и тестирование
Библиографический список
Приложения
Введение
Ассемблер (сборщик) - компьютерная программа, компилятор исходного текста программы, написанной на языке ассемблера, в программу на машинном языке.
Ассемблирование может быть не первым и не последним этапом на пути получения исполнимого модуля программы. Так, многие компиляторы с языков программирования высокого уровня выдают результат в виде программы на языке ассемблера, которую в дальнейшем обрабатывает ассемблер. Также результатом ассемблирования может быть не исполнимый, а объектный модуль, содержащий разрозненные блоки машинного кода и данных программы, из которого (или из нескольких объектных модулей) в дальнейшем с помощью программы-компоновщика может быть скомпонован исполнимый файл.
Процесс трансляции программы на языке ассемблера в объектный код принято называть ассемблированием. В отличие от компилирования, ассемблирование - более или менее однозначный и обратимый процесс. В языке ассемблера каждой мнемонике соответствует одна машинная инструкция, в то время как в языках программирования высокого уровня за каждым выражением может скрываться большое количество различных инструкций. В принципе, это деление достаточно условно, поэтому иногда трансляцию ассемблерных программ также называют компиляцией. После ассемблирования полученный объектный код понятен для процессора и успешно им выполняется.
Курсовой проект посвящен разработке программной модели процессора. Он делится на 3 части : разработка программы ассемблера, которая из текстового набора команд будет генерировать объектный код, понятный процессору; разработка программы отладчика, которая непосредственно выполняет команды, изложенные в объектном коде; разработка интерфейса для удобного взаимодействия и связи вышеупомянутых программ.
Данный вариант курсового проекта посвящен разработке программы-отладчика, использующую некоторую систему команд. Программа отладчик непосредственно выполняет команды, написанные на языке Ассемблер и транслированные в объектный код. Предполагается, что программа-ассемблер, генерирующая объектный файл, уже разработана и производит трансляцию корректно.
Вывод
Пример 2(команды LOAD и ADD, addload.bin)
ORG 11h;
LOAD A, 16h;
ADD A, 16h;
ORG 16h;
DATA 07h;
END;
Объектный файл :Как видно из тестовых примеров, данная часть курсового проекта работает в соответствии с заданной структурой ЭВМ. Следовательно. можно сделать вывод, что задание на проект выполнено успешно.
Однако, несмотря на то, что результаты работы ЭВМ оказались положительными, она существенно отличается от реальных ЭВМ не только структурой, но и потому, что программист, в процессе написания программы применил некоторые методы, недоступные для реализации в реальных ЭВМ, что упростило структуру программы.
Следует заметить, что при программировании реальных процессоров и ЭВМ, средства программиста ограничиваются. Этот недостаток необходимо преодолевать творческим подходом и нестандартным видением задачи.