Основы программирования на машинном языке.
Одной из характеристик устройства вычислительной техники является набор команд(инструкций), которыми может оперировать данной устройство. Этот набор получил название система команд. Одной из важнейших характеристик системы команд является ее разрядность. В настоящее время используют без разрядные, одноразрядные, двухразрядные, трехразрядные команды и команды с переменной разрядностью. Структура команд различной разрядности приведена на рисунке 31.
Без разрядные команды | |||||||||
КОП | |||||||||
KOП - код операции, закодированное числом действие | |||||||||
Одноразрядные команды | |||||||||
КОП | A1 | ||||||||
КОП - код операции, закодированное числом действие; A1 – адрес ячейки памяти, в которой находиться данные для данной операции | |||||||||
Двухразрядные команды | |||||||||
КОП | A1 | A2 | |||||||
КОП - код операции, закодированное числом действие; A1 – адрес ячейки памяти, в которой находиться данные для данной операции A2 – адрес ячейки памяти, в который требуется поместить результат данной операции | |||||||||
Трехразрядные команды | |||||||||
КОП | A1 | A2 | A3 | ||||||
КОП - код операции, закодированное числом действие; A1 – адрес ячейки памяти, в которой находиться первый операнд для данной операции A2 – адрес ячейки памяти, в которой находиться второй операнд для данной операции A3 – адрес ячейки памяти, в который требуется поместить результат данной операции | |||||||||
Команды с неопределенной разрядностью | |||||||||
КОП | A1 | A2 | … | An | |||||
КОП - код операции, закодированное числом действие; A1-An – адреса ячеек памяти, в которых находится операнды для данной операции, а так же адреса ячеек в которые помещаются результаты выполнения данной операции. | |||||||||
Рис. 31.
Операнды команд, могут иметь и другой смысл. Так например, при вводе данных, один из операндов будет предназначен не для адресов, а для непосредственно данных.
Рассмотрим простейший пример использования машинного кода, при вводе алгоритма в устройство вычислительной техники. Допустим, что мы имеем устройство вычислительной техники, память которого, состоит из 1000 ячеек, то есть от 000 до 999. Система команд этого устройства представлена в таблице 17. Для простоты восприятия, будем использовать только трехразрядные команды.
Таблица 17. Система команд гипотетического устройства вычислительной техники.
Операция | КОП | Назначение A1 | Назначение A2 | Назначение A3 |
Ввод данных | Ячейка для записи | Не используется | Не используется | |
Сложение | Адрес первого слагаемого | Адрес второго слагаемого | Адрес результата | |
Вычитание | Адрес уменьшаемого | Адрес вычитаемого | Адрес результата | |
Умножение | Адрес первого множителя | Адрес второго множителя | Адрес результата | |
Деление | Адрес делимого | Адрес делителя | Адрес результата | |
Вывод | Адрес выводимого значения | Не используется | Не используется |
Рассмотрим теперь использование этой системы команд, так для записи числа 123,45 в ячейку памяти 201, нам необходимо написать следующую команду:
123,45 |
Для сложения данных, находящихся в ячейках 201 и 202, и помещения результата в ячейку 203, необходимо написать следующую команду:
Аналогичным образом выполняются и другие операции в устройствах вычислительной техники.
Рассмотрим разработку простейшего алгоритма, и его ввод в устройство вычислительной техники на языке этого устройства. Для примера возьмем функцию:
F=a2+b*(c+d)-e.
Сначала построим алгоритм решения этой задачи. Первым делом, определимся с алгоритмической системой, для этого, разберемся с исходными данными, в заданном выражении они имеют символическое значение a,b,c,d и e, а так же с результатами вычисления, которое имеет символическое значение F. Проанализируем средства и инструменты, которые мы можем использовать, одной из проблем, связанными с программированием в машинном коде, является то, что требуется решать задачу выполняя отдельно каждое действие, то есть инструментами у нас являются простейшие арифметические операции, такие как сложение, вычитание, умножение и деление, глядя на заданное выражение, можно сделать вывод, что для решения задачи этими средствами, нам понадобиться еще один объект, для хранения промежуточного результата, придадим ему символическое название g. Теперь строим, непосредственно алгоритм решения данной задачи, рисунок 32. Для восприятия человека, не имеет значения символическое название объекта, мы воспринимаем и анализируем его суть, в отличие от нас, устройства вычислительной техники понимают только цифры.
Исполнителем алгоритма, является устройство вычислительной техники, которое не понимает, что такое символическое название, оно понимает лишь адреса и цифры. Для них символическим названием объекта является номер его ячейки памяти. Для перевода алгоритма в машинный код, первым делом надо распределить символизированные объекты по адресам, то есть определить, в каком адресе будет храниться значение того лили иного объекта. Выделим под эти нужды ячейки памяти нашего гипотетического устройства вычислительной техники с 201 по 207 и распределим их там, таблица 18 распределение символизированных объектов в памяти устройства.
Таблица 18.
Адрес | Символическое имя |
A | |
B | |
C | |
D | |
e | |
f | |
g |
Теперь рассмотрим этот алгоритм, переведенный на язык исполнителя, которым является наше гипотетическое устройство вычислительной техники, приведенный в таблице 19. Здесь следует учесть и то, что каждая команда(операция) так же располагается в памяти, как и данные, и поэтому должна иметь свой адрес. Отведем под коды операций адресное пространство начиная с 301 ячейки памяти.
Таблица 19.
Алгоритм вычисления функции в машинном коде
Адрес | Команда | Примечание | |||
КОП | А1 | А2 | А3 | ||
Ввод значения объекта «a» в ячейку памяти с адресом 201 | |||||
Ввод значения объекта «b» в ячейку памяти с адресом 202 | |||||
Ввод значения объекта «c» в ячейку памяти с адресом 203 | |||||
Ввод значения объекта «d» в ячейку памяти с адресом 204 | |||||
Ввод значения объекта «e» в ячейку памяти с адресом 205 | |||||
F=a*a | |||||
G=c+d | |||||
G=g*b | |||||
F=f+g | |||||
F=f-e | |||||
Вывод результата вычисления «а» из ячейки памяти с адресом 206 |
Так составлялись программы для вычислительных машин первого поколения, когда еще не было языков высокого уровня. Это занятие было малоэффективным и очень утомительным. Так же составляются программы сейчас для отдельных элементов устройств вычислительной техники. Но даже с появлением языков высокого уровня, где слова, более понятные человеку ассоциируются с определенным набором команд, устройства вычислительной техники понимают все тот же машинный код, просто перевод в него осуществляет уже не человек, а машина при помощи определенных программ называемых компиляторами.
Принцип выполнения программы устройством вычислительной техники остается неизменным с начала появления первых вычислительных машин рисунок 31, и состоит в следующем:
- Из памяти считывается очередная команда и передается на устройство управления для дешифровки;
- Адреса А1, А2 и А3, адресной части команды из устройства управления передаются в запоминающее(ЗУ) устройство (память);
- В запоминающем устройстве из ячеек с адресами А1 и А2 считываются числа и передаются в арифметико-логическое устройство (АЛУ);
- Код операции (КОП) передается в АЛУ, где над числами производиться арифметическая или логическая операция;
- Результат операции передается из АЛУ в ЗУ, где записывается в ячейку памяти с адресом А3;
- Если есть еще команды, то повторяются операции начиная с адреса А1.
Более подробно этот процесс можно проследить на графическом отображении алгоритма работы устройства вычислительной техники (рисунок 33). Этот процесс носит название принцип программного управления, и был сформулирован американским ученым Дж. Фон Нейманом и до сих пор служит основой для построения устройств вычислительной техники.
|
Принцип программного управления состоит в следующем:
ü Деление информации на данные и методы их обработки;
ü Кодирование данных и программы числами;
ü Запись данных и программы в память устройства вычислительной техники;
ü Последующую автоматическую работу устройства по выполнению программы.
Тестовые и контрольные задания по алгоритмическому программированию студенты берут в учебно-практических и методических пособиях [1, 2, 3].
Литература
1. Попов А.А., Якушина Н.А., Роман О.В. Информатика. Учебно-практическое пособие. – М., МГУТУ, 2012. – 78 с.
2. Попов А.А. Программирование на алгоритмическом языке Бейсик.
Методические указания, лабораторный практикум и контрольные задания по
дисциплине «Информатика». – М.: МГУТУ, 2012. – 13 с.
3. Попов А.А. Программирование на алгоритмическом языке Паскаль.
Методические указания, лабораторный практикум и контрольные задания по
дисциплине «Информатика». – М.: МГУТУ, 2012. – 20 с.
Дата добавления: 2016-11-04; просмотров: 1541;