Глава 19. Математическое и программное обеспечение микроЭвм
-
СИСТЕМЫ СЧИСЛЕНИЯ
Системой счисления называют совокупность правил представления чисел с помощью различных цифровых' знаков. Системы счисления подразделяются на два типа: непозиционные и позиционные.
В непозиционных системах счисления значение любой цифры ие зависит от занимаемой ею позиции, т. е. от занимаемого места в совокупности цифр. В римской системе счисления имеется всего семь цифр: единица (I), пять (V), десять (X), пятьдесят (Ь), сто (С), пятьсот (О), тысяча (М). С помощью этих чисел (символов) остальные числа записываются с применением сложения и вычитания. Например, IV есть запись числа 4 (V—I), VI — числа б (V + I) и т. д. Число 666 записывается в римской системе так: ОСЬХУ1.
Эта форма записи менее удобна, чем та, которой мы пользуемся в настоящее время. Здесь шесть единиц записываются одним символом (VI), шесть десятков—другим (ЬХ), шесть сотен — третьим (ОС). С числами, записываемыми в римской системе счисления, очень трудно производить арифметические действия.
Также общим недостатком непозиционных систем является сложность представления в них достаточно больших чисел, так при этом получается чрезвычайно громоздкая запись.
Теперь рассмотрим то же число 666 в позиционной системе счисления. В нем один знак 6 обозначает число единиц, если он находится на последнем месте, число десятков — если на предпоследнем, и число сотен, если он стоит на третьем месте от конца. Такой принцип записи чисел называется позиционным (поместным). При такой записи каждая цифра получает числовое значение не только в зависимости от своего начертания, но и от того, на каком месте она стоит при записи числа.
В позиционной системе счисления любое число, изображенное в виде А = ... ап_!ап, может быть представлено в виде
суммы
А = а1гіт_1 + а2йт~2 -(-.«» ап_1гіт-"+І + ап(1т' ~п,
где п — конечное количество разрядов в изображении числа; аг — цифра і-го разряда; сі — основание системы счисления; і — порядковый номер разряда; йт~1 — «вес» «-го разряда. Цифры а1 должны удовлетворять неравенству 0 ^ а ^ (сі — 1).
Для десятичной системы счисления й — 10 и аг — 0; 1; 2; 3; 4; 5; 6; 7; 8; 9.
Так как цифры, состоящие из единиц и нулей, могут восприниматься как десятичные или двоичные числа, то при их совместном применении обычно указывается основание системы счисления, например (1100)2—двоичная система, (1100)1о—десятичная.
В цифровых ЭВМ широко применяются системы, отличные от десятичной: двоичная, восьмеричная и шестнадцатеричная.
Двоичная система счисления. Для этой системы й = 2, и здесь допускается существование только двух цифр, т. е. аг — 0 или 1.
Любое число, выраженное в двоичной системе, представляется в виде суммы произведения степеней основания два, умноженных на двоичную цифру данного разряда. Например, число 101,01
можно записать так: 101,01 = 1 Х22 + 0x2і + 1 Х2° + 0х2-1 +
+ 1 х2 2, что соответствует числу в десятичной системе: 4 +
+ 1 + 0,25 = 5,25.
В большинстве современных цифровых ЭВМ двоичную систему счисления используют для представления чисел в машине и выполнения над ними арифметических операций.
Двоичная система счисления по сравнению с десятичной позволяет упростить схемы и конструкции арифметического и запоминающего устройства, повысить надежность ЭВМ. Цифра каждого разряда двоичного числа представляется состояниями «вклю- чено-выключено» таких элементов, как транзисторы, диоды, магнитные сердечники, которые надежно работают в состояниях «включено-выключено».
К недостаткам двоичной системы относится необходимость перевода по специальной программе исходных цифровых данных в двоичную систему счисления, а результатов решения — в десятичную. .
Восьмеричная система счисления. Эта система имеет основание d = 8. Для изображения чисел используются цифры: 0; 1; 2; 3; 4; 5; 6; 7.
Восьмеричную систему счисления используют в ЭВМ как вспомогательную при подготовке задач к решению (в процессе программирования), при проверке работы машины и отладке программы. Эта система дает более короткую запись числа по сравнению с двоичной системой. Восьмеричная система счисления позволяет просто перейти к двоичной системе.
Шестнадцатеричная система счисления. Эта система имеет основание d = 16. Для изображения чисел используется 16 знаков: 0; 1; 2; 3; 4; 5; 6; 7; 8; 9; А; В; С; D; Е; F; причем знаки А ... F изображают десятичные числа 10; 11; 12; 13; 14 и 15. Шестнадцатеричное число (1D4F)16 будет соответствовать десятичному 7503, так как (1D4F)18 — 1 ХІ63 + 13Х 16а + 4Х161 + -f 15X16» = (7503)1О .
Шестнадцатеричная система счисления позволяет более компактно записывать двоичные цифры по сравнению с их записью в восьмеричной системе счисления. Она находит применение в устройствах ввода и вывода и устройствах изображения порядков чисел некоторых ЭВМ.
Двоично-десятичная система счисления. Представление числа в двоично-десятичной системе осуществляется следующим образом. За основу берут десятичную запись числа, а затем каждую ее цифру (от 0 до 9) записывают в виде четырехразрядного двоичного числа, называемого тетрадой, т. е. для изображения каждой цис}юы десятичной системы применяют не один знак, а четыре.
Например, десятичное число 647,59 будет соответствовать двоично-десятичному числу 0110 0100 0111, 0101 1001.
Двоично-десятичная система счисления используется как промежуточная система счисления и для кодирования входных и выходных чисел.
-
ПРАВИЛА ПЕРЕВОДА ОДНОЙ СИСТЕМЫ
СЧИСЛЕНИЯ В ДРУГУЮ
Обмен информацией между устройствами ЭВМ производится в основном числами, представленными в двоичной системе счисления. Однако пользователю информация выдается числами в десятичной системе счисления, а адресация команд представляется в восьмеричной системе счисления. Отсюда возникает необходимость в процессе работы ЭВМ переводить числа из одной системы в другую. Для этого пользуются следующим общим правилом.
Чтобы перевести целое число из любой системы счисления в другую, необходимо последовательно делить это число на основание новой системы до тех пор, пока не получится частное, меньшее делителя. Число в новой системе следует записывать в виде остатков деления, начиная с последнего, т. е. справа налево.
Например, переведем десятичное число 1987 в двоичную систему счисления:
1
Число 1987 десятичной системы в двоичной системе составит 11111000011, т. е. (1987)10 = (11111000011)а.
При переходе от к а к о й-л ибо системы к десятичной число представляют в виде суммы степеней основания с соответствующими коэффициентами, а затем подсчитывают значение суммы.
Например, переведем восьмеричное число 123 в десятичное! (123)8 = 1 х8а + 2x8і + 3x8° = 64 + 16 + 3 = 83, т. е. (123)8 = (83)10.
Для перевода дробной части числа из любой системы в другую надо провести последовательное умножение этой дроби и получающихся дробных частей произведения на основание новой системы счисления. Дробная часть числа в новой системе формируется в виде целых частей получающихся произведений, начиная с первого. Процесс умножения продолжают до тех пор, пока не будет вычислено число с заданной точностью.
Например, переведем десятичную дробь 0,65625 в двоичную систему счисления:
0 | v 65625 Х 2 |
|
1 | v 31250 | 1-е |
| х 2 |
|
0 | 62500 X 2 | 2-е |
-
25000 3-є произведение
х 2
-
50000 4-е произведение
х 2
-
00000 5-е произведение
Так как дробная часть 5-го произведения состоит из одних нулей, то дальнейшее умножение является излишним. Это означает, что заданная десятичная дробь переводится в двоичную систему без погрешности, т. е. (0,65625)10 = (0,10101)й.
Перевод из восьмеричной и шестнадцатеричной систем исчисления в двоичную и обратно не сложен. Это объясняется тем, что их основания (й — 8 и А = 16) соответствуют целым степеням двух (2® = 8 и 24 — 16).
Для перевода восьмеричных или шестнадцатеричных. чисел в двоичную систему счисления достаточно каждую их цифру заменить соответственно трех- или четырехразрядным двоичным числом.
Например, переведем восьмеричное число (571)8 и шестнадцатеричное число (179)1в в двоичную систему счисления.
В обоих случаях получаем одинаковый результат, т. е. (571)8 —
(179)1в = (101111001)*.
Для перевода числа из двоично-десятичной системы счисления в десятичную необходимо каждую тетраду числа, представленную в двоично-десятичной системе счисления, заменить цифрой, представленной в десятичной системе счисления.
Например, запишем число (0010 0001 1000, 0110 0001 ОПОЬ—ю в десятичной системе счисления, т. е.
(0010 0001 1000, 40110 0001 0110)2_ш = (218,625)10.
-
ФОРМЫ ПРЕДСТАВЛЕНИЯ ЧИСЕЛ В ЭВМ.
МАШИННЫЕ КОДЫ
Существуют две основные формы представления чисел в вычислительной машине: естественная (с фиксированной запятой) и нормальная (с плавающей запятой). В зависимости от этого ЭВМ также подразделяются на две группы: вычислительные машины, работающие с числами с фиксированной запятой, и машины, работающие с числами с плавающей запятой.
Естественная форма записи. Число представляют в виде последовательности двоичных цифр, разделенных запятой на целую и дробную части. Запятая фиксируется перед старшим цифровым разрядом. Это обеспечивает гарантию того, что в процессе умножения произведение никогда не может получи-т-ся больше единицы. Каждую двоичную цифру записывают в строго определенном разряде. Специальный разряд отводят для представления знака числа. Если это число положительное, то в знаковом разряде записывается нуль, если отрицательное число—единица.
В современных ЭВМ (типа СМ) запятую фиксируют справа от самого младшего разряда и таким образом все числа представляют целыми.
В разрядной сетке ЭВМ, работающих с числами с фиксированной запятой, для представления числа помимо знакового разряда выделяют п двоичных разрядов. «Вес» каждого разряда изменяется от минимального значения (2~п) до максимального (—2~'). Следовательно, числа могут быть представлены от минимального отрицательного числа (Ашш)а = 1,11 ... 1 до максимального положительного (Атах)а = 0,11 ... 1. Для представления чисел с фиксированной запятой, которые не укладываются в диапазоне от АюШ до АШах» используют масштабные коэффициенты. С их помощью исходные, промежуточные и конечные результаты умножения на масштабные коэффициенты должны находиться в заданном диапазоне.
Подбор масштабных коэффициентов обычно представляет собой трудоемкую работу и определяется квалификацией математика- программиста, что является недостатком естественной формы представления чисел.
Нормальная форма представления чисел. В ЭВМ, работающей с числами с плавающей запятой, числа представляются в виде двух групп цифр: мантиссы и порядка числа. Здесь число А может быть записано в форме
А = а X йр, '
где а — цифровая часть числа (мантисса); р — целое положительное или отрицательное число, называемое порядком', й — основание системы счисления.
Число 123,45 в десятичной системе может быть записано так! 123,45 = 0,12345X 103= 0,012345х104 и т. д. Числа 0,12345 и
-
012345 — это мантиссы; 10 — основание десятичной системы счисления; числа 3 и 4 — порядки.
Для ввода числа в нормальной форме в ЭВМ оно записывается следующим образом: +0,12345 + 3 или +0,012345 + 4. Отрицательный знак у порядка возникает при представлении в нормальной форме дробей. Число 0,00321 = 0,321 x10”® или +321—2.
Числа, представленные в такой форме, могут быть нормализованы, т. е. приведены к виду, когда первая цифра после запятой отлична от нуля. Нормализация представления чисел позволяет сохранить в разрядной сетке большое количество значащих цифр, что повышает точность вычислений.
В зависимости от типа ЭВМ все вводимые в нее данные (сигналы) соответственно кодируются. Кодом называется способ выражения информации системой цифр, символов, отметок или сигналов. Для представления числовых значений применяются прямой, обратный и дополнительный коды.
Прямой код основан на представлении чисел в виде их абсолютного значения с кодом соответствующего знака: плюса или минуса. Число А в прямом коде обозначается [А ]пр. Прямой код двоичного числа совпадает по изображению с записью самого числа, но в разряде знака ставится 1, если число отрицательное. Например, запишем двоичные числа +0,1101 и —0,1101 в прямом коде. Если А = +0,1101, то [А ]пр = 0,1101; если А =
-
—0,1101, то Шпр = 1,1101.
Прямой код в ЭВМ используется для представления положительных чисел при их сложении в арифметических устройствах, для записи положительных и отрицательных чисел в памяти, а также в устройствах ввода-вывода.
Число А в обратном коде обозначается [А ]оСр. Если двоичное число А является положительным (Л > 0), то обратный код этого числа совпадает с прямым кодом, т. е. [А ]0(5р = [А 1™ = А. Если А < 0, то обратный код получают следующим образом. В знаковом разряде записывается единица, а в разрядах мантиссы единицы заменяют на нули, а нули на единицы. Например, если А = —1,1010101, то [Л]обр = 1,0101010.
Обратный код используется для замены вычитания сложением.
Число А в дополнительном коде обозначается [А ]доп. Дополнительный код положительного числа совпадает с его прямым кодом, т. е. при А > 0 [А ]доп = [A lup = А. Для отрицательного числа дополнительный код получается по следующему правилу. В знаковом разряде записывается единица, а в разряде мантиссы нули заменяются единицами, а единицы — нулями (аналогично тому, как это выполняется в обратном коде), после чего к младшему разряду прибавляется единица.
Таким образом, чтобы получить число в дополнительном коде, его преобразуют в обратный код, а затем к младшему разряду полученного числа прибавляют единицу. Например, представим числа Ai = 0,1111 и А2 = —0,1111 в прямом, обратном и дополнительном кодах:
[•^llnp = l-^l]o6p =
М21пр = 1,1111;
WaloCp = 1.0000;
Ь421Доп = 1,0001.
Дополнительный код, как и обратный, используется для замены операции вычитания сложением.
Модифицированный код с точки зрения конструкции арифметического устройства удобен для выявления переполнения разрядной сетки, которое может получиться при сложении чисел. Модифицированные коды отличается от простых кодов тем, что на изображение знака отводится два разряда: плюс изображается двумя нулями, а минус — двумя единицами. Преобразование двоичных чисел в модифицированные прямой, обратный и дополнительный коды производится по правилам, рассмотренным выше.
-
ОСНОВЫ ПРОГРАММИРОВАНИЯ
Процесс подготовки и решения задачи на ЭВМ складывается из разработки алгоритма решения задачи и программирования.
Алгоритмом называется точная инструкция, определяющая последовательность элементарных операций над исходными данными, выполнение которых обеспечивает решение поставленной задачи.
Существуют две формы описания алгоритма: описание на естественном языке и представление в структурной схеме.
Описание на естественном языке представляет собой развернутую форму записи всех операций. Поясним представление алгоритма в такой форме на примере вычисления К = (4.Х® —6)/(ЗХ + 6) при X = 3.
На естественном языке алгоритм будет выглядеть следующим образом:
-
Возвести X в степень 2.
-
Результат действия 1 (X2) умножить на 4.
-
От результата действия 2 (4Ха) отнять число 6.
-
Умножить X на число 3.
-
К результату действия 4 (ЗХ) прибавить число 6.
-
Результат действия 3 разделить на результат действия 5.
В практике программирования вместо развернутой записи
используют его описание в виде структурной схемы, которая записывается графическими обозначениями (рис. 152).
Поясним представление алгоритма в форме структурной схемы на примере составления программы вычисления корней квадратного уравнения Ха + ЬХ 4- с = 0. Кор ни этого уравнения находят по формуле
: 2 = (—Ь/2) ± V (Ьа/4) — с.
Порядок вычислений зависит от знака подкоренного выражения I).
основы 1
АВТОМАТИЗАЦИИ ПРОИЗВОДСТВА 1
ЭЛЕМЕНТЫ АВТОМАТИКИ 5
43- 47
-ЕЬ 47
=ЕЬ 47
^-04 ж 47
—СИ 48
Рис. 152. Графическое обозначение блоков программы:
Рис.. 153. Структурная схема вычисления корней квадратного уравнения
Процесс решения задачи можно расчленить на четыре этапа:
-
Вычисление £=(62/4)— с.
-
Проверка условий О^>0 или D < 0.
-
Вычисление действительных корней, если О
-
Вычисление мнимых корней, если И < 0.
В рассмотренном примере возникает необходимость вести вычисления по различным формулам в зависимости от получающихся промежуточных результатов. Такие вычислительные процессы называют разветвляющимися. При их описании используются понятия условного и безусловного переходов.
Условный переход — изменение порядка выполнения программы в зависимости от результата проверки логического условия. В алгоритме, проведенном на рис. 153, переход от логического блока к арифметическим блокам является условным, а переход от одного блока к другому без проверки каких-либо условий — безусловным.
Следующий шаг подготовки — перевод разработанного алгоритма на язык машины. Для достижения взаимодействия между ЭВМ и пользователем (оператором) и решения поставленных задач требуется знание обеими сторонами общего для них языка:
Первые вычислительные машины располагали только машинными языками. Они были удобны для ЭВМ, но требовали специальной подготовки программистов (составителей программ). В настоящее время наблюдается тенденция приближения языков программирования и обычной человеческой речи, что объясняется бурным развитием вычислительной техники.
Все известные языки программирования условно можно разделить на четыре уровня.
Первый уровень — машинные коды. Это внутренний язык команд конкретной ЭВМ. Он содержит полный перечень операций, выполняемых ЭВМ с их числовыми кодами.
Второй уровень — автокоды и мнемокоды. В них некоторые простейшие часто используемые последовательности машинных команд объединяются в микрокоманды. Основное отличие автокодов и мнемокодов от машинных языков состоит в том, что вместо двоичного кода операции пишется его мнемоническое обозначение, а вместо двоичного представления адреса ячейки употребляется буквенное (символьное) имя (идентификатор). Языки этого уровня называют также языками ассемблера.
При использовании мнемокода не требуется распределять память машин для конкретной задачи. Для задания формата вводимых и выводимых данных в языках второго уровня имеются специальные средства. Все это облегчает работу программистов и позволяет записывать решение задач в сокращенной форме.
Третий уровень — алгоритмические языки. Эти языки ориентированы не на типы ЭВМ, а на определенные процессы задач. Программы, составленные на таком языке, могут решаться на любой машине, для которой имеется специальная программа перевода текста на язык этой машины.
Чтобы алгоритмический язык был удобен для практического применения, он должен быть единым для широкого круга специалистов, достаточно гибким (чтобы запись команды на этом языке была компактна и наглядна), простым и удобным для публикаций.
Перевод программы на язык машины осуществляется с помощью специальной программы — транслятора, которая привязана к конкретной машине. Трансляция заключается в замене символов и синтаксиса исходного языка символами и синтаксисом входного языка с сохранением содержания переводимых выражений.
Четвертый уровень — языки, максимально приближенные к человеческому языку. Эти языки дают возможность непосредственного общения человека с ЭВМ без какой-либо специальной подготовки. Они очень удобны, но программы, составленные на них, неэкономично используют память ЭВМ и возможности самих машин.
При разработке систем математического обеспечения автоматическая система управления производством (технологическими процессами) часто используются международные алгоритмические и проблемно-ориентировочные языки АЛГОЛ-бО, КОБОЛ, ФОРТРАН, РЬ/1 и др.
АЛГОЛ-бО — алгоритмический язык предназначен для описания вычислительных процессов в форме, используемой в научно-технических расчетах. АЛГОЛ-бО характеризуется значительным сходством с математическим языком.
КОБОЛ— проблемно-оперативный язык, разработанный в США как средство программирования для обработки данных в коммерческих задачах, связанных с обработкой больших массивов и информации, а также для обработки информации при последовательно повторяющихся операциях. В словарном запасе этого языка много слов, собственно бесполезных для программирования, но облегчающих чтение программы.
ФОРТРАН — один из наиболее простых и широко применяв* мых алгоритмических языков. Язык разработан для использования в области научных и технических исследований. Он успешно применяется и для решения информационно-логических и экономических задач. ФОРТРАН используется во многих типах машин.
PL/1 — универсальный язык программирования научно-технических, коммерческих задач и задач управления производством. PL/1 объединяет возможности языков высшего уровня, таких как АЛГОЛ, КОБОЛ, ФОРТРАН, причем возможности этих языков еще больше расширены. Язык построен по блочной структуре, поэтому для различных применений могут быть образованы его подмножества. Он является многоцелевым и достаточно сложным. Однако программисту не обязательно все знать о нем, т. е. для программирования отдельных задач используется только часть средств языка.
Программное обеспечение мнкроЭВМ по многим характеристикам напоминает программное обеспечение обычных ЭВМ и мини-ЭВМ, но имеет специфические особенности, которые обусловлены их архитектурой.
Программирование можно осуществить на машинном языке, языке ассемблера и языке высокого уровня.
Для небольших задач используется ручное программирование в машинных командах.
Программирование на языке ассемблера применяется для программирования на уровне команд. К достоинствам программирования на языке ассемблера можно отнести то, что символические коды легче воспринимаются и в них легко вносить изменения, а к недостаткам — то, что требуется специальная аппаратура проектирования, терминал и знание языка ассемблера.
Программирование на языке высокого уровня применяется для крупных программ. Такой язык легко адаптируется к различным ЭВМ.
Ца базе языка PL/1 для микроЭВМ разработан специальный язык PL/М, представляющий собой проблемно-ориентированный язык для описания прикладных задач и программирования микропроцессоров.
Контрольные вопросы и задания
-
Чем отличаются позиционные системы счисления от непозициоиных?
-
Дайте сравнительную оценку систем счисления, применяемых в ЭВМ.
-
Какие достоинства и недостатки характерны для двоичной системы счисления?
-
Перечислите общие правила перевода чисел из одной системы счисления в другую.
-
Преобразуйте число 135ю по схеме (135)10 -» (135)а -» (135)g -*■ (135)lg -*■ -*■ (135)10.
-
Дайте сравнительную оценку естественной и нормальной формам представления чисел.
-
Как производится нормализация числа?
-
Представьте десятично число 99 в двоичной системе счисления в прямом, обратном и дополнительном кодах.
-
Что называется алгоритмом решения задачи? Расскажите о формах записи алгоритмов.
-
Дайте сравнительную оценку уровней различия языков программирования.
-
Перечислите основные современные проблемно-ориентированные языки и дайте им характеристики.
-
На каких языках осуществляется программирование микроЭВМ?
-
Какие языки используют для программирования управляющих ЭВМ?
- Глава 1. Общие сведения
- Основные понятия и определения
- Классификация систем автоматического управления
- Элементы автоматических систем
- Глава 2. Первичные преобразователи
- Потенциометрические первичные
- Индуктивные первичные преобразователи
- Емкостные первичные преобразователи
- Тензометрические первичные
- Глава 3. Усилители и стабилизаторы
- Электромеханические и магнитные усилители
- Электронные усилители
- Стабилизаторы
- Глава 4. Переключающие устройства и распределители
- Электрические реле
- Реле времени
- Глава 5. Задающие и исполнительные устройства
- Глава 6. Общие сведения об измерении и контроле
- Глава 7. Контроль температуры
- Глава 8. Контроль давления и разрежения
- Глава 9. Контроль расхода, количества и уровня
- Глава 11. Системы автоматики
- Глава 12. Автоматическая блокировка и защита в системах управления
- Глава 13. Системы автоматического контроля и сигнализации
- Глава 14. Системы автоматического
- Глава 15. Объекты регулирования и их свойства
- Глава 16. Типы регуляторов
- Глава 17. Конструкции и характеристики регуляторов
- Раздел IV
- Глава 18. Общая характеристика
- Глава 19. Математическое и программное обеспечение микроЭвм
- Глава 20. Внешние устройства микроЭвм
- Глава 21. Применение микропроцессорных систем
- Раздел V
- Глава 22. Общие сведения
- Глава 23. Конструкции промышленных роботов
- Глава 25. Роботизация промышленного производства
- Раздел IV
- Глава 1н, общая характеристика микропроцессорных
- 4. Гидравлические и пневматические