Принцип работы компьютера пример разработки программы для гипотетического процессора

Обновлено: 05.07.2024

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

Сведения из теории:

А) Программный принцип работы компьютера

Главной особенностью работы ЭВМ является программный принцип работы. Принцип программы, хранимой в памяти компьютера, считается важнейшей идеей современной компьютерной архитектуры. Суть идеи заключается в том, что:

1) программа вычислений вводится в память ЭВМ и хранится в ней наравне с исходными числами;

2) команды, составляющие программу, представлены в числовом коде по форме ничем не отличающемся от чисел.

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

Программа состоит из набора команд, выполняющихся процессором автоматически в определенной последовательности. Конечной целью любой компьютерной программы является управление аппаратными средствами.

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

Программное и аппаратное обеспечение в компьютере работают в неразрывной связи и взаимодействии. Состав программного обеспечения вычислительной системы называется программной конфигурацией.

Информация, представленная в цифровой форме и обрабатываемая на компьютере, называется данными.

Уровни программной конфигурации компьютера:

На самом нижнем уровне находятся программы базовой системы ввода-вывода (BIOS). Их код записан в одной из микросхем компьютера. В момент включения компьютера эти программы выполняют проверку оборудования и обеспечивают простейшее взаимодействие с клавиатурой и монитором — клавиатура способна реагировать на нажатие некоторых клавиш, а на мониторе отображается информация о ходе запуска компьютера. Взаимодействие с человеком у программ этого уровня крайне ограниченно и возможно только в первые секунды после запуска компьютера.

Системные программы предназначены для работы со всеми устройствами компьютера. Они принадлежат к промежуточному уровню. Одни системные программы управляют работой устройств и используют программы нижнего уровня, а другие отвечают на запросы программ более высоких уровней. Те системные программы, которые непосредственно управляют устройствами, еще называют драйверами устройств. Люди работают с программами этого уровня только в тех сравнительно редких случаях, когда требуется настроить оборудование.

Служебные программы — это следующий уровень, программы которого предназначены для обслуживания компьютера, проверки его устройств, а также для настройки устройств и программ. Одни программы общаются с программами нижних уровней, другие передают данные программам верхнего уровня по их запросу. Степень взаимодействия с человеком определяется необходимостью. Например, мастера по наладке и настройке оборудования активно работают со служебными программами. Обычные пользователи используют их сравнительно редко.

Уровень прикладных программ — самый верхний. Здесь находятся программы, обслуживающие человека и удовлетворяющие его потребности. С их помощью выполняется набор и редактирование текстов, создание чертежей и иллюстраций, коммуникация между людьми, воспроизведение музыки и видео, а также многое другое. Сверху программы прикладного уровня общаются с человеком, а снизу — с программами нижележащих уровней. Прямого доступа к устройствам программы прикладного уровня, как правило, не имеют.

Первая вычислительная машина, способная хранить программу в своей памяти, разрабатывалась в 1943—1948 гг. в США под руководством Джона Мочли и Преснера Экерта.

В 1945 г. к работе был привлечен знаменитый математик Джон фон Нейман, который сформулировал общие принципы функционирования универсальных вычислительных устройств.

Первый компьютер, в котором были полностью реализованы эти принципы, был построен в 1949 г. английским исследователем Морисом Уилксом.

Б) Компьютерные модели

Человек в своей деятельности (научной, образовательной, технологической, художественной и т.д.) постоянно использует модели окружающего мира. Моделирование он использует для исследования объектов, процессов и явлений, что помогает человеку принимать обоснованные и продуманные решения, предвидеть последствия своей деятельности. Модели позволяют представить в наглядной форме объекты и процессы, недоступные для непосредственного восприятия. Понятие "модель" в обыденной жизни чаще ассоциируется с "макетом", имеющим внешнее и функциональное сходство с определённым объектом. Всё многообразие моделей отличает нечто общее, а именно - моделью может быть искусственно созданный человеком абстрактный или материальный объект.

