![]() |
Главная Микропроцессорные системы [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
Здесь в качестве кода операции использовано число 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. Язык программирования, в котором каждая команда на машинном языке заменена на сокращенную символическую запись, называется языком ассемблера. Перевод
[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.0011 |