Меню

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

Компьютерная программа

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

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

Программа — данные, предназначенные для управления кон­кретными компонентами системы обработки ин­формации в целях реализации определённого ал­горитма.

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

Содержание

Создание программ

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

В системном программировании существует более формальное определение [источник не указан 1311 дней] программы как размещённых в оперативной памяти компьютера данных и машинных кодов, исполняемых процессором для достижения некоторой цели. Здесь подчёркиваются две особенности: нахождение программы в памяти и её исполнение процессором.

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

Запись исходных текстов программ при помощи языков программирования облегчает понимание и редактирование человеком. Этому, в частности, помогают комментарии, допустимые в синтаксисе большинства языков. Для выполнения на компьютере готовый текст программы преобразуется (компилируется) в машинный код.

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

Интерпретируемые программы, для которых как правило не применяется процесс компиляции и которые интерпретируются операционный системой или специальными программами-интерпретаторами, называются скриптами или «сценариями».

Исходные тексты компьютерных программ в большинстве языков программирования состоят из списка инструкций, точно описывающих заложенный алгоритм. Подобный подход в программировании называется императивным. Однако применяются и другие методологии программирования. Например, описание исходных и требуемых характеристик обрабатываемых данных и предоставление выбора подходящего алгоритма решения специализированной программе-интерпретатору — такой подход называется декларативным программированием. К декларативному программированию относятся функциональное и логическое, а также менее распространённые виды программирования.

Использование программ

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

Правовые аспекты

Программы с общедоступными исходными текстами называются открытыми.

Компьютерные программы в большинстве стран являются объектами авторского права. В некоторых странах компьютерные программы могут защищаться патентами. Авторское и некоторые другие [какие?] права интеллектуальной собственности позволяют ограничивать доступ к исходным текстам программ.

помогите основные понятия информатики

Компью́терная програ́мма — последовательность инструкций, предназначенная для исполнения устройством управления вычислительной машины. Чаще всего образ программы хранится в виде исполняемого модуля (отдельного файла или группы файлов) . Из этого образа, находящегося как правило на диске, исполняемая программа в оперативной памяти может быть построена программным загрузчиком. В зависимости от контекста, рассматриваемый термин может относиться также и к исходным текстам программы. ДАЛЕЕ СМОТРИ: http://ru.wikipedia.org/wiki/Компьютерная_программа

Команда в вычислительной технике и программировании:
элементарная инструкция, директива как элемент типичного языка программирования, командного интерфейса различных программ и операционных систем (см. «команда (программирование)» ) и т. п. ; см. также «макрокоманда» ;
элементарное действие, операция, выполняемые вычислительным устройством (см. также «микрокоманда») ;

Языки высокого и низкого уровня
Машинный код

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

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

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

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

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

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

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

Компьютерная программа

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

Содержание

Закон РФ «О защите программ»

В Законах РФ «О защите программ и баз данных для ЭВМ» и «Законе об авторских и смежных правах» дано следующее определение компьютерных программ:

Программа для ЭВМ — это совокупность команд и данных, предназначенных для определенного функционирования ЭВМ.

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

Ошибки в программах для ЭВМ

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

Количество ошибок в программах обычно неизвестно. Процесс поиска и исправления ошибок называется отладкой программ на ЭВМ.

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

Отсутствие ошибок в программах могут дать только доказательства (Э.Дейкстра, Дисциплина программирования.)

Программирование

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

Запись исходных текстов программ при помощи языков программирования удобна для понимания и редактирования человеком. Этому, в частности, помогают комментарии, допустимые в синтаксисе большинства языков. Для выполнения на компьютере готовый текст программы преобразуется (компилируется) в машинный код.

Языки программирования

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

Интерпретация программ

Интерпретируемые программы, для которых как правило не применяется процесс компиляции и которые интерпретируются операционный системой или специальными программами-интерпретаторами, называются скриптами или «сценариями».

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

Пользователи программ

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

Защита прав потребителей

Пользователи программ для ЭВМ согласно Закону РФ «О защите прав потребителей» имеют общегражданские права на защиту своих прав при обнаружении дефектов в программах на ЭВМ — права на замену программ без дефектов либо на возврат денег за приобретение дефектной продукции.

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

Основные элементы ЭВМ их назначение и взаимодействие

