Учебный эмулятор процессора Toycomp
Рассмотрение основных принципов организации вычислительной машины и программирования на языке очень простой модели ЭВМ. Использование эмулятора процессора Toycomp в учебном процессе студентами для облегчения трудоемкого программирования на машинных кодах.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | статья |
Язык | русский |
Дата добавления | 28.01.2019 |
Размер файла | 125,7 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Учебный эмулятор процессора TOYCOMP
Д.С. Дубинин
Национальный исследовательский
Иркутский государственный технический университет
Рассматриваются основные принципы организации вычислительной машины и программирования на языке очень простой модели ЭВМ. Это упрощенная машина под названием TOYCOMP (сокращенное от Toy Computer - игрушечный компьютер), существующая в виде имитирующей программы, написанной на языке высокого уровня и использующейся в учебном процессе студентами специальности «Вычислительные машины, комплексы, системы и сети» при изучении курса «Машинно-ориентированные языки».
Ключевые слова: эмулятор; машинная команда; машинный код.
TRAINING EMULATOR OF THE TOYCOMP PROCESSOR
D. Dubinin, National Research Irkutsk State Technical University
This paper discusses the basic organizational principles of a computing machine and programming on a language of a very simple model of a computer.
Key words: emulator, computer instruction, machine code.
Курс «Машинно-ориентированные языки» по учебному плану специальности ЭВМ изучается на восьмом семестре и предназначен для обучения программированию непосредственно в машинных кодах.
К этому моменту студенты уже являются программистами, привыкшими к языкам высокого уровня. И это не может не формировать определённый образ мышления и стиль программирования, мешающий воспринять этот курс.
Изначально разработка программного обеспечения осуществлялась при помощи набора кода программы непосредственно в машинных кодах, системе команд конкретной вычислительной машины, которая интерпретируется непосредственно микропроцессором вычислительной машины.
Для облегчения трудоемкого программирования на машинных кодах был разработан мнемонический язык низкого уровня - ассемблер. Основа любого ассемблера в том, чтобы одна мнемокоманда (текстовое обозначение) соответствовала команде (или микрокоманде) вычислительного устройства. Применение ассемблера привело к моментальному появлению различного рода программного обеспечения, но так как в 1950-1970-е гг. основными пользователями компьютеров являлись НИИ и военные учреждения, то и задачи они выполняли узконаправленные. Недостатки ассемблеров выявились при первых же модернизациях вычислительных устройств. Все, что было ранее разработано сотрудниками, приходилось заново переписывать для новых процессоров.
Со временем программистам пришла мысль - создать язык программирования, который имел бы синтаксис, независящий от машинных кодов. Вначале он напоминал, скорее макросы для ассемблера - какая-нибудь примитивная команда заменялась одной или несколькими командами процессора.
После дело дошло до создания интуитивно понятного синтаксиса, где например, арифметическая формула использовала синтаксические обозначения арифметических операции: сложений (+), вычитания (-), умножений (*), деления (/) и т. д.
С помощью таких языков писались несложные программы, где не требовалось быстродействие и хватало объема памяти компьютера. Можно сказать, что такое предназначение языкам высокого уровня сохранилось и до сих пор - все, что некритично к качеству, быстродействию и объему создается на языках высокого уровня.
В отличие от языков высокого уровня ассемблер имеет сложность в обучении, то есть для качественного изучения требуются время и практика. Вопрос нехватки квалифицированных кадров до сих пор стоит очень остро среди производителей программного обеспечения.
TOYCOMP разработана исключительно в педагогических целях. Перед изучением современной вычислительной машины целесообразно познакомиться с TOYCOMP. Замена современной ЭВМ типа INTEL на TOYCOMP позволяет не рассматривать многие сложные характеристики реальной машины, часто неудобные для начального освоения, и облегчает переход от принципов программирования на языках высокого уровня к языкам низкого уровня.
учебный эмулятор процессор toycomp
Рис. 1
Главная форма программы TOYCOMP состоит из устройства ввода, центрального процессора (ЦП) и снова устройства вывода (рис 1). На форме сплошными линиями обозначена пересылка данных, а пунктирными - пересылка сигналов управления. В центральный процессор входят регистр команд (РК), счетчик команд (СК) и регистр, именуемый аккумулятором (АК). Регистры представляют собой специальные ячейки памяти, обмен информацией с которыми происходит с большой скоростью. Регистры имеют такой же размер, что и ячейки основной памяти. Регистр-аккумулятор является источником исходных данных и местом записи результатов выполнения многих команд TOYCOMP. Образно говоря, аккумулятор - это место, где происходит большинство основных событий во время вычислительного процесса. Другие два регистра будут рассмотрены ниже.
Память TOYCOMP состоит из последовательности отдельных ячеек, именуемых словами. В каждом слове памяти может содержаться целое четырехзначное число со знаком в диапазоне от -9999 до 9999. Память TOYCOMP состоит из 100 слов, к которым можно обращаться, используя в качестве их адресов целые числа от 0 до 99.
В общем случае команду TOYCOMP можно представить следующим образом: ААВВ, где АА - код операции (КОП), а ВВ - операнд, определяющий адрес ячейки памяти. Коды операции в TOYCOMP являются двузначными десятичными числами, адреса операндов являются также двухразрядными десятичными числами. Программа в машинных кодах TOYCOMP представляет собой последовательность четырехразрядных десятичных чисел. Поскольку TOYCOMP - машина с запоминаемой программой, то в ней отсутствует средства определения, является ли то или иное слово памяти - командой или данными. Любое слово, выбираемое процессором для выполнения, рассматривается им как команда. Какое слово памяти выполнять процессору следующим, определяется кодом предыдущей операции и реализованной в машине логикой управления последовательностью выполнения команд.
00 Останов
01 Загрузка в аккумулятор (пересылка содержимого ячейки памяти в АК)
02 Запись в память (пересылка содержимого АК в ячейку памяти)
03 Сложение
04 Вычитание
05 Умножение
06 Деление
07 Ввод (обеспечивает ввод числа с клавиатуры в ячейку памяти)
08 Вывод (обеспечивает вывод на дисплей числа из ячейки памяти)
09 Переход безусловный
10 Переход, если больше нуля
11 Переход, если равно нулю
Команды для выполнения арифметических действий в TOYCOMP просты по своей структуре и похожи одна на другую. При их выполнении предполагается, что значение первого операнда находится в аккумуляторе. Вторым операндом всегда является адресуемая в команде ячейка памяти. Результат выполнения операции помещается в аккумулятор, что приводит к уничтожению его предыдущего содержимого.
Программы загружаются в память TOYCOMP, начиная с адреса 0, всегда являющегося адресом первой команды программы. Если в программе отсутствуют команды перехода, то выполнение команд будет происходить последовательно, одна за другой: после команды с адресом 0 будет выполнена команда с адресом 1, и т. д. до тех пор, пока не встретится команда с кодом 00 (останов).
В эмуляторе предусмотрены основные процессорные прерывания (рис. 2 и 3):
1. Деление на 0.
2. Некорректный ввод данных.
3. Неизвестная операция.
4. Переполнение.
Рис. 2. Деление на 0
Рис. 3. Неверная команда
Таблицы "Память" и "Программа" имеют одно и то же содержание и существуют для удобства просмотра хода выполнения программы и наблюдения за памятью (область данных слева, сама программа справа).
Для изменения значения ячейки памяти достаточно навести указатель мышки на нужное поле в таблице "Память" или в таблице "Программа" и нажать левую кнопку, откроется окошко ввода кода программы (рис. 4).
Рис. 4. Окно ввода кода
Нажатие кнопки "Старт" на главной форме программы установит "Регистр команд" и поместит указатель текущей выполняемой команды (00) в таблицу "Программа", так же кнопка переименуется в "ReBoot", и текущее состояние памяти эмулируемой машины будет сохранено.
При нажатии кнопки "ReBoot" сбрасываются регистры ЦП, из таблицы "Программа" удаляется указатель и восстанавливается состояние памяти, бывшее до запуска программы, кнопка переименуется в "Старт".
Кнопка "Шаг" позволит выполнить текущую операцию и установить счётчики команд на 1 выше или на указанную командой ячейку памяти.
Результаты. Программа уже используется для обучения студентов специальности ЭВМ в 2011 г. По ходу внедрения программы выявлялись отдельные недостатки, которые были успешно устранены. Преподаватели отмечают повышение эффективности обучения и облегчение процесса адаптации при переходе от программирования на ЯВУ к машинно-ориентированным языкам. У студентов появляется более полное представление о принципах программного управления, свойствах ячеек памяти. Пошаговая эмуляция позволяет наблюдать за выполнением команд программы и состоянием регистров.
Библиографический список
1. Абель П. Язык ассемблера для IBM PC и программирования. М.: Высш. шк., 1992. 447 с.
2. Гук М. Процессоры Intel: от 8086 до Pentium II: Архитектура. Интерфейс. Программирование. СПб.: Питер, 1998. 220 с.
Размещено на Allbest.ru
Подобные документы
Разработка программы эмулятора, которая должна имитировать рабочий цикл процессора для каждой команды. Анализ структуры микропроцессора. Моделирующие переменные. Мнемоника команд моделируемого процессора. Разработка структуры программы: классов, методов.
курсовая работа [156,8 K], добавлен 07.11.2012Принцип работы процессора (одномагистральная структура). Временные диаграммы, описывающие выполнение микроопераций для каждой команды. Структурная схема управляющего автомата на основе памяти с одним полем адреса. Описание процессора на языке Active VHDL.
курсовая работа [621,0 K], добавлен 24.09.2010Разработка модели процессора, выполняющего набор машинных команд. Структурная схема процессора (операционного и управляющего автоматов), анализ принципа работы. Содержательный алгоритм микропрограммы, синтез управляющего автомата на основе жесткой логики.
курсовая работа [871,9 K], добавлен 16.09.2010Общая характеристика программной модели процессора Intel x86. Анализ особенностей регистров общего назначения. Назначение команд безусловной передачи управления, рассмотрение функций. Знакомство с проблемами программирования на языке Ассемблера.
курсовая работа [1,6 M], добавлен 04.02.2014Характеристики элементов вычислительной машины для выполнения офисных операций. Выбор процессора, расчет его мощности на 60 GFLOPS. Выбор материнской платы, системы охлаждения для процессора, физической и оперативной памяти для хранения информации.
контрольная работа [43,6 K], добавлен 11.11.2015Изучение сущности, функций и основных задач центрального процессора - микросхемы, исполнителя машинных инструкций (кода программ), главной части аппаратного обеспечения компьютера или программируемого логического контроллера. Основные характеристики.
контрольная работа [18,5 K], добавлен 26.12.2010Управление взаимодействием всех устройств ЭВМ. История создания и развития производства процессора. Структура центрального процессора. Регистры общего назначения. Обозначения популярных моделей процессоров Intel и AMD. Команды центрального процессора.
реферат [111,2 K], добавлен 25.02.2015Первые машины вычисления. Осуществление прорыва в области вычислительной техники. Процессоры пятого поколения. Развитие микропроцессоров Intel Pentium и Intel Pro. Языки программирования высокого уровня. Внутренняя оперативная память процессора.
реферат [28,2 K], добавлен 07.10.2013Описание файловой системы Unix. Работа основных команд ls, cmp, comm, их ключей. Разработка программного продукта, работающего в среде Windows и представляющего собой эмулятора командного процессора операционной системы Unix. Выбор средств реализации.
курсовая работа [183,0 K], добавлен 29.04.2015Построение универсального лабораторного комплекса вычислительной техники. Создание программы-эмулятора контроля арифметическо-логического устройства с использованием остаточных кодов по модулю 3. Обоснование элементной базы; синтез основных узлов АЛУ.
курсовая работа [1,9 M], добавлен 01.10.2013