Главная  Микропроцессорные системы 

[0] [1] [2] [3] [4] [ 5 ] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86] [87] [88] [89] [90] [91] [92]

команд микро-ЭВМ. Эта программа приведена втабл. 2.1. Для простоты в ней использована словесная форма записи команд.

Таблица 2.1

Номер строки

Адрес ячейки

Содержимое

Примечание

012 013

015 016

017 018

050 051 052

Загрузить А из 50

Прибавить51 Сдвинуть на 1

вира во Переслать в В

разряд

Загрузить А из 52 Сдвинуть на 1 разряд

влево Прибавить В Переслать на хранение

в 53 Остановить

13 15 21

Аккумулятор содержит число 13 В аккумуляторе число 28 В аккумуляторе число 14

В аккумуляторе число 14, в регистре В то же 14 В А число 21 В А число 42

В А число 56 В А число 56

Данные

После выполнения 8-й команды здесь будет число 56

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



в аккумуляторе. По второй команде к содержимому аккумулятора добавляется содержимое ячейки 51, и сумма остается в аккумуляторе. 3-я и 6-я команды являются командами двоичного деления и умножения на число 2, осуществляемого путем сдвига числа, хранимого в аккумуляторе, на один разряд вправо и влево соответственно. Последняя команда, являющаяся концом программы, останавливает счетчик команд.

Кодирование программы. Программа, записанная в табл. 2.1, понятна человеку, но непонятна машине, так как она выполняет все операции только над двоичными числами. Поэтому и программа, и числовые данные должны быть введены в машину именно в двоичной форме. Двоичный код команд конкретной микро-ЭВМ называется лгашмнн&ш кодом, а программа, записанная в машинных колах,-программой на машинном языке. Однако в процессе программирования команды программы могут записываться и в другой форме, более удобной для программиста. Неудобство двоичной записи связано с тем, что в процессе написания такой программы, состоящей из последовательности большого количества нулей и единиц, неизбел<но огромное количество ошибок. Действительно, запишем вторую строку табл. 2.1 в двоичной форме. Предполагая, что микро-ЭВМ имеет 16-разрядный код адреса и 8-разрядный код команды, конкретное содержание которого указывает на операцию сложения (табл. 2.2), получаем запись.

Таблица 2.2

Адрес

Содержимое

0000 0000 ООСО 1100

1000 оно

0000 0000 ООН ООН

Десятичное число 12,

Прибавить

(51),0 -адрес

или (12),,,

Здесь в качестве кода операции использовано число 10000110. Если количество команд в программе велико, ТО ее безошибочная запись маловероятна. Поэтому естественно стремление укоротить форму записи программы, для чего используют восьмеричную или шестнадца-теричную системы счисления, а также символическое (мнемоническое) кодирование.



Современные микро-ЭВМ оперируют со словами большой разрядности (от 8 до 32), поэтому использование восьмеричного кодирования часто оказывается недостаточно эффективным, и наибольшее распространение для кодирования числовых данных в микропроцессорных ЭВМ получила шестнадцатеричная система счисления (гексадецимальная, или сокращенно HEX).

В этой системе [7] для представления десятичных чисел от О до 15 используются шестнадцать символов, а именно: О, 1, 2, 3, 4, 5, 6, 7, 8, 9, Л, В, С, D, Е, F, причем буквенные символы применяются для обозначения десятичных чисел 10, II, 12, 13, 14, 15 соответственно. Перевод же любого двоичного числа в шестнадцатерич-ное осуществляется путем разбиения его на группы по четыре разряда, начиная справа для целой части числа Таблица 2.3 И слева - ДЛЯ дробной. Таким образом, табл. 2.2 в шестнадцатеричной системе счисления приводится к виду табл. 2.3.

Однако и в таком виде составлять программу также неудобно, так как программисту нужно помнить шест-надцатеричные коды всех команд, используемых в ЭВМ, а их число, как уже отмечалось, может составлять несколько сотен. Поэтому для упрощения процесса записи, проверки и чтения программ используется мнемоническое, или символическое, кодирование, при котором каждая машинная команда обозначается трех-, четырехбуквенным мнемоническим символом. Эти символы выбираются обычно так, чтобы они напоминали смысловое содержание соответствующей команды. Например, команды ADD (add - сложить), SUB (substract - вычесть), CMP (compare - сравнить) и т. д. Символические обозначения и конкретный набор команд различны для различных микропроцессорных комплектов. В этой книге мы будем в основном придерживаться мнемоники, принятой для микропроцессоров серии К580. Таким образом, окончательная форма записи строки программы табл. 2.3 примет вид табл. 2.4.

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

Адрес

Содеримое

ООО С

86 0033

«-. -.-•

(12),о

Прибавить (51),0



[0] [1] [2] [3] [4] [ 5 ] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] [64] [65] [66] [67] [68] [69] [70] [71] [72] [73] [74] [75] [76] [77] [78] [79] [80] [81] [82] [83] [84] [85] [86] [87] [88] [89] [90] [91] [92]

0.0009