Типовая ЭВМ состоит из пяти основных элементов:

  1. Устройство ввода – предназначено для ввода информации или управления ЭВМ от внешних устройств (например, клавиатура, мышь).
  2. Микропроцессор (МП) – центральный процессор – это устройство управления всей ЭВМ и выполнения арифметических и логических операций.
  3. Постоянное запоминающее устройство (ПЗУ). В нашем случае предназначено для хранения исполненных ЭВМ программ.
  4. Оперативное запоминающее устройство (ОЗУ) – предназначено для временного хранения данных.

И ПЗУ и ОЗУ представлены в виде множества локализованных ячеек памяти. Размер ячейки – это количество БИТ информации, которую можно поместить в ячейку памяти или прочитать из нее.

  1. Устройство вывода — предназначенного для передачи данных и управления внешними по отношению к ЭВМ устройствами (экран монитора, принтеры и т.д.)

Для организации взаимодействия и управления всеми устройствами ЭВМ в нее включены три шины:

А) шина адреса (ША) – выбирает (указывает) ячейку памяти или адрес портов ввода-вывода. В зависимости от количества ячеек памяти и устройства ввода-вывода (УВВ) ША бывают 16, 32, 64 и т.д. разрядов.

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

В) шина данных (ШД) – является двунаправленной и служит для передачи данных в МП или из него.

Пример типовой процедуры в ЭВМ.

Рассмотрим пример типовой процедуры в ЭВМ:

1. Нажатие клавиши «А».

2. Размещение буквы «А» в памяти.

Читайте также:  Датчики давления масла 417 двигатель

3. Воспроизведение буквы «А» на экране дисплея.

Текущими командами в ПЗУ являются:

— Ввести (INPUT) данные через порт 1

— Разместить (STORE) данные, поступающие из порта 1 в ячейку памяти с адресом 200.

— Вывести данные (OUTPUT) через порт 10.

Проследим все этапы выполнения этой программы.

Этап №1: МП выставляет адрес 100 на ША. Линия управления активизирует ввод считывания из интегральной схемы программной памяти.

Этап №2: Программная память выставляет первую программу (INPUT) на шину данных (ШД), а МП принимает эту кодированную информацию. Это сообщение помещается в регистр команд и МП декодирует (интерпретирует) это сообщение. В результате интерпретации он определяет, что это за команда и что ей нужен операнд.

Этап №3: МП выставляет на ША адрес 101, линией управления активизируется вход считывания из программной памяти.

Этап №4: Программная память помещает операнд (Из порта 1) на ШД. Этот операнд находится в ячейке памяти 101, кодированное сообщение (адрес порта 1) взято на ШД и помещено в регистр команд. Теперь МП декодирует полную команду (ввести данные, поступающие из порта 1).

Этап №5: МП побуждает открыть Порт 1 посредством ША и линии управления устройствами ввода. Кодированная буква «А» из Порта 1 по ШД передается в МП и размещается в аккумуляторе.

Примечание: МП все время действует в последовательности:.

Этап №6: МП выставляет на ША адрес ячейки памяти 102 и активизирует вход считывания из программной памяти посредством управляющих линий.

Этап №7: Код команды поместить (STORE) считывается с ШД, принимается МП и помещается в регистр команд.

Этап №8: МП декодирует эту команду и определяет, что нужен операнд. Он выставляет на ША следующий адрес 103 и активизирует вход считывания из ПЗУ.

Этап №9: Код операнда в ячейку памяти 200 из памяти помещен на ШД, МП принимает операнд и помещает его в регистр команд. Команда «поместить данные в ячейку памяти 200» полностью извлечена и декодирована.

Этап №10: Начинается процесс выполнения: МП выставляет на ША адрес 200 и активизирует вход записи в ОЗУ.

Этап №11: МП выдает помещенную в аккумулятор информацию (код буквы «А») на ШД. Этот код записывается в ячейку 200 и таким образом теперь выполнена вторая команда.

Этап №12: МП теперь должен извлечь следующую команду — он адресует ячейку памяти 104 и активизирует вход считывания из памяти.

Этап №13: Команда вывести данные (OUTPUT) помещена на ШД. МП принимает ее, помещает в регистр команд, декодирует и определяет, что нужен операнд.

Этап №14: МП помещает адрес 105 на ША и активизирует вход считывания из ПЗУ.

Этап №15: Память помещает код операции в порт 10 на ШД. Этот код принимается МП, который помещает его в регистр команд.

Этап №16: МП декодирует команду «ввести данные в порт 10» полностью, т.е. он активизирует порт 10 посредством ША и линии управления выводом. Он помещает код буквы «А» (из аккумулятора) на ШД, по которой передается в порт 10 и далее из него на монитор.

МП является центром всех операций и полностью ими управляет. Он следует последовательности: извлечение – декодирование – выполнение, а выполняемые операции диктуются командами, помещенными в памяти ПЗУ.

Числа, кодирование и арифметическая информация.

Так как информационные процессы в цифровых системах принимают значения только 0 и 1, то и представления данных осуществляется с помощью двоичных чисел. Сложение и вычитание двоичных чисел, а так

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

Сложение двоичных чисел: Вычитание двоичных чисел:

Умножение двоичных чисел:

Дополнительный код. Арифметика в дополнительном коде.

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

Изобразим условно ячейку памяти или регистр ЭВМ.

1 – имеет вес 16 (2 4 ).

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

В остальных ячейках записывается второе параллельное число. Если старший разряд слова равен 1, то число является отрицательным, а в остальных рядах слова записано двоичное число в дополнительном коде.

Использование дополнительного кода позволяет операцию вычитания заменить сложением.

а рифметика в дополнительном коде:

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

Рассмотрим на примерах все возможные ситуации, при арифметических действиях с числами:

1. сложение двух положительных чисел: 5+3=8

2. сложить числа: 7+(-3)=4

Проинвертируем это число и и полученному числу прибавим 1:

В результате получили девятиразрядное число, причем старший разряд является переполнением восьмиразрядного числа, поэтому им пренебрегаем. Оставшееся число в старшем разряде имеет 0, поэтому является положительным

3. Сложить 2 отрицательных числа: (-5)+(-7)=-12

Проинвертируем это число и и полученному числу прибавим 1:

Проинвертируем это число и и полученному числу прибавим 1:

Группировки бит.

Входящий в состав микропроцессора регистр – аккумулятор является очень важной частью всей вычислительной системы. Все операции над данными, как правило, выполняются через аккумулятор, в котором информация записана в виде слова. Обычно длина слова микропроцессора составляет 8 бит (байт) (4,8,16,32,64).

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

Каждое запоминаемое слово имеет особое значение, когда оно извлечено и декодировано МП. Содержание любой ячейки памяти может иметь один из следующих смыслов: двоичное число; двоичное число со знаком; двоично-десятичное число; буква алфавита; команда; адрес памяти; адрес порта ввода или вывода.

Рассмотрим ячейку памяти с адресом 01100100 (100) и содержимым 11011011. Это число может быть интерпретировано как: число 219; число со знаком (-37); буква алфавита в коде ASCII; команда INPUT; адрес ячейки памяти – DB и др.

МП включает счетчик команд (счетчик команд – устройство, содержимым которого является текущий адрес памяти и который изменяет свое состояние на +1 с каждым тактом выполнения программы). С адреса 100 извлечет, а затем декодирует слово в памяти 11011011, как команду – ввести данные (INPUT). Затем МП обратится к следующему адресу 101 и найдет там адрес порта (1), из которого поступают данные. И так далее по тексту программы.

1. Код команды- ввести данные (INPUT);

2. Двоичный адрес Порта 1;

3. Код команды-разместить данные (STORE);

4. Двоичный адрес памяти;

5. Код команды – вывести данные (OUTPUT);

6. Двоичный адрес Порта 10;

7. Код ASCII буквы «А».

Команды программы помещены в 6 верхних ячеек памяти (100 — 105). Нижняя ячейка памяти (200) является местом размещения данных, т.е. в эту ячейку помещен код буквы «А».

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

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

Архитектура простой ЭВМ.

МП является центром всех операций, ему необходимо питание и тактовые импульсы. ГТИ может быть отдельным устройством или входить в состав (быть интегрированным) МП. Типовой МП содержит 16 (32, 64…) адресных линий, которые образуют однонаправленную ША. А так же, обычно, 8 (16, 32…) линий, которые составляют двунаправленную ШД. В представленной архитектуре имеет места 2 типа памяти: ОЗУ и ПЗУ. ПЗУ представляет собой память, которая содержит программу – монитор системы, а так же пользовательские программы. ПЗУ имеет адресные входы, а так же входы активизации только чтения и выбора кристалла. Тристабильные выходы ПЗУ подключены к ШД. ОЗУ тоже, что и ПЗУ, только предусмотрено использование полной команды чтение/запись.

Для того, чтобы активизировать (включить в работу) требуемое устройство, дешифратор адреса считывает данные с ША. Комбинационной логикой линейной комбинации ША активизируется линия выбора соответствующего кристалла, включая, таким образом, выбранное устройство.

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

Структура памяти.

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

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

ОЗУ и ПЗУ ЭВМ являются устройствами с произвольным доступом к памяти, т.к. они обеспечивают существенно большее быстродействие, по – сравнению с последовательным доступом.

МП, например, может иметь 16 линий адреса, которые могут обеспечить 65536 различных комбинаций 0 и 1, т.к. запись не экономична, то двоичный адрес принято представлять в 16-тиричной системе.

Так как размер ячейки памяти 8 бит (1 байт), а адрес – 2 байта, то для хранения адреса в памяти необходимо выделять 2 ячейки, в одну из которых помещают старший байт адреса, а в другую младший байт адреса.

Состав команд МП.

Группа команд, которая может выполнять микропроцессор (МП) называется его составом команд. В зависимости от типа МП и его назначения состав команд варьируется от 8 до 200.

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

В свою очередь эти группы команд делятся:

А) Арифметические — сложение, вычитание, инкремент, сравнение и отрицание.

Б) Логические — И, ИЛИ, ИЛИ – исключающее, НЕ, а так же сдвиг вправо, сдвиг влево (часто встречаются команды циклического сдвига влево, вправо с переносом, тестированием и т.п.).

В) Передачи данных — загрузка, размещение, перемещение, ввод и вывод.

Г) Ветвление — безусловный переход, переход, если ноль, переход, если не ноль, переход, если равенство, переход, если не равенство, переход, если положительно, переход, если отрицательно.

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

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

Структура элементарного МП.

Центральным устройством вычислительной системы является МП, который содержит обычно элементы размещения данных называемые регистрами и устройства счета (арифметическое логическое устройство – АЛУ). МП содержит так же цепь декодирования команд и секцию управления и синхронизации. МП так же снабжен необходимыми соединениями с устройствами ввода/вывода.

Основными функциями МП являются:

1. Извлечение, декодирование и выполнение команд программы в указанном порядке.

2. Передача данных из памяти в память, а так же из устройств ввода/вывода и в устройство ввода/вывода.

3. Ответы на внешние прерывания.

4. Установка общей синхронизации и сигнал управления для всей системы.

АЛУ МП выполняет такие операции, как сложение, сдвиг/расстановка, сравнение, инкремент, декремент, отрицание, И, ИЛИ, ИЛИ – исключающее, дополнение, сброс, инициализация.

Читайте также:  Перегрев двигателя при низком уровне масла

Рассмотрим, например, операцию сложения (ADD).

Рассмотрим подробнее состав АЛУ.

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

Функционирование ЭВМ.

Пусть требуется сложить числа 10+5+18=33. Программа для выполнения этой задачи может быть записана в следующей последовательности:

1. загрузить (LOAD) первое число (10) в МП;

2. сложить (ADD) второе число (5) с первым;

3. сложить (ADD) третье число (18) с двумя первыми;

4. поместить (STORE) сумму (33) в ячейку памяти с адресом 2ØØØН.

1. Операция показывает, что содержимым ячейки памяти 0001 загружено в аккумулятор, который содержит после этого 00001010 (0000А), т.е. первое слагаемое. В результате выполнения операции LOAD предыдущее содержимое аккумулятора стирается.

2. Операция ADD. Содержимое ячейки памяти 0003 складывается с содержимым аккумулятора, что дает сумму OF (00001111), помещаемую в аккумулятор.

3. Содержимое аккумулятора — сложение 00001111 сложена с содержимым ячейки памяти 0005 (00010010), т.е. выполнена операция.

4. Содержимое аккумулятора 00100001 передано и размещено в ячейку памяти с адресом 2000. Эта ячейка памяти была индефицирована в тексте программы двумя раздельными байтами (0007 и 0008). Таким образом, ячейка памяти программы 0006 содержит код операции (КОП) В7 прямой команды STORE, два следующих байта за ней указывают соответственно на старший и младший байты адреса.

Микропроцессор.

Типовая документация содержит информацию о структуре интегральной схемы, схемы выводов и назначения каждого из них. Схематизируется архитектура МП, описываются его основные свойства. Обычно МП помещается в корпус интегральной системы с 42 – строчными выводами, эти корпуса бывают пластмассовыми и керамическими (количество выводов может быть значительно больше). На корпусе всегда есть метка в виде точки или желобка, непосредственно после этой отметки, в направлении обратным ходом часовой стрелки, находится вывод 1 интегральные схемы и далее в том же направлении выхода нумеруются.

Выводы 20,2,11,28 — являются выводами питания.

Выводы 15 и 22 – являются входами внешнего двухфазного генератора тактовых импульсов (таймер).

Вывода SYNC, DBIN, WAIT, , HLDA, INTE – несут сигналы управления и синхронизации всем прочим элементам системы.

Выводы READY, HOLD, INT, RESET – являются входами управления, они воспринимают информацию от прочих элементов вычислительной системы.

Типовая документация содержит так же структурную схему МП, которая содержит внутренние регистры: аккумулятор; пары регистров ВС, DE и HL; указатель стека SP; регистр состояния, а так же несколько регистров временного хранения данных. На этой схеме так же отражены: регистр команд, дешифратор команд и устройство управления и синхронизации. Используемые программистом регистры B и С, D и Е, H и L – являются универсальными. Указатель стека, счетчик команд и регистр состояния являются специальными регистрами.

Важной особенностью является то, что пара регистров H и L может быть использована в качестве адресного регистра, при косвенной адресации. Документация содержит разработанные временные диаграммы, которые показывают соотношение во времени между тактовыми импульсами на выходе ГТИ и другими внешними сигналами (синхронизации, записи, ввода/вывода и т.п.).

Использование регистра адреса\данных.

Использование пары регистров HL (имя регистра) в качестве указателя адреса является важным свойством типового МП.

Рассмотрим задачу сложение содержимого трех последовательных ячеек памяти и размещение суммы в следующей ячейке памяти. Программа загружается в ячейке памяти с 2000Н по 200А, а три слагаемых (ØС + ØА + Ø7) расположены в ячейке памяти в 2100 по 2102. Программа содержит 7 команд. Так же следует помнить, что текущая сумма будет всегда помещаться в аккумулятор, который вначале содержит первое слагаемое ØС.

Команда 1– 3А: приказывает МП загрузить (LOAD) в аккумулятор содержимое ячейки памяти 2100Н.

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

Команда 2 – 21Н: приказывает МП загрузить (LOAD) число 2101Н в пару регистров HL. Емкость этой пары 16 бит (2 байта). Содержимое 1-ой ячейки памяти 2004 представляет собой младший байт регистра L, а 2005 старший байт регистра Н.

Команда 3 – 86Н: приказывает МП выполнить сложение (ADD) содержимого аккумулятора (ØС) с содержимым ячейки памяти, адрес которой содержится в паре регистров HL.

Команда 4 – 23Н: содержимое пары регистров HL инкрементируется.

Команда 5 – 86Н: сложить содержимое аккумулятора с содержимым ячейки памяти с адресом 2102, на который указывает пара регистров HL.

Команда 6 – 23Н: инкрементировать пару регистров HL.

Команда 7 – 77Н: поместить (STORE) содержимое аккумулятора (окончательную сумму) в ячейку памяти, на которую указывает пара регистров HL, т.е. по адресу 2103.

Этапы обработки требования прерывания.

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

1. Интерфейс ввода выдает сигнал требования прерывания в направлении МП.

2. МП завершает выполнение текущей команды, находящейся в памяти по адресу 2006.

3. Поскольку, управление должно обеспечить последующее обращение к команде по адресу 2007, содержимое счетчика команд (именно 2007) и содержимое большинства регистров МП помещается в специальную область ОЗУ, называемую стеком. Содержимое стека будет позже извлечено в определенном порядке в регистры МП и счетчик команд.

4. В МП разветвляется в предопределенный адрес памяти и начинает выполнение программы обслуживания прерывания (20D0). МП тогда выполняет команды подпрограммы, которые обеспечивает выполнение операции ввода и размещения. По адресу 20DE МП находит конец этой подпрограммы и получает приказ вернуться в основную программу.

5. Перед возвращением в основную программу данные регистров и счетчик команд, помещенные в стеке, возвращаются в МП.

6. Теперь счетчик команд отсылает МП в память по адресу 2007, т.е. в основную программу и нормальное ее выполнение продолжается.

Прерывание является нужным способом, позволяющим периферийным устройствам вмешаться и заставить МП выполнять требуемую операцию почти сразу.

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

указателя стека.

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

В примере указатель стека содержит адрес 220А, что на единицу старше первой ячейки памяти стека 2209. Данные в стек можно записать, используя команды поместить (PUSH) и вызвать (CALL). Данные могут быть считаны из стека по командам извлечь (POP) и возврат (RETERN). Стек функционирует как память с последовательными доступом по типу: данные, поступившие последними, извлекаются первыми. Например, команда PUSH приводит к тому, что содержимое пары регистров HL помещается в стек.

1. Указатель стека МП декрементируется от 220А до 2209.

2. Указатель стека показывает на ячейку памяти 2209 по адресной шине и старший байт регистра HL помещается в стек.

3. Указатель стека снова декрементируется от 2209 до 2208.

4. Указатель стека указывает на ячейку 2208 по адресной шине и младший байт из регистра HL загружается в стек.

Рассмотрим так же операцию загрузки в стек, содержимого аккумулятора и регистра состояния.

5. До операции указатель стека указывает на ячейку памяти 2208, ее называют вершиной стека , затем указатель стека декрементируется до 2207.

6. Указатель стека указывает на ячейку памяти 2207 и содержимое аккумулятора загружается в стек по этому адресу.

7. Указатель стека декрементируется до 2206.

8. Указатель стека указывает на ячейку памяти 2206 и содержимое регистра состояния (11111111) загружается по этому адресу.

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

Рассмотрим команду POP – аккумулятор и регистр состояния свободны до операции извлечения из стека.

1. Указатель стека указывает на вершину, т.е. на адрес 2206, содержимое регистра состояния (11111111) извлечено из стека и переслано в АЛУ.

2. Указатель стека инкрементируется с 2206 до 2207.

3. Указатель стека указывает на адрес 2207, содержимое вершины стека извлекается и пересылается в аккумулятор.

4. Указатель стека инкрементируется до 2208 и указывает теперь на следующий адрес извлечения из стека.

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

Команды PUSH и POP используются всегда совместно, однако, между ними располагаются другие команды, которые меняют данные, содержащиеся в регистрах МП.

Состав команд арифметических действий.

ADI – C6 – сложить аккумулятор с данными.

ADD L – 85 – сложить содержимое регистра L с содержимым аккумулятора.

ADD H – 84 – сложить содержимое регистра H с содержимым аккумулятора.

ADD М – 86 – сложить содержимое аккумулятора с содержимым ячейки памяти, на которую указывает пара регистров HL.

SUI – Ø6 – вычесть данные из аккумулятора.

SUB L – 95 – вычесть содержимое регистра L из содержимого аккумулятора.

SUB H – 94 – вычесть из содержимого регистра Н в аккумулятор.

SUB М – вычесть данные, расположенные по адресу, на которую указывает пара регистров HL, из аккумулятора.

INR A – 3C – к содержимому аккумулятора +1.

INX H – 23 – инкремент пары регистров HL.

DCR A – 3D – декрементировать (- 1) аккумулятор.

DCX H – 2B – декрементировать пару регистров HL.

CPI – FE – сравнить содержимое аккумулятора с данными (в следующей ячейке памяти).

CMP L – BD – сравнить содержимое аккумулятора с содержимым регистра L.

CMP H – сравнить содержимое аккумулятора с содержимым регистра H.

CMP M – сравнить аккумулятор с ячейкой памяти, на которую указывает пара регистров HL.

Содержит команды сложить, вычесть, инкрементировать, декрементировать и сравнить.

Каждая команда точно оговаривает различные источники другого слагаемого.

Команда ADI – это команда сложить непосредственно, она является двухбайтовой. Ее формат (код операции С6) содержится в первом байте команды, а непосредственно за ним, во втором байте, находятся данные для сложения с содержимым аккумулятора.

Команда ADD L – содержимое аккумулятора (OF) складывается с содержимым регистра L (01). Полученная в результате выполнения команды сумма (10) помещается в аккумулятор.

Команда ADD H – выполняется так же.

Команда ADD М – однобайтовая команда – сложить с косвенным адресом. Адрес второго слагаемого задан в более сложной форме с использованием так называемого способа косвенной регистровой адресации. При такой адресации пара регистров HL указывает 16-тиразрядный адрес памяти, где хранится второе слагаемое.

Команда вычитания SUI.

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

Дополнительный код FF второго числа складывается с первым числом, что дает сумму 100001000. В старшем девятом бите суммы единица является переполнением и не принадлежит разности 00001000. МП использует это переполнение для установления индикатора переноса CY в регистре состояния. Вычитая, МП инвертирует переполнение, и результат становится содержимым индикатора переноса CY.

Читайте также:  Моторное масло для двухтактных двигателей применение

Допустим, первое слагаемое 5 находится в аккумуляторе, а второе слагаемое находится в регистре L.

Команда сравнение (СМР) – вычитает содержимое регистра памяти из содержимого аккумулятора, но при этом не изменяет содержимого ни того, ни другого. Индикаторы регистра состояния подвержены воздействию команд сравнения.

Например, сравнить содержимое аккумулятора с содержимым регистра L.

состав команд логических операций

Логические команды составляют еще одну группу команд МП. Состав этих команд следующий: логическое умножение – И, логическое сложение – ИЛИ, ИЛИ – исключающее, отрицание – НЕ и сдвиг. В этой группе команд именно аккумулятор составляет ядро большинства операций. Как и при арифметических операциях, способ адресации и здесь влияет на способ и место нахождения других данных в системе. Команда ANI выполняет логическое умножение над содержимым аккумулятора (00010011) и содержимым программной памяти после команды (00000001). Содержимое аккумулятора подтверждается операции И побитно. И в соответствии с таблицей истинности для этой операции имеем: 00000001. Результатом всех операций И будет сброс индикатора переноса. Так же результат операции И проверяется с целью определения не ноль ли он и если нет, индикатор нуля Z сбрасывается в ноль.

Пример операции И с косвенной операцией (ANA M). Содержимое аккумулятора подвергается операции И (бит с битом) с содержимым ячейки памяти указанной парой регистров HL. Допустим, в аккумуляторе – 00111100, а в ячейке памяти – 00000001. Результат умножения будет 00000000, этот результат размещается в аккумуляторе. Индикатор переноса CY сбрасывается в ноль, кроме того, результат проверяется на ноль и поскольку, ответ да, индикатор нуля Z устанавливается в единицу.

В обоих примерах второй операнд (00000001) используется как маска. В первом примере она используется для сброса в ноль 7 старших бит, а во втором примере, с учетом наличия индикатора нуля, для тестирования значений ноль или единица в позиции младшего бита аккумулятора.

Мнемоника ORA. Выполняется с содержимым аккумулятора и содержимым какой-либо ячейки памяти или регистра.

Команда ИЛИ – исключающее

Мнемоника XRA. Этих команд так же несколько, в зависимости от способа получения данных.

Например. Выполним команду ИЛИ — исключающее над самим аккумулятором, т.е. Аккумулятор Аккумулятор.

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

Команда циклического сдвига с переносом

Например, RAR А (сдвиг вправо с переносом).

Содержимое аккумулятора сдвинуто на одну позицию вправо и его младший бит (единица) передается в позицию индикатора переноса CY, тогда как имевшийся там бит (ноль) занимает позицию старшего бита аккумулятора. После завершения операции CY =1, а Z=0. Используя одну или несколько команд циклического сдвига, можно тестировать весь заданный состав бит, а индикатор переноса, может быть, затем проверен командой условного ветвления.

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

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

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

· MOV R1, R2 – передача из регистра 2 в регистр 1,

· MVI, R (M) – загрузить регистр (или память),

· LXI R1.2 – загрузить пару регистров LHL, LDA, STA, SHLD, IN, OUT, STC – команды передачи данных.

Например, команда MOV A, L – следующая за мнемоникой буква А указывает назначения тогда как последняя буква L индефицирует источник данных.

Команда SPHL – здесь источником данных является пара регистров HL, приемником 16-тиразрядный указатель стека SP.

Существует несколько команд непосредственной загрузки данных. Эти команды часто используются для размещения начальных значений в регистры МП.

Команда LXI H – пара регистров HL должна быть загружена данными, следующими непосредственно за кодом операции в программной памяти. Эта команда является трехбайтовой: 1 байт – код операции (21); 2-ой байт – содержит младший байт и помещается в регистр L; 3-й байт – это старший байт, который помещается в регистр H.

Команда загрузки пары регистров HL с прямой адресацией LHLD. Второй и третий байт являются 16-тиразрядным адресом памяти данных для загрузки.

МП преобразует 2 следующих за кодом операции байта в 16-тиразрядный адрес, который служит указателем адреса памяти данных (ОЗУ) и загружается в пару регистров HL.

Типовой МП снабжен несколькими командами размещения. Например, команда STA — загрузка данных с прямой адресацией. Содержимое аккумулятора помещается в память, на которую указывает 16-тиразрядный адрес, составленный 2 и 3 байтом команды.

Команда ввода (IN) – по сути, идентична команде загрузки, только здесь источником данных является порт ввода, который идентифицируется 8-миразрядным числом (адрес устройства ввода/вывода). Назначение данных из порта всегда аккумулятор.

Данные порта 00001111, на который указывает второй байт команды, передаются и размещаются в аккумулятор.

Состав команд операций ветвление

К этим командам относятся:

· IMP – безусловный переход по адресу;

· IZ – перейти, если ноль по адресу;

· INZ – перейти, если не ноль по адресу;

· IC — перейти, если перенос;

· INC – перейти, если нет переноса по адресу.

Обычно МП выполняет команды последовательно, т.е. 16-тиразрядный счетчик команд типового МП содержит всегда адрес следующий, извлекаемый из памяти команды до ее выполнения. Его содержимое (счетчик команд) обычно повышается на 1, при каждом счете.

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

Команда IMP – перейти. Она является трехбайтовой. Используется для изменения специфического адреса в счетчике команд.

Адрес 2000Н загружен в счетчик команд, информация об этом адресе следует непосредственно за кодом операции, поэтому такая адресация называется непосредственной. Младший байт адреса находится во втором байте памяти сразу за кодом операции. Команду безусловного перехода можно рассматривать как способ загрузки новой информации об адресе в счетчике команд.

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

Например, команда IZ – перейти, если ноль.

В этом случае счетчик команд 2017Н до операции будет нормально инкрементирован, если только индикатор нуля Z неустановлен в 1. МП проверяет это и находит 1, значит, результат последней арифметической или логической операции был ноль. Условие перехода выполнены и МП загружает новый адрес 2008Н в счетчик команд. Этот новый адрес поступает из ПЗУ. Следующей выполненной командой программы будет команда размещения данных в памяти по адресу 2008Н (но не 2018Н).

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

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

Этих команд две: команда вызова CALL и команда возврата RET. Эти команды всегда используются парами, т.е. если в тексте программы есть команда CALL, ее всегда сопровождает команда RET. Трехбайтовая команда CALL используется основной программой для перехода МП к подпрограмме.

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

Когда МП передает первую команду CALL по адресу 1000Н, он находит адрес перехода в двух следующих байтах программы. Адрес, следующий за CALL команды, отправляется (2010) в стек и МП переходит тогда в начало подпрограммы по адресу 1000Н. Команды, составляющие эту программу, выполняются до тех пор, пока МП не встретит команду возврата RET. Сохраняющий в стеке адрес 2010 помещается в счетчик команд и МП продолжает выполнение основной программы, принимая ее там, где он ее покинул. Эта программа выполняется до тех пор, пока МП не встретит другую команду подпрограммы вызова CALL по адресу 2020. МП сохраняет адрес следующей команды 2023 в стеке и переходит к подпрограмме, находящейся по адресу 1000Н. После завершения выполнения этой подпрограммы команда возврата RET извлекает из стека адрес следующей команды основной программы (2023) и загружает ее в счетчик команд.

Данная подпрограмма может быть использована много раз в ходе выполнения одной и той же основной программы.

Подпрограммы, как правило, размещены в ПЗУ МП, но в некоторых случаях для ускорения выполнения программ, подпрограммы размещают в ОЗУ.

Команда вызова сочетает функции оператора загрузки в стек и перехода.

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

Нарисуем блок-схему выполнения этой команды:

Имеет место следующей последовательности операции:

1. Указатель стека декрементирован от 210А до 2109.

2. Старший байт счетчика команд загружается в стек по адресу 2109.

3. Указатель стека декрементируется до 2108.

4. Младший байт счетчика команд загружается в ячейку памяти с адресом 2108.

5. Младший байт адреса подпрограммы загружается в младший байт счетчика команд.

6. Старший байт адреса перехода загружается в старший байт счетчика команд.

После этого МП ответвляется по адресу, на который указывает счетчик команд (в примере 1000Н). Этот адрес является началом подпрограммы. В конце подпрограммы находится команда RETERN. Обнаружив ее, МП извлекает в известном порядке из стека сначала младший, затем старший байты и размещает их в счетчике команд (в примере 2010). После этого продолжается выполнение основной программы до следующей команды CALL.

Имеется ряд других таких команд, как команды обслуживания стека, отсутствие операции, команда остановок и др. При их выполнении индикаторы регистра состояния не меняются.

запись программы

1. Знать состав команд МП.

2. Быть хорошо знаком с расположением регистров МП.

3. Знать общую архитектуру ЭВМ.

Этапы развития программы могут быть представлены следующим образом:

· Определить и проанализировать задачу.

· Начертить структурную схему решения.

· Записать программу на ассемблере.

· Записать или генерировать программу в кодах.

· Загрузить программу на решение.

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

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

Нарисуем подробную функциональную схему:

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

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

Adblock
detector