КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Лекция 1. Основные элементы языка программирования Си
С. FC 00 20. Процессор, обнаружив команду, у которой код операции равен 00 и А1= FC, прерывает работу и ждет действий пользователя. Пользователь набирает на клавиатуре вводимое число. Это число заносится в ячейку FC и, одновременно, высвечивается на дисплее. Затем пользователь нажимает клавишу <ВВОД>. Процессор выполняет команду пересылки из ячейки FC в ячейку 20. Ввод завершился, процессор переходит к выполнению следующей команды.
Запишем команды ввода и вывода в общем виде:
А теперь запишем программу вычисления выражения (А+В)С в окончательном виде. Договоримся, что любая программа будет занимать ячейки в начале памяти. Первая команда всегда находится в ячейке 00.
Таблица 2
В ячейке 18 находится команда останова с кодом операции 77 - остановка работы машины. Содержимое адресной части в этой команде не имеет значения. Предположим, что по этой программе мы хотим вычислить выражение при А=26, В=74, С=3. Процессор начинает исполнять программу с команды, находящейся в ячейке 00. В нашей программе это команда ввода числа А. ЭВМ останавливается и ждет действий пользователя. Пользователь набирает на клавиатуре шестнадцатеричный код числа 26: 00 00 00 1А <ВВОД>. После нажатия клавиши <ВВОД> число 26 введено в ячейку 20. Следующая команда требует ввода значения В. Пользователь вводит: 00 00 00 4А <ВВОД>.
Последним вводится значение С: 00 00 00 03 <ВВОД>.
Следующие команды программы выполняются автоматически. После выполнения команды вывода (ячейка 14) происходит остановка. Она нужна для того, чтобы пользователь успел разглядеть результат на дисплее, если в программе несколько команд вывода. Для введенных значений исходных данных результат на дисплее будет таким:
Программа продолжит исполнение после нажатия клавиши <ВВОД>. Работа программы завершится по команде останова. Полученный результат - это шестнадцатеричная форма внутреннего представления. 12С16 = 30010 Мы видим, что числа вводятся и выводятся в шестнадцатеричном виде. Родной язык компьютера - это язык машинных команд и двоичных чисел. Автоматический перевод чисел из двоичной в десятичную систему и обратно производится с помощью специальных программ перевода, а это уже программный сервис.
А теперь рассмотрим, как процессор выполняет машинные команды.
Работа процессора Процессор управляет работой ЭВМ по заданной программе и выполняет операции обработки информации. Для выполнения первой задачи в состав процессора входит управляющее устройство (УУ). Вычислительным инструментом процессора является арифметико-логическое устройство (АЛУ). Третьей составляющей процессора является регистровая память. Схема состава процессора показана на рис.2.
Пусть процессор содержит всего шесть регистров.
Рис.2
Регистры РК, РР, РОН1 и РОН2 - 32-разрядные. Их размер равен размеру машинного слова и совпадает с размером ячейки. Счетчик команд (СчК) и регистр-признак знака результата (W) имеют размер в 1 байт. Исполнение программы начинается с того, что в СчК (счетчик команд) заносится 00 - адрес первой команды. Затем вступает в работу УУ (управляющее устройство). Оно организует запись в РК содержимого ячейки, адрес которой указан в СчК. По коду операции УУ определяет, не останов ли это. Если "да", то работа прекращается, иначе содержимое СчК увеличивается на 4, тем самым подготавливается выполнение следующей команды. Управляющее устройство продолжает анализировать код операции, в зависимости от которого выбирается тот или иной вариант действия. АЛУ (арифметико-логическое устройство) работает при выполнении арифметических операции, после занесения операндов в регистры общего назначения РОН1 и РОН2. Результат операции заносится в РР (регистр результата). Затем УУ переписывает результат в ячейку памяти и переходит к выполнению следующей команды. Рассмотрим подробнее этот процесс на примере выполнения арифметических операций в составленной нами программе. К моменту выполнения команды сложения Счетчик Команд (СчК) содержит адрес 0C.
1 шаг.
2 шаг.
После этого процессор начинает выполнение команды, расположенной по адресу 10 (возвращается к выполнению первого шага). Программа заканчивает работу, когда УУ обнаружит код останова 77. Первым средством автоматизации написания программ на машинном языке стала система программирования на автокоде. Автокод Автокод -машинно - ориентированный язык программирования, предложения которого по своей структуре подобны командам и обрабатываемым данным конкретного машинного языка. На языке машинных команд данные (переменные и константы) обозначаются адресами ячеек. На Автокоде константы записываются в виде десятичных чисел, заключенных в угловые скобки. Например: <5>, <-12>, <3245>.
Переменные обозначаются символическими именами - идентификаторами. Система команд Автокода ориентирована на систему команд процессора нашего учебного компьютера. Иначе говоря, каждой команде ЯМК соответствует команда Автокода. Формат любой трехместной (арифметической) команды следующий:
<мнемокод> <1-й операнд>, <2-й операнд>, <результат>
Операнды могут быть переменными или константами, результат - всегда переменная. Мнемокод - это мнемоническое (буквенное) отображение кода операции. Соответствие между кодами операций на языке машинных команд и мнемокодами Автокода показаны в следующей таблице.
Таблица 5
Вот несколько примеров команд на Автокоде (справа записаны соответствующие команды на Алгоритмическом языке):
Линейные программы (в нашем случае) состоят из команд арифметических операций, пересылки, ввода и вывода. На языке машинных команд ввод и вывод программируются командой пересылки значений через буферную ячейку FC. Однако в программах на Автокоде прямые адреса ячеек памяти не используются. Чтобы не нарушать этот принцип, определим специальные команды ввода и вывода: INPUT <переменная> - команда ввода;
Например,
INPUT A - ввод значения переменной A;
Для знакомства с программированием на Автокоде рассмотрим несколько задач.
Этапы работы над программой на Автокоде следующие: 1. Составление программы 2. Трансляция и синтаксическая отладка 3. Тестирование и отладка алгоритма
По сравнению с ЯМК, исчез этап распределения памяти. Зато появились своеобразные этапы 2 и 3, с которыми подробно разберемся ниже.
Задача 1.
Определить, к какому веку новой эры (V) относится данный год (G).
Эта задача решается с помощью линейного алгоритма. Программа на Автокоде расположена в левом столбце таблицы 6. О содержании правой половины таблицы речь пойдет позже.
Трансляция с Автокода Будем считать, считать, что наш учебный компьютер имеет постоянную память - ПЗУ, где хранится транслятор вместе со всеми другими компонентами системы программирования на Автокоде. Транслятор с Автокода - это программа, для которой исходной информацией является текст на Автокоде.
А теперь опишем алгоритм, по которому работает транслятор с Автокода после завершения синтаксической отладки.
По-прежнему это пересылка через буферную ячейку FC. Исполнение программы, полученной в результате трансляции, будет происходить так же, как и раньше при работе на ЯМК. Ввод исходных данных и вывод результатов происходит в шестнадцатеричной форме. Для того чтобы при работе на Автокоде числа вводились и выводились в десятичной системе счисления, нужно иначе организовать трансляцию команд INPUT, OUTPUT. Команда INPUT должна транслироваться в процедуру перевода введенного числа из десятичной системы в двоичную; команда OUTPUT - в процедуру перевода из двоичной системы в десятичную и вывода результата. Память распределяется транслятором "плотно". Ячейки под данные выделяются сразу же после последней команды программы. Таким образом, между данными и программой не остается пустых ячеек
А теперь рассмотрим программу, написанную на языке высокого уровня, например Си.
Дата добавления: 2014-01-11; Просмотров: 484; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |