Моделирование программы гипотетической машины с помощью макросредств

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

Министерство образования и науки РФ

Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования

Ижевский государственный технический университет имени М.Т. Калашникова

Кафедра "Вычислительная техника"

 

 

 

 

 

 

Курсовая работа

по курсу "Технологии программирования"

на тему: "Моделирование программы гипотетической машины с помощью макросредств"

 

 

 

Разработал

студент группы 4-36-1

Васильев А.С.

Принял

к.т.н., доцент кафедры ВТ

Гафаров Р.М.

 

 

 

Ижевск 2012

Оглавление

 

Разработка гипотетической машины

Введение

1. Постановка задачи

2. Разработка алгоритма

3. Алгоритм

4. Результаты

5. Листинг программы

Вывод

Литература

 

Разработка гипотетической машины

 

Цель работы

Целью данной курсовой работы является изучение стандартных макросредств ассемблера.

Задание

Разработать гипотетическую машину при помощи макросредств ассемблера.

Параметры машины:

. Формат слова: fw=24 бит

. Число регистров общего назначения: Nr=3

. Формат команд ГМ: Fk = {S1,S2; S,I}

. Количество операндов в команде: Nop=2

. Команды ГМ для обязательной реализации:

k1: команда сравнения 2-х символьных строк на >,=,<;

k2: команда обмена символьными строками;

k3: команда подсчета количества символов в символьной строке, ограниченной пробелами или знаками препинания.

. Решить задачу на гипотетической машине:

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

 

Введение

 

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

) Плохое понимание исходного текста программы, особенно по прошествии некоторого времени;

) Повторяемость незначительных или значительных участков программы;

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

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

Одним из этих средств являются макросредства. Под макросредствами понимают средства автоматизации программирования. Одним из принципов автоматизации является использование макросредств, когда пользуются одним и тем же текстом.

Таким образом, программирование на языке Ассемблера может быть значительно облегчено, если иметь возможность создавать "стенограмму" часто используемых операторов. Ассемблер обеспечивает эту возможность через макросредства. Макро представляют собой "суперкоманды", которые разгружают ассемблер от части лишней и часто повторяющейся работы по обработке ассемблерной программы. При помощи макросов программисты определяют блоки ассемблерных операторов, а затем, используя конкретные ссылки, указывают ассемблеру на включение соответствующих блоков в ассемблерную программу.

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

1. Постановка задачи

 

Решая задачу с помощью макросов сами макросы поместим в отдельный файл. Каждый макрос назовем так, чтобы его название было понятным, читаемым и выражало бы его функцию. Т.к. некоторые макросы используем неоднократно, а также названия некоторых меток в различных макросах повторяются, то все метки в каждом макросе объявим локальными с помощью LOCAL.

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

Поставленную задачу можно разбить на подзадачи и таким образом решить задачу будет более проще. Далее можно разбить подзадачи на еще более мелкие подзадачи, до тех пор пока их можно будет относительно легко решить.

Разобьем задачу на 3-и общие подзадачи:

1.Ввод строки

2.Обработка строки

3.Вывод строки

Первую и третью подзадачи решить относительно просто. А вторую задачу надо будет разбить на еще более простые подзадачи. Эти задачи должны будут выполнять сортировку слов, удаление лишних знаков препинания, определение и запись количества символов в словах. Т.о. разбили 2-ую подзадачу еще на три подзадачи.

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

Важным является представление строки в данной гипотетической машине. Мы будем представлять ее в следующем виде:

Первый байт - длина строки в байтах.

Второй и последующие байты - сама строка.

Последний байт - символ "$" как признак конца предложения.

Строка состоит максимум из 250 символов.

Не менее важным является организация трех регистров общего назначения.

Их можно определить в сегменте данных как некие переменные размером 8 бит, т.е. один байт. Следует отметить, что эти регистры будут использоваться в командах г?/p>