logo
05-12-2013_23-31-23 / Автоматизация_Staroverov

Глава 19. Математическое и программное обеспечение микроЭвм

  1. СИСТЕМЫ СЧИСЛЕНИЯ

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

В непозиционных системах счисления значение любой цифры ие зависит от занимаемой ею позиции, т. е. от занимаемого места в совокупности цифр. В римской системе счисления имеется всего семь цифр: единица (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)—деся­тичная.

В цифровых ЭВМ широко применяются системы, отличные от десятичной: двоичная, восьмеричная и шестнадцатеричная.

Двоичная система счисления. Для этой системы й = 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) .

Шестнадцатеричная система счисления позволяет более ком­пактно записывать двоичные цифры по сравнению с их записью в восьмеричной системе счисления. Она находит применение в устройствах ввода и вывода и устройствах изображения порядков чисел некоторых ЭВМ.

Двоично-десятичная система счисления. Представление числа в двоично-десятичной системе осуществляется следующим обра­зом. За основу берут десятичную запись числа, а затем каждую ее цифру (от 0 до 9) записывают в виде четырехразрядного двоич­ного числа, называемого тетрадой, т. е. для изображения каждой цис}юы десятичной системы применяют не один знак, а четыре.

Например, десятичное число 647,59 будет соответствовать двоично-десятичному числу 0110 0100 0111, 0101 1001.

Двоично-десятичная система счисления используется как про­межуточная система счисления и для кодирования входных и вы­ходных чисел.

  1. ПРАВИЛА ПЕРЕВОДА ОДНОЙ СИСТЕМЫ

СЧИСЛЕНИЯ В ДРУГУЮ

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

Чтобы перевести целое число из любой системы счисления в другую, необходимо последовательно де­лить это число на основание новой системы до тех пор, пока не получится частное, меньшее делителя. Число в новой системе следует записывать в виде остатков деления, начиная с послед­него, т. е. справа налево.

Например, переведем десятичное число 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-е


  1. 25000 3-є произведение

х 2

  1. 50000 4-е произведение

х 2

  1. 00000 5-е произведение

Так как дробная часть 5-го произведения состоит из одних нулей, то дальнейшее умножение является излишним. Это озна­чает, что заданная десятичная дробь переводится в двоичную систему без погрешности, т. е. (0,65625)10 = (0,10101)й.

Перевод из восьмеричной и шестнадцатеричной систем исчис­ления в двоичную и обратно не сложен. Это объясняется тем, что их основания (й — 8 и А = 16) соответствуют целым степеням двух (2® = 8 и 24 — 16).

Для перевода восьмеричных или шестнад­цатеричных. чисел в двоичную систему счис­ления достаточно каждую их цифру заменить соответственно трех- или четырехразрядным двоичным числом.

Например, переведем восьмеричное число (571)8 и шестнадца­теричное число (179) в двоичную систему счисления.

В обоих случаях получаем одинаковый результат, т. е. (571)8

(179) = (101111001)*.

Для перевода числа из двоично-десятичной си­стемы счисления в десятичную необходимо каждую тетраду числа, представленную в двоично-десятичной системе счисления, заменить цифрой, представленной в десятич­ной системе счисления.

Например, запишем число (0010 0001 1000, 0110 0001 ОПОЬ—ю в десятичной системе счисления, т. е.

(0010 0001 1000, 40110 0001 0110)2_ш = (218,625)10.

  1. ФОРМЫ ПРЕДСТАВЛЕНИЯ ЧИСЕЛ В ЭВМ.

МАШИННЫЕ КОДЫ

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

Естественная форма записи. Число представляют в виде последовательности двоичных цифр, разделенных запятой на це­лую и дробную части. Запятая фиксируется перед старшим циф­ровым разрядом. Это обеспечивает гарантию того, что в процессе умножения произведение никогда не может получи-т-ся больше единицы. Каждую двоичную цифру записывают в строго опреде­ленном разряде. Специальный разряд отводят для представления знака числа. Если это число положительное, то в знаковом разряде записывается нуль, если отрицательное число—единица.

В современных ЭВМ (типа СМ) запятую фиксируют справа от самого младшего разряда и таким образом все числа представля­ют целыми.

В разрядной сетке ЭВМ, работающих с числами с фиксирован­ной запятой, для представления числа помимо знакового разряда выделяют п двоичных разрядов. «Вес» каждого разряда изменяется от минимального значения (2~п) до максимального (—2~'). Сле­довательно, числа могут быть представлены от минимального отрицательного числа шш)а = 1,11 ... 1 до максимального по­ложительного тах)а = 0,11 ... 1. Для представления чисел с фиксированной запятой, которые не укладываются в диапазоне от АюШ до АШах» используют масштабные коэффициенты. С их помощью исходные, промежуточные и конечные результаты умно­жения на масштабные коэффициенты должны находиться в задан­ном диапазоне.

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

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

А = а X йр, '

где а — цифровая часть числа (мантисса); р — целое положи­тельное или отрицательное число, называемое порядком', й — ос­нование системы счисления.

Число 123,45 в десятичной системе может быть записано так! 123,45 = 0,12345X 103= 0,012345х104 и т. д. Числа 0,12345 и

  1. 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), то обратный код этого числа совпадает с прямым кодом, т. е. ]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.

Дополнительный код, как и обратный, используется для за­мены операции вычитания сложением.

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

  1. ОСНОВЫ ПРОГРАММИРОВАНИЯ

Процесс подготовки и решения задачи на ЭВМ склады­вается из разработки алгоритма решения задачи и программиро­вания.

Алгоритмом называется точная инструкция, определяющая пос­ледовательность элементарных операций над исходными данными, выполнение которых обеспечивает решение поставленной задачи.

Существуют две формы описания алгоритма: описание на ес­тественном языке и представление в структурной схеме.

Описание на естественном языке представляет собой разверну­тую форму записи всех операций. Поясним представление алго­ритма в такой форме на примере вычисления К = (4.Х® —6)/(ЗХ + 6) при X = 3.

На естественном языке алгоритм будет выглядеть следующим образом:

  1. Возвести X в степень 2.

  2. Результат действия 1 (X2) умножить на 4.

  3. От результата действия 2 (4Ха) отнять число 6.

  4. Умножить X на число 3.

  5. К результату действия 4 (ЗХ) прибавить число 6.

  6. Результат действия 3 разделить на результат действия 5.

В практике программирования вместо развернутой записи

используют его описание в виде структурной схемы, которая запи­сывается графическими обозначениями (рис. 152).

Поясним представление алгоритма в форме структурной схемы на примере составления программы вычисления корней квадрат­ного уравнения Ха + ЬХ 4- с = 0. Кор ни этого уравнения находят по формуле

: 2 = (—Ь/2) ± Vа/4) — с.

Порядок вычислений зависит от знака подкоренного выраже­ния I).

основы 1

АВТОМАТИЗАЦИИ ПРОИЗВОДСТВА 1

ЭЛЕМЕНТЫ АВТОМАТИКИ 5

43- 47

-ЕЬ 47

=ЕЬ 47

^-04 ж 47

—СИ 48

Рис. 152. Графическое обозначение блоков программы:

Рис.. 153. Структурная схема вычисле­ния корней квадратного уравнения

/ — вычислительный блок (обработка числового материала команд в т. д.); 2 — подго­товительный блок (операции ввода н вывода информации); 3 — указание последователь- вости выполнения операций; 4 — логический блок (организация разветвления программ); 5 — стандартный блок (выполнение подпрограмм); 6 — конвектор (связь блоков): 7 — операция начала в конца программы

Процесс решения задачи мо­жно расчленить на четыре этапа:

  1. Вычисление £=(62/4)— с.

  2. Проверка условий О^>0 или D < 0.

  3. Вычисление действитель­ных корней, если О

  4. Вычисление мнимых кор­ней, если И < 0.

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

Условный переход — измене­ние порядка выполнения про­граммы в зависимости от результата проверки логического усло­вия. В алгоритме, проведенном на рис. 153, переход от логического блока к арифметическим блокам является условным, а переход от одного блока к другому без проверки каких-либо условий — безусловным.

Следующий шаг подготовки — перевод разработанного ал­горитма на язык машины. Для достижения взаимодействия между ЭВМ и пользователем (оператором) и решения поставленных за­дач требуется знание обеими сторонами общего для них языка:

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

Все известные языки программирования условно можно разде­лить на четыре уровня.

Первый уровень — машинные коды. Это внутренний язык команд конкретной ЭВМ. Он содержит полный перечень опе­раций, выполняемых ЭВМ с их числовыми кодами.

Второй уровень — автокоды и мнемокоды. В них некоторые простейшие часто используемые последовательности машинных команд объединяются в микрокоманды. Основное от­личие автокодов и мнемокодов от машинных языков состоит в том, что вместо двоичного кода операции пишется его мнемоническое обозначение, а вместо двоичного представления адреса ячейки употребляется буквенное (символьное) имя (идентификатор). Языки этого уровня называют также языками ассемблера.

При использовании мнемокода не требуется распределять па­мять машин для конкретной задачи. Для задания формата вводи­мых и выводимых данных в языках второго уровня имеются спе­циальные средства. Все это облегчает работу программистов и поз­воляет записывать решение задач в сокращенной форме.

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

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

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

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

При разработке систем математического обеспечения автомати­ческая система управления производством (технологическими про­цессами) часто используются международные алгоритмические и проблемно-ориентировочные языки АЛГОЛ-бО, КОБОЛ, ФОРТРАН, РЬ/1 и др.

АЛГОЛ-бО — алгоритмический язык предназначен для описа­ния вычислительных процессов в форме, используемой в научно-тех­нических расчетах. АЛГОЛ-бО характеризуется значительным сходством с математическим языком.

КОБОЛ— проблемно-оперативный язык, разработанный в США как средство программирования для обработки данных в коммер­ческих задачах, связанных с обработкой больших массивов и ин­формации, а также для обработки информации при последовательно повторяющихся операциях. В словарном запасе этого языка много слов, собственно бесполезных для программирования, но облегчающих чтение программы.

ФОРТРАН — один из наиболее простых и широко применяв* мых алгоритмических языков. Язык разработан для использова­ния в области научных и технических исследований. Он успешно применяется и для решения информационно-логических и эконо­мических задач. ФОРТРАН используется во многих типах машин.

PL/1 — универсальный язык программирования научно-тех­нических, коммерческих задач и задач управления производством. PL/1 объединяет возможности языков высшего уровня, таких как АЛГОЛ, КОБОЛ, ФОРТРАН, причем возможности этих языков еще больше расширены. Язык построен по блочной струк­туре, поэтому для различных применений могут быть образованы его подмножества. Он является многоцелевым и достаточно слож­ным. Однако программисту не обязательно все знать о нем, т. е. для программирования отдельных задач используется только часть средств языка.

Программное обеспечение мнкроЭВМ по многим характери­стикам напоминает программное обеспечение обычных ЭВМ и мини-ЭВМ, но имеет специфические особенности, которые обуслов­лены их архитектурой.

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

Для небольших задач используется ручное программирование в машинных командах.

Программирование на языке ассемблера применяется для про­граммирования на уровне команд. К достоинствам программи­рования на языке ассемблера можно отнести то, что символические коды легче воспринимаются и в них легко вносить изменения, а к недостаткам — то, что требуется специальная аппаратура проек­тирования, терминал и знание языка ассемблера.

Программирование на языке высокого уровня применяется для крупных программ. Такой язык легко адаптируется к различным ЭВМ.

Ца базе языка PL/1 для микроЭВМ разработан специальный язык PL/М, представляющий собой проблемно-ориентированный язык для описания прикладных задач и программирования микро­процессоров.

Контрольные вопросы и задания

  1. Чем отличаются позиционные системы счисления от непозициоиных?

  2. Дайте сравнительную оценку систем счисления, применяемых в ЭВМ.

  3. Какие достоинства и недостатки характерны для двоичной системы счисления?

  4. Перечислите общие правила перевода чисел из одной системы счисления в другую.

  5. Преобразуйте число 135ю по схеме (135)10 -» (135)а -» (135)g -*■ (135)lg -*■ -*■ (135)10.

  6. Дайте сравнительную оценку естественной и нормальной формам пред­ставления чисел.

  7. Как производится нормализация числа?

  8. Представьте десятично число 99 в двоичной системе счисления в прямом, обратном и дополнительном кодах.

  9. Что называется алгоритмом решения задачи? Расскажите о формах записи алгоритмов.

  10. Дайте сравнительную оценку уровней различия языков программиро­вания.

  11. Перечислите основные современные проблемно-ориентированные языки и дайте им характеристики.

  12. На каких языках осуществляется программирование микроЭВМ?

  13. Какие языки используют для программирования управляющих ЭВМ?