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

Язык машинных команд

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

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

Компьютер является исполнителем программ и, следовательно, обладает своей системой команд (СКИ).

Команды управления работой компьютера принято называть машинными командами.

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

Компьютеры разных типов имеют разную структуру команд.

Всякая машинная команда состоит из кода операции и адресной части.

В «УК Нейман» машинные команды имеют трехадресную структуру (формат). Это значит, что ячейка, в кото-рой хранится команда, делится на четыре части (по одному байту на каждую часть). Будем их обозначать следующим образом:
КОП — код операции,
А1 — адрес первого операнда,
А2 — адрес второго операнда,
A3 — адрес результата.

КОП А1 А2 A3

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

Вот пример команды сложения двух чисел (в шестнадцатеричной форме):

КОП А1 А2 A3
01 44 48

01 — это код операции сложения;

44 — адрес первого слагаемого;

48 — адрес второго слагаемого;

4С — адрес ячейки, в которую помещается сумма.

Для всех арифметических операций ответ на вопрос: «Какую команду выполнять следующей?» всегда одинаковый: следующей выполняется команда, находящаяся в следующей ячейке памяти.

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

КОП А1 А2 A3
00000001 01000100 01001000 01001100

В ТАБЛИЦЕ 2 содержится система команд «УК Нейман».

ТАБЛИЦА 2. Система команд «УК Нейман»:

КОП Операция Пояснение
00 Пересылка (А1)=>АЗ
01 Сложение (А1) + (А2)=>АЗ
02 Вычитание (А1)-(А2)=>АЗ
03 Умножение (А1)*А2)=>АЗ
77 Останов Прекращение выполнения программы программы

Запись (А1) + (А2) => A3 надо понимать так: содержимое ячейки с адресом А1 сложить с содержимым ячейки с адресом А2 и результат записать в ячейку A3;
(А1)=> A3 — содержимое ячейки А1 занести (скопировать) в ячейку A3.

Совокупность правил записи программ управления компьютером с использованием машинных команд называется машинным языком (или языком машинных команд).

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

(А + В)*С.

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

(20) = А,    (24) = В,   (28) = С.

Результат вычисления выражения поместим в ячейку 2С. Команды программы тоже помещаются в определенные ячейки. Вот фрагмент программы, решающей нашу задачу:

Адрес КОП А1 А2 A3 Пояснение
ОС 01 20 24 (20)+(24) => 2С     А+В
10 03 28 (2С)х(28)=>2С    (А+В)*С

В графе «Адрес» указываются номера ячеек, в которых располагаются команды. Команды этой программы выполняются в «естественном порядке» возрастания адресов ячеек: сначала ОС, затем 10 (еще раз напомним, что адреса ячеек меняются с шагом 4).

Занесение значения в ячейку памяти называется присваиванием.

В результате присваивания старое значение, которое хранилось в этой ячейке, стирается и заменяется на новое.

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

Ячейке 2С значение присваивается дважды: сначала результат суммирования, затем — умножения. Первый результат — промежуточный, второй — окончательный.

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

Исходные данные должны задаваться вводом.

Ввод — это процесс занесения данных в оперативную память с помощью устройств ввода.

Результаты вычислений должны быть выведены.

Вывод — это отражение информации в оперативной памяти на устройствах вывода.

Вывод делает результаты выполнения программы доступными для пользователя.

Устройством ввода на «УК Нейман» является клавиатура. Устройством вывода — экран.

В «УК Нейман» ввод и вывод организованы следующим образом: с клавиатурой и экраном связана последняя ячейка памяти — ячейка FC. Будем называть ее буферной ячейкой ввода-вывода.

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

Из ТАБЛИЦЫ 2 следует, что команда пересылки имеет вид:

00 А1    A3

В этой команде содержимое адреса А2 не влияет на ее исполнение (в дальнейшем на месте А2 будем писать нули). В результате выполнения команды пересылки значение в ячейке A3 становится равным (А1). При этом значение ячейки А1 не меняется. Иначе это называется так: ячейке A3 присваивается значение ячейки А1.

Поясним на примере.

Пусть в 10-й ячейке находится число 5, а в 20-й ячейке число 7:

10
5
  20
7





После выполнения команды

00 10 00 20

их значения станут одинаковыми:

10
5
  20
5





В рассмотренной выше задаче вычисления (А + В) * Сна экран нужно вывести результат, полученный в ячейке 2С. Для этого его следует присвоить ячейке FC. Значит, команда вывода будет такой:

00 2С 00 FC.

Как запрограммировать ввод значения А в ячейку 20? Делается это так:

00 FC 00 20.

Процессор, обнаружив команду, у которой КОП=00 и A1=FC, прерывает работу и ждет действий пользователя. Пользователь набирает на клавиатуре вводимое число. Это число заносится в ячейку FC и одновременно высвечивается на экране. Затем пользователь нажимает клавишу <ВВОД>. Процессор выполняет команду пересылки из ячейки FC в ячейку 20. Ввод завершился, процессор переходит к выполнению следующей команды.

Запишем команды ввода и вывода в общем виде:

00 FC 00 A3 — ввод числа в ячейку

A3 00 А1 00 FC — вывод числа из ячейки А1

А теперь запишем программу вычисления выражения (А+В) * С в окончательном виде. Договоримся, что любая программа будет располагаться в начале памяти. Первая команда всегда находится в ячейке 00.

ПРОГРАММА 1:

Адрес КОП А1 А2 A3 Пояснения
00 00 FC 00 20 ввод А
04 00 FC 00 24 вввод В
08 00 FC 00 28 ввод С
ОС 01 20 24 А+В
10 03 28 (А+В)*С
14 00 00 FC вывод результата
18 77 00 00 00 стоп

В ячейке 18 находится команда останова с кодом операции 77. Результат ее выполнения — остановка работы машины. Содержимое адресной части в этой команде не имеет значения.

Коротко о главном

Программа, управляющая работой компьютера, помещается в его оперативную память.

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

Машинная команда состоит из кода операции (КОП) и адресной части.

«УК Нейман»имеет трехадресную структуру команды: КОП A1 A2 A3.

Для арифметических операций А1 и А2 — адреса операндов, A3 — адрес результата.

Исходные данные вводятся в память по команде ввода, результаты выводятся по команде вывода.

Вопросы и задания

  1. В чем состоит принцип хранимой программы?
  2. Что такое машинный язык?
  3. Что такое машинная команда? Какая информация содержится в ней?
  4. Из каких частей состоит машинная команда?
  5. Почему структура команд «УК Нейман» называется трехадресной? Каково назначение каждого адреса в арифметической команде?
  6. Что называется присваиванием? Что происходит с содержимым ячейки при присваивании ей нового значения?
  7. Что такое ввод и вывод? По какой команде в «УК Нейман» происходит ввод и по какой команде — вывод?
  8. Какое действие определяет следующая команда на машинном языке «УК Нейман»:
    02 20 24 28?
Компьютеры TopCTO Компьютеры цены продажа be number one
Сайт управляется системой uCoz