Исходя из этого, предложим следующее определение модели:

Модель - это некий новый объект, который отражает существенные особенности изучаемого объекта, явления или процесса.

Выделим существенные черты понятия:

 модель-это, в свою очередь, тоже объект;
 модель может быть как материальной, так и мысленной;
 модель сохраняет существенные для данной модели черты моделируемого объекта. Иначе это модель другого объекта;
 модель может сохранять только некоторые черты моделируемого объекта, важные для данного исследования. Некоторые упрощения, огрубление неизбежно.

Анализ модели и наблюдение за ней позволяют познать суть реально существующего, более сложного объекта, процесса, явления, называемого прототипом или оригиналом.

Моделирование – это процесс построения моделей для исследования и изучения объектов, процессов, явлений.

1. Объекты Примеры м оделей объектов:

копии архитектурных сооружений;

копии художественные произведения;

модель атома водорода или солнечной системы;

модель, демонстрирующая одежду ит.д.

2. Явления Примеры моделей явлений:

модели физических явлений: грозового разряда, магнитных и электрических сил. ;

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

3. Процессы Примеры моделей процессов:

модель развития вселенной;

модели экономических процессов;

модели экологических процессов.

4. Поведение

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

Один и тот же объект в разных ситуациях, в разных науках может описываться различными моделями. Например, рассмотрим объект “человек” с точки зрения различных наук:

в механике человек – это материальная точка;

в химии – это объект, состоящий из различных химических веществ;

в биологии – это система, стремящаяся к самосохранению и т.д.

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

Компьютерная модель- это модель, реализованная средствами программной среды. Каждый, кто работал на компьютере, даже в качестве конечного пользователя, понимает, что решение проблемы начинается до прикосновения к компьютеру. В наше время всё успешнее становятся попытки создания высоко реалистичных компьютерных изображений. При использовании компьютера появляется возможность присваивать объектам свойства, не существующие в реальной действительности. При "смешивании" реальных и нереальных (некорректных с точки зрения окружающего мира) свойств (характеристик) объекта, его существование кажется вполне реальным. Этой важной и присущей только компьютерной графике возможностью смешивания реальных и вымышленных свойств пользуются:

 в кино и на телевидении (там, где необходимо создать фантастику, претендующую на реальность);
 в дизайнерских и издательских фирмах (чтобы показать, каким образом будут выглядеть предметы бытовой техники, одежды и т.д.);
 в рекламной деятельности (для создания различного рода рекламных роликов);

 в промышленности для представления заказчику разработки, ещё несуществующей в реальности, но существующей в документации;
 для создания игровых персонажей.

Моделирование- процесс создания модели, точнее, это исследование какого-либо объекта путём построения и изучения его модели.

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

Трёхмерные объекты - это объекты, которые имеют ширину, длину и высоту, т.е. при их построении необходимо оперировать с тремя осями координат. Выделим основные этапы моделирования трёхмерных объектов.

Практические задания

Задание № 1. Дать определение программы . Запишите: в чём заключается суть программного принципа работы компьютера.

Задание № 2. Выписать определение модели, моделирования. Выписать примеры моделей процессов.

Задание № 3. В таблицу внесите существующие модели для указанных объектов:

Исполнитель: студент гр. ЭАЗ-405(32) ______ Доровских А.О.

Руководитель КП: доцент _ Тараканов А.В.

2012 г.

1 ЗАДАНИЕ НА КУРСОВОЕ ПРОЕКТИРОВАНИЕ

2 ОПИСАНИЕ ИЛЛЮСТРИРОВАННОГО ПРОЦЕССОРА

3 ОПИСАНИЕ ОПЕРАЦИЙ

3.1 Блок-схема для операции №1

3.2 Блок-схема для операции №2

3.3 Блок-схема для операции №5

3.4 Блок-схема для операции №4

3.5 Блок-схема для операции №3min

3.6 Блок-схема для операции №6

3.7 Блок-схема для операции №7

4 ОПЕРАЦИЯ ЗАГРУЗКИ ПРОГРАММЫ

5 КОД ПРОГРАММЫ ДЛЯ ИЛЛЮСТРИРОВАННОГО ПРОЦЕССОРА

6 КАРТЫ ИНФОПОТОКОВ

8 БИБЛИОГРАФИЧЕСКИЙ СПИСОК

В настоящее время выпускается много моделей микропроцессоров с очень широким спектром параметров. Опишем гипотетический микропроцессор с архитектурой (т. е. структурой и языком), обладающей типичными чертами. Таким образом, мы сможем лучше осветить наиболее существенные аспекты функционирования микропроцессоров вообще, не вдаваясь в детали, характерные для тех или иных конкретных моделей. Хотя наш гипо­тетический микропроцессор и не выпускается промышленностью, он близок к некоторым реально существующим моделям, например к про­цессорам серии 8000 фирмы «Интел».

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

Первые четыре функции обычно выполняются одним функцио­нальным блоком — микропроцессором. Функции хранения инфор­мации осуществляет запоминающее устройство. В него могут входить как постоянная память, так и оперативная. Наконец, внешние ком­муникации осуществляют блоки, называемые портами ввода/вывода; Каждый такой порт является интерфейсом между микропроцессором и : каким-либо внешним устройством, например терминалом, внешней памятью для хранения больших объемов информации, контроллером технологических процессов или измерительным прибором.

Структура микрокомпьютера, состоящего из подобных блоков, приведена на рисунке 1. Взаимодействие блоков осуществляется при помощи шин трех типов: адресных шин, шин данных и управляющих шин.

Рисунок 1 - Структура микрокомпьютера с шинной организацией

1 ЗАДАНИЕ НА КУРСОВОЕ ПРОЕКТИРОВАНИЕ

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

Операция №1, сложение каких-либо двух элементов массива.

Операция №2, сложение элементов массива с константой.

Операция №5, переход к подпрограмме с передачей параметров через регистры.

Операция №4, сложение всех элементов массива.

Операция №3, нахождение наименьшего из элементов массива.

Операция №6, переход к подпрограмме с передачей параметров через стек.

Операция №7, умножение двух элементов массива.

В качестве дополнительной операции привести операцию загрузки программы.

Написать программу, выполняющую первую операцию, на языке Ассемблер для процессора i8086.

Для первой операции составить блок-схему алгоритма и карты инфопотоков.

2 ОПИСАНИЕ ИЛЛЮСТРИРОВАННОГО ПРОЦЕССОРА

Рисунок 2 - Структура гипотетического микропроцессора

Такие компоненты, как АЛУ, триггер переноса, общие регистры (или рабочие) и регистр адреса данных, служат для обработки данных. Все остальные компоненты, а именно дешифратор команд и блок управления и синхронизации (БУС), управляют работой других компонентов. Взаимодействие компонентов осуществляется по внутренним каналам передачи данных. Связь микропроцессора с другими блоками (ЗУ и устройствами ввода/вывода) происходит по адресной шине, шине данных и управляющей шине.

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

С другой стороны, адрес из 8 битов позволяет прямо адресовать только 2 8 = 256 ячеек памяти. Для реальных задач этого, конечно, мало. Поэтому для задания адреса памяти обычно используется 16 разрядов (два байта), и это позволяет прямо адресовать 2 16 =65 536 ячеек.

Информация к микропроцессору и от него передается по шинам. Шины данных в соответствии с длиной слова состоят из 8 линий, тогда как адресная шина состоит из 16 линий. Как показано на рисунке 2, адресная шина однонаправленная, а шина данных двунаправленная. Управляющая шина состоит из 5 линий, ведущих к блоку управления и синхронизации и 8 выходящих из него линий. По этим линиям передаются управляющие и тактирующие сигналы между компонентами микропроцессора и между микропроцессором и другими блоками микрокомпьютера.

