Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
5 семестр / МКиМПвСУ / МПС / МПС лек / Программирование МП и мкЭВМ.doc
Скачиваний:
52
Добавлен:
28.03.2015
Размер:
109.57 Кб
Скачать

Программирование мп и микро-эвм

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

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

Если мы хотим написать программу на машинном языке, то нужно весь вычислительный процесс (алгоритм) детализировать до уровня простейших операций, а затем каждую инструкцию, содержащую только простую операцию, записать в виде машинной команды. Так как машина внутри себя имеет дело только с двоичными числами, то ячейки нужно нумеровать двоичными числами. Например, если память состоит из 63 ячеек, то для обозначения каждого из 63 адресов понадобится шестиразрядное двоичное число от 000001 для ячейки 1 до 111111 – для­ ячейки 63 (1*25+ 1*24+ 1*23+ 1*22+ 1*21+ 1*20)

32 + 16 + 8 + 4 + 2 + 1 = 63.

Чтобы машина правильно решала задачу нужно в каждой команде указать, какую операцию она должна выполнить (например “сложить”), а также, где взять операнды (т.е. числа, над которыми будет выполняться операция), куда поместить результат и откуда прочитать следующую инструкцию.

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

  1. сложить 1410и 3510

  2. напечатать результат

  3. конец.

Нужно делать следующее:

а) представить исходные числа (14 и 35) в двоичном коде (001110 и 100011);

б) выделить ячейки с определенными номерами (адресами) для хранения исходных чисел и размещения результата; например, ячейка 001000 служит для хранения числа 001110 (т.е. 14), ячейка 001001 – для хранения числа 100011 (т.е. 35), ячейка 001010 – для размещения результата.

в) выделить ячейки с определенными адресами (например, начиная с адреса 111000) для размещения программы;

г) записать процесс решения в виде следующих инструкций.

Система команд

  1. Сложить числа, хранящиеся в ячейках 001000 и 001001; полученный результат поместить ячейку 001010, после чего обратиться в ячейку 111001 для чтения следующей инструкции.

  2. Напечатать число, находящееся в ячейки 001010, после чего обратиться к ячейке 111010 для чтения следующей инструкции.

  3. Прекратить вычисления.

Вся программа состоит из трех инструкций, каждая инструкция должна быть записана в форме, понятной для машины, т.е. в виде команды. Для этого вид операции (“сложить”, ”напечатать” и др.) нужно представить в виде двоичного числа (кода операции). Если машина может допустим, выполнять около 50 различных операции, то для кодирования всех операции понадобится также шестиразрядное двоичное число. Пусть код 011010 означает “сложить”, а код 111111 означает “прекратить вычисления”. Запишем каждую инструкцию в виде четырехадресной командыв виде: КОП, А1, А2, А3, А4, где КОП – код операции, А1 – адрес первого операнда; А2 – адрес второго операнда; А3 – адрес результата; А4 – адрес местонахождения следующей команды. Тогда программа сложения двух чисел и печати результата записывается так:

Адрес

КОП

А1

А2

А3

А4

111000

011010

001000

001001

001010

111001

111001

101101

001010

000000

000000

111010

111010

111111

000000

000000

000000

000000

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

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

70

32

10

11

12

71

71

55

12

00

00

72

72

77

00

00

00

00

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

Адрес

КОП

А1

А2

А3

Адрес

КОП

А1

А2

70

32

10

11

12

70

32

10

11

71

55

12

00

00

71

55

10

00

71

77

00

00

00

72

77

00

00

Если полученный результат всегда записывать по первому адресу (вместо первого операнда), то получим двухадресную структуру ЭВМ.

(Во второй строке А1 вместо 12 записали 10, т.к. результат выполнения предыдущей операции записался по первому адресу, т.е. 10).

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

Если иметь в виду, что одним из операндов является содержимое аккумулятора, то можно пользоваться и одноадресной командой, указывая в ней только адрес второго операнда и предполагая, что адресом первого операнда является сам РАк и в ней же остается результат операции. Но тогда в системе команд машины нужно предусмотреть команду. “Загрузить в Ак (например, код 14) содержимое ячейки А (например, ячейки 10) ” и “Разгрузит Ак” (например, код 15), т.е. “переписать содержимое Ак в ячейку А” (например, 20). Тогда рассматриваемая программа примет вид:

КОП А

70 14 10 – загрузить в Ак число из ячейки 10

71 32 11 – сложить содержимое Ак с содержимым ячейки 11

72 15 20 – переписать содержимое Ак в ячейку 20

73 55 20 – отпечатать содержимое ячейки 20

74 77 00 – конец

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

Реальные микропроцессоры выполняют до 50-75 команд, а некоторые несколько сотен, поэтому количество бит, отводимых под код команды, колеблется от 4 до 16.

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

Код операции в международном обращении обозначается OPC(operationcode).

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

операнд – источник (ИСТ)

операнд – ­­получатель (ПЛЧ).

КОП ИСТ ПЛЧ (возможно, но редко, наоборот КОП ПЛЧ ИСТ).