ДАННЫЕ И ПРОГРАММЫ
Содержание этой главы носит в основном справочный характер. В ней приведены лишь основные понятия и самые общие сведения о работе микро-ЭВМ, без которых неподготовленному читателю будет трудно проследить работу основных ее узлов, описанию которых посвящены последующие главы книги. Читатель, знакомый с основами построения ЭВМ и программирования, может сразу перейти к следующей главе.
Как уже говорилось в предыдущей главе, чтобы решить задачу на машине, нужно ее запрограммировать; т. е. составить определенную последовательность команд (программу), которая, вместе с данными должна быть введена в память машины. В процессе решения задачи центральный процессор обращается к памяти машины, выполняет команды, извлеченные из памяти, обрабатывает в соответствии с этими командами данные, извлеченные из той же памяти и полученные от внешних устройств, и в зависимости от результатов обработки переходит к выполнению одной или нескольких других команд. Последовательность команд, приводящая к решению задачи, называется программой решения задачи. Каждая машина характеризуется определенным набором операций (системой команд), или машинным языком, которые должны быть известны пользователю, решающему свою задачу на данной машине.
Чтобы машина могла воспринимать передаваемые ей команды и данные, они должны быть представлены в двоичной форме. С этой целью каждой команде ставится в соответствие двоичный код, а все числовые значения выражаются в двоичной системе счисления.
Под двоичной системой счисления подразумевается позиционная весомозначная система с основанием 2 и с цифрами 0,1. Термин "позиционная весомозначная" означает, что в зависимости от положения цифры в числе ей приписываются разные значения, или вес. В наиболее распространенных системах счисления этот вес равен степени основания, показатель которой ра-вен n — 1, где п — номер разряда, отсчитываемый справа налево. Системы счисления получают наименование в зависимости от основания.
Так, в десятичной системе счисления основанием является 10, в двоичной — 2, в восьмеричной — 8, в шестнадца-теричной — 16 и т. п. При этом количество используемых цифр для представления чисел равно основанию системы счисления. В двоичной системе используются всего две цифры: 0 и 1. В десятичной системе используются 10 цифр от 0 до 9, в восьмеричной — восемь цифр, т. е. первые восемь цифр десятичной системы (от 0 до 7). В шестнадцатеричной системе счисления используются все цифры десятичной системы, а в качестве недостающих шести цифр используются первые шесть букв латинского алфавита: А, В, С, D, Е, F. Примеры записи десятичных чисел от 0 до 16 и от 248 до 255 в двоичной, восьмеричной и шестнадцатеричной системах счислений приведены в табл. 3.1. Десятичное число 255 является наибольшим представимым в двоичной системе счисления при условии использования всего восьми разрядов для записи чисел. Для представления чисел, больших 255, необходимо в двоичной системе счисления использовать большее число разрядов.
Чтобы отличить число, записанное в той или иной системе счисления, от числа, записанного в другой системе счисления, в конце записи обычно ставят соответствующие используемому основанию цифры или буквы (иногда в виде индексов, например 3810). Для десятичной системы счисления часто используется буква D, для двоичной — В, для восьмеричной — Q, для шестнадцатеричной — Н. Например:
216 D = 11011000 В = 330 Q = D8 Н.
Как следует из табл. 3.1, наиболее громоздким из рассмотренных представлений, в особенности для больших чисел, является двоичное представление, а наиболее компактным — шестнадца-теричное представление, не совсем удобное для восприятия. Чтобы воспользоваться числовыми результатами в шестнадцатеричной системе счисления, необходимо перевести их в более привычную десятичную форму. Способы перевода чисел из одной системы счисления в другую неоднократно описывались в литературе и здесь рассматриваться не будут.
Таблица 3.1
Представление чисел |
|||||
Десятичное |
Двоичное |
Восьмеричное |
Шестнадцате-ричное |
||
0 |
00000000 |
000 |
00 |
||
1 |
00000001 |
001 |
01 |
||
2 |
00000010 |
002 |
02 |
||
3 |
00000011 |
003 |
03 |
||
4 |
00000100 |
004 |
04 |
||
5 |
00000101 |
005 |
05 |
||
6 |
00000110 |
006 |
06 |
||
7 |
00000111 |
007 |
07 |
||
8 |
00001000 |
010 |
08 |
||
9 |
00001001 |
011 |
09 |
||
10 |
00001010 |
012 |
ОА |
||
11 |
00001011 |
013 |
0В |
||
12 |
00001100 |
014 |
ОС |
||
13 |
00001101 |
015 |
OD |
||
14 |
00001110 |
016 |
ОЕ |
||
15 |
00001111 |
017 |
OF |
||
16 |
00010000 |
020 |
10 |
||
248 |
11111000 |
370 |
F8 |
||
249 |
11111001 |
371 |
F9 |
||
250 |
11111010 |
372 |
FA |
||
251 |
11111101 |
373 |
FB |
||
252 |
11111100 |
374 |
FC |
||
253 |
11111101 |
375 |
FD |
||
254 |
11111110 |
376 |
FE |
||
255 |
11111111 |
377 |
FF |
||
не совсем удобно ввиду непривычности использования буквенных обозначений числовых величин.
Весьма распространенным способом представления данных и команд является их восьмеричное представление. Оно довольно компактно и легко переводимо в двоичную форму. Для этого достаточно запомнить двоичные коды трех первых двоичных разрядов (см. табл. 3.1). Перевод двоичного числа в восьмеричное производится следующим образом. Двоичный код разбивается справа налево на триады, каждая триада считается самостоятельным двоичным кодом трехразрядного числа и заменяется соответствующей цифрой от 0 до 7. Перевод восьмеричного кода в двоичный производится аналогичным образом: каждая цифра от 0 до 7 заменяется соответствующим двоичным кодом.
Пусть, например, требуется записать восьмеричный код восьмиразрядного двоичного числа 10110101 В. Разбитый на триады двоичный код будет 10 НО 101 В. После замены каждой триады двоичным кодом получим 265 Q. Двоичное представление восьмеричного числа 312Q получается также просто: 11 001 010 В или 11001010 В.
Представление двоичных чисел в табл. 3.1 в виде восьмиразрядных кодов приведено не случайно. Наименьшей единицей информации, которая может быть представлена в ЭВМ, является двоичный разряд или бит. Бит может иметь два значения: О или 1, а соответствующий ему электрический сигнал — два уровня напряжения. Группа из восьми двоичных разрядов называется байтом. Более крупными единицами информации являются килобит (1024 = 210 бит, или двоичных разрядов), килобайт (1024 = 210 байт) и мегабайт (1048576 =220 байт). Иногда выделяют группу из четырех двоичных разрядов, называемую ниблом. Этим понятием пользуются при рассмотрении процессов выполнения арифметических операций в двоично-десятичных кодах.
Остановимся теперь на определении понятия машинной команды как элемента записи машинной программы.
Под командой подразумевается указание, записанное на машинном языке микро-ЭВМ и определяющее ее действия при выполнении отдельной операции или части вычислительного процесса. Команда может быть представлена в символической форме или в форме кодов (шестнадцатеричных, восьмеричных, двоичных). Таким образом, под программой подразумевается фиксированная последовательность команд, воспринимаемых машиной как единая целая группа указаний, позволяющая решить поставленную пользователем задачу.
В качестве формального языка для описания данных и программ их обработки на микро-ЭВМ используются не только машинный язык, но и специальные языки программирования, такие как, например, БЕЙСИК. Программа на таком языке, называемом иногда языком высокого уровня, не может непосредственно восприниматься микропроцессором. В совершенных ЭВМ специальная программа, называемая интерпретатором или компилятором, преобразует программу на языке высокого уровня в эквивалентную ей программу на языке машины.
Программа, написанная на языке Ассемблер, переводится пользователем в машинные восьмеричные коды с помощью таблицы кодов (табл. 4.1 — 4,3) и вводится вместе с данными также в восьмеричных кодах в ПМ-ЭВМ с клавиатуры и размешается в оперативном запоминающем устройстве, в котором выделяется специальная область, где пользователь может разместить свою программу.
Процесс размещения программы в памяти может быть легко представлен с помощью простой модели запоминающего устройства, имеющей вид обычного книжного стеллажа или открытой полки, разделенной на отдельные ячейки. Каждой ячейке присвоен номер, называемый адресом. В ячейку можно поместить данные ограниченного объема: один байт или восьмиразрядный двоичный код. Команда, занимающая три машинных слова (три байта), может быть размещена лишь в трех ячейках памяти. При этом первый байт размещается в ячейке по указанному адресу, а остальные два — в последующих ячейках памяти. Важно при этом правильно поместить начальную команду программы, которая должна находиться в той ячейке, с которой микропроцессор начинает свою работу.
Программа для ПМ-ЭВМ представляет собой последовательность указанных кодов, из которых левый код — адрес ячейки памяти, а правый — команда или данные.
Предположим, что соответствующие программе и исходным данным найденные коды введены в ПМ-ЭВМ, На чем основаны процессы преобразования всей этой информации в машине?