Счетчик команд состоит из 16 битов и содержит адрес очередного байта команды, считываемого из памяти. Он автоматически увеличивается на единицу после чтения каждого байта. Существует связь между счетчиком команд и вершиной стека из 64 регистров. Одна из функций стека сохранение адреса возврата из подпрограммы. В стеке могут также сохраняться данные из верхних трех общих регистров и триггера переноса.

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

Регистр адреса данных содержит адрес операнда для команд, обращающихся к памяти, адрес порта для команд ввода/вывода или адрес следующей команды для команд перехода.

Очень полезная возможность, присутствующая во многих машинах, это косвенная адресация. Задание несуществующего регистра общего назначения 1111 используется как указание на то, что нужно обратиться к байту памяти по 16-разрядному адресу, который получается комбинированием содержимого двух фиксированных общих регистров. А именно, старшие 8 разрядов адреса из регистра 0001 (Н), а младшие 8 разрядов адреса изрегистра0010(L).

Последний компонент микропроцессора это блок управления и синхронизации (БУС). Он получает сигналы от дешифратора команд, который анализирует команду. Как уже упоминалось, в БУС из АЛУ и от триггера переноса поступают сигналы, по которым определяются условия для передач управления. Все остальные компоненты микропроцессора получают от БУС управляющие и синхронизирующие сигналы, необходимые для выполнения команды. С помощью 13-ти внешних линий реализуется интерфейс устройства управления с другими модулями микрокомпьютера.

3 ОПИСАНИЕ ОПЕРАЦИЙ

В начале программы определяются некоторые константы. Постоянная единица, хранится в регистре R Е и служит для различных, необходимых для нас операций. Например, упрощения увеличения или уменьшения счетчиков. Данные в оперативной памяти располагаются сразу после кода. Определим их в массиве как целые и положительные и однобайтовые числа.

Операция №1. Сложение каких-либо двух элементов массива. Регистр R 0 используется для хранения первого слагаемого, R 1 - второго. Результат сложения записывается в память после произведения двух элементов массива. Блок-схема представлена на рис. 3.

Операция №2. Сложение элементов массива с константой. Однобайтовая константа загружается в регистр R 3 , в регистре R 5 находится счётчик для цикла перебора всех элементов массива. Блок-схема представлена на рис. 4.

Операция №5. Через регистры подпрограмме передается четыре однобайтовых значения 01, 02, 03, 04. Результат в . Блок-схема представлена на рис. 5.

Операция №4. Сложение всех элементов массива. Результат суммирования будет хранится в паре регистров R 3 : R 4 регистр R5, используется как счётчик. Результат операции записывается в память. Блок-схема представлена на рис. 6.

Операция №3. Нахождение наименьшего из элементов массива.

В начале операции в регистре R 3 , записывается наибольшее однобайтовое значение (00 16 ), регистр R 5 , служит счётчиком. В конце операции в регистре R 3 будет находиться значение наименьшего элемента массива, которое записывается в память. Блок-схема представлена на рис. 7.

Операции №6, Через стек подпрограмме передается четыре однобайтовых значения 01, 02, 03, 04, эти значения в подпрограмме должны быть помещены соответственно в регистры R 3 , R 4 , R 5 , R 6 . Адрес возврата временно сохраняется в паре регистров R 7 : R 8 . Подпрограмма выполняет логическое умножение (АND) между регистрами R 3 и R 5 R 4 , и R 6 , результаты записываются в регистры R 5 и R 6 соответственно. Блок-схема представлена на рис. 8.

Операция №7. В регистр R3 помещается первый множитель, второй помещается в R4, результат умножения помещается в пару регистров R5:R6. Результат записывается в память. Блок-схема представлена на рис. 9.

3.1 Блок-схема для операции №1

Сложение каких-нибудь двух элементов массива.

3.2 Блок-схема для операции №2

Сложение элементов массива с константой.

Рисунок 4 - Блок-схема для операции №2

3.3 Блок-схема для операции №5

Переход к подпрограмме с передачей параметров через регистры.

Рисунок 5 - Блок-схема для операции №5

3.4 Блок-схема для операции №4

Сложение всех элементов массива.

3.5 Блок-схема для операции №3

Нахождение наименьшего из элементов массива

Рисунок 7 - Блок-схема для операции №3

3.6 Блок-схема для операции №6

Переход к подпрограмме с передачей параметров через стек

3.7 Блок-схема для операции №7

Умножение двух элементов массива.

4 ОПЕРАЦИЯ ЗАГРУЗКИ ПРОГРАММЫ

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

В R 1 : R 2 указатель на ячейку памяти куда производится запись, в R 3 :R 4 хранится конечный адрес.

Приведённый код программы для гипотетического микропроцессора, соответствует указанной выше блок-схеме загрузчика. Текст кода состоит из четырёх частей (столбцов, слева на право): адрес ячейки, машинный код операции, символический код операции и комментарии. Все числа в шестнадцатеричной системе счисления.

1.1.Задание на курсовое проектирование 3

1.2.Описание операций 4

2.Описание иллюстративного микропроцессора 5

3.Блок-схемы операций 8

3.1.Блок-схема операции №2 9

Рис. 2. Блок-схема операции №2 9

3.2.Блок-схема операции №5 10

3.3.Блок-схема операции №3 11

3.4.Блок-схема операции №4 12

3.5.Блок-схема операции №7 13

4.Код программы на машинном языке иллюстративного микропроцессора 14

5.Код программы для процессора Intel 8086 19

Код для процессора 8086 был написан на 2-х языках – языке ассемблера и языке Delphi (Pascal). Язык ассемблера выбран за его низкоуровневость и максимальное приближение к машинному коду процессора. При написании в нем программы, необходимо учесть все особенности работы процессора х86. В результате отметим, что принципы работы мало отличаются от нашего иллюстративного процессора. Отличия состоят в основном в том, что процессор 8086 – это очень продуманная система в плане программируемости, и написание программы на языке ассемблера было намного проще написания машинного кода иллюстративного процессора. Поддерживается аппаратное умножение, деление и множество других функций, во-первых, увеличивая тем самым быстродействие, во-вторых – упрощая жизнь разработчикам программного обеспечения. Паскаль и среда разработки Delphi выбрана потому, что это высокоэффективный язык, популярный в России, с эффективным компилятором и полной поддержкой 32-х битных процессоров семейства x86. 20

5.1.Язык ассемблера 21

5.2.Язык Паскаль 23

6. Карты инфопотоков для операции №5 24

7. Временные диаграммы обменов для операции №5 25

8. Выводы о проделанной работе 26

9. Библиографический список 27

Введение

Первые четыре функции обычно выполняются одним функцио­нальным блоком — микропроцессором.

В настоящее время выпускается много моделей микропроцессоров с очень широким спектром параметров. Мы не будем пытаться изучить их все, а опишем гипотетический микропроцессор с архитектурой (т. е. структурой и языком), обладающей типичными чертами. Таким образом, мы сможем лучше осветить наиболее существенные аспекты функционирования микропроцессоров вообще, не вдаваясь в детали, характерные для тех или иных конкретных моделей. Хотя наш гипо­тетический микропроцессор и не выпускается промышленностью, он близок к некоторым реально существующим моделям, например к про­цессорам серии 8000 фирмы «Intel»[1].

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

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

Задание на курсовое проектирование

Операция №2, сложение элементов массива с константой

Операция №3, нахождение наибольшего элемента массива

Операция №5, переход к подпрограмме с передачей параметров через регистры.

Операция №6, переход к подпрограмме с передачей параметров через стек

Операция №7, умножение 2-х элементов массива

В качестве дополнительной операции необходимо привести операцию загрузки программы. Также требуется создать программу, выполняющую те же операции, на языке ассемблера для процессора Intel 8086.

Для каждой операции должны быть приведены карты инфопотоков и временные диаграммы обменов.

Так как операцию №3 целесообразно оформить в виде подпрограммы, мы поменяем местами операции №3 и №5 при написании программы.
^

Описание операций

Для операции №3 Наибольший элемент массива будет сохранен в отведенную память.

Для операции №5 будет выбрана подпрограмма, выполняющая нахождение максимального элемента массива.

Операция №7, умножение 2-х элементов требует реализации программного алгоритма умножения для иллюстративного процессора (так как он не поддерживает умножение аппаратно). Данный алгоритм был оформлен в виде 3-й подпрограммы (см. разд. 8)[5]. Отметим, что при написании программы на языке ассемблера и языке паскаль для процессора семейства х86 алгоритм умножения не применялся, так как умножение поддерживается аппаратно данным семейством процессоров. Элементы массива выбираются произвольными.

Описание иллюстративного микропроцессора


Такие компоненты, как АЛУ, триггер переноса, общие ре­гистры (или рабочие) и регистр адреса данных, служат для обработки данных. Все остальные компоненты, а именно дешифратор команд и блок управления и синхронизации (БУС), управляют работой дру­гих компонентов. Взаимодействие компонентов осуществляется по внутренним каналам передачи данных. Связь микропроцессора с другими блоками (ЗУ и устройствами ввода/вывода) происходит по адресной шине, шине данных и управляющей шине.

Микропроцессор работает со словами длинной 1 байт. Поэтому мы будем предполагать, что все данные представляются именно такими словами.

С другой стороны, восьмибитный адрес позволяет прямо адресовать только 28 = 256 ячеек памяти. Для реальных задач этого мало. Поэтому для задания адреса памяти обычно используется 16 раз­рядов (два байта), и это позволяет прямо адресовать 216=65 536 яче­ек).

Информация к микропроцессору и от него передается по шинам. Шины данных в соответствии с длиной слова состоят из 8 линий, тогда как адресная шина состоит из 1- 6 линий. Адресная шина однонаправленная, а шина данных двунаправленная. Управляющая шина состоит из 5 линий, ведущих к блоку управления и синхронизации и 8 выходящих из него линий. По этим линиям пере­даются управляющие и тактирующие сигналы между компонентами микропроцессора и между микропроцессором и другими блоками микрокомпьютера.

Счетчик команд состоит из 16 бит и содержит адрес очередного байта команды, считываемого из памяти. Он автоматически увеличи­вается на единицу после чтения каждого байта. Существует связь между счетчиком команд и вершиной стека из 64 регистров. Одна из функций стека — сохранение адреса возврата из подпрограммы. В стеке могут также сохраняться данные из верхних трех общих регистров и триггера переноса.

В то время как слово данных всегда состоит из одного байта, коман­да может состоять из одного, двух или трех байтов. Первый байт лю­бой команды поступает из памяти по шине данных на регистр команд. Этот первый байт подается на вход дешифратора команд, который определяет ее смысл. В частности, дешифратор определяет, является ли команда однобайтовой, или она состоит из большего числа байтов. В последнем случае дополнительные байты передаются по шинам данных из памяти и принимаются или на регистр адреса данных, или на один из общих регистров.

Регистр адреса данных содержит адрес операнда для команд, об­ращающихся к памяти, адрес порта для команд ввода/вывода или ад­рес следующей команды для команд перехода.

Очень полезная возможность, присутствующая во многих маши­нах,— это косвенная адресация. Некоторый вариант косвенной адре­сации встроен и в наш микропроцессор). Задание несуществующего регистра общего назначения 1111 используется как указание на то, что нужно обратиться к байту памяти по 16-разрядному адресу, который получается комбинированием содержимого двух фиксированных об­щих регистров. А именно, старшие 8 разрядов адреса — из регистра 0001, а младшие 8 разрядов адреса — из регистра 0010 (в дальнейшем эти два регистра мы будем называть Н и L соответственно; Н — от слова Higher, высший, или старший, L — от Lower, низший, или младший).

Блок-схемы операций

Блок-схема операции №2

Да
На рис. 2 представлена блок-схема работы алгоритма задания №2 «сложение элементов массива с константой»

как работает процессор и языки программирования

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

Все описанное ниже как всегда упрощено для лучшего понимания.

Процессор и оперативная память

процессор управляет всеми устройствами и процессами в компьютере

Начнем вот с чего. Процессор не понимает русский, английский и другие языки. Он понимает числа, которые являются для него простыми командами, например: взять из памяти какие-то данные, добавить какие-то данные, сложить и т.д.

Процессор знает много команд и у каждой из них есть свой числовой код, например:


Совокупность всех команд и их числовых кодов, заложенных инженерами в процессор, называется архитектурой процессора. Это не аппаратная архитектура, а программная. Каждый производитель процессоров закладывает свою архитектуру. Это значит, что у одной и той же команды будут разные числовые коды на разных процессорах.


Понимаете прикол? Это значит, что вам нужно писать код для каждой архитектуры процессора. Жуть.

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

Получается такая картина: процессор обращается к оперативной памяти по адресу ячейки, оперативка возвращает ему команду из этой ячейки, процессор выполняет команду. А что дальше? А дальше процессор опять обращается к памяти (уже в другую ячейку), получает команду, выполняет ее и этот цикл повторяется снова и снова. То есть процессор все время выполняет какую-то заданную последовательность команд (числовых кодов). Эта последовательность команд называется машинным кодом.

как работает процессор и оперативная память

Ассемблер

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

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

процессор выполняет цепочка команд из числовых кодов команд

Согласитесь, что писать такой код очень сложно и легко запутаться. И это мы всего лишь написали код для решения простого уравнения. А теперь представьте, как написать ВКонтактик или Инстаграм.

Для упрощения жизни люди придумали инструмент Ассемблер и язык программирования на ассемблере.

Теперь все числовые коды команд процессора заменили на буквенные аббревиатуры, которые стало легче запоминать и читать.

Помните примеры кодов команд, которые были указаны выше? Теперь они выглядят так:

Также к названию команд были добавлены операнды (один или более), которые дают дополнительную информацию для выполнения команды.

пример кода на языке assembler

Что-то слишком много непонятного кода для такой пустяковой задачи, не правда ли?

Языки программирования высшего уровня

Помните в самом начале я писал, что каждый производитель процессоров делает свою архитектуру? И что у каждой архитектуры свои числовые коды команд?

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

Так стали появляться языки программирования высокого уровня.

Компилируемые языки

Первыми появились компилируемые языки программирования. К ним относится С, С++, Java и другие.

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

процессор не понимает код высшего порядка напрямую

Но процессор не поймет этой команды. Как мы помним, он знает и понимает только маленькие числовые команды. Поэтому компилятор языка C преобразует команду в ассемблированный код, а затем в машинный код, понятный процессору.

как работает компилятор

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

Затем компилятор делает исполняемый файл, который можно скинуть другу, чтобы он запустил вашу программу на своем компьютере.

компилятор языка C собрал исполняемый файл

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

Интерпретируемые языки

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

Вот тут в ход идут интерпретируемые языки программирования такие как: Python, PHP, Perl, Pascal и другие.

Это тоже языки высшего порядка, которые также упрощают написание кода. Но у них есть как минимум два преимущества перед компилируемыми языками:

как работает интерпретатор

Конечно, в этом решении есть свой недостаток. В силу своей гибкости интерпретируемые языки подвержены низкой скорости работы из-за большего числа инструкций, которые генерирует интерпретатор. Но это напрямую зависит от того, насколько круто написан интерпретатор.

Подытожим

Я надеюсь, что теперь вы лучше представляете, как работает ваш компьютер или смартфон и будете терпеливее относится к их затупам 🙂 Ведь железка не виновата, что тупит, а виноват горе-программист, который написал плохой код.

Читайте также: