
- •Программное управление — основа автоматизации вычислительного процесса
- •2 Состав машинных команд
- •3 Режимы работы компьютеров
- •3.1 Однопрограммные и многопрограммные режимы
- •I.Система прерываний программ в пк
- •3.2 Адресация регистров и ячеек памяти в пк
- •3.3 Относительная адресация
- •II.Стековая адресация
- •3.4 Элементы программирования на языке ассемблер
- •4 Основные компоненты языка ассемблер
- •4.1Алфавит языка
- •4.2 Константы (числа и строки)
- •4.3 Директивы (псевдооператоры)
- •4.4 Модификаторы
- •4.5 Адресация регистров и ячеек памяти в ассемблере
- •4.6 Непосредственная адресация
- •4.7 Прямая адресация регистров мпп
- •4.8 Адресация ячеек оп
- •Основные команды языка ассемблер
- •A.Команды пересылки данных
- •I.Команды сложения, вычитания и сравнения
- •1.Команды приращения
- •A.Команды умножения
- •I.Команды безусловной передачи данных
- •4.9 Команды перехода к подпрограмме и выхода из подпрограммы
- •4.10 Команда перехода к подпрограмме: call opr
- •4.11 Команда выхода из подпрограммы
- •4.12 Команды условной передачи управления
- •4.13 Команды условной передачи управления для беззнаковых данных
- •4.14 Команды условной передачи управления для знаковых данных
- •4.15 Команды условной передачи управления для прочих проверок
- •4.16 Команды управления циклами
- •4.17 Команды прерывания
- •4.18Основные директивы ассемблера
- •4.19 Директивы определения идентификаторов
- •4.20 Директивы определения данных
- •Директивы определения сегментов и процедур
- •4.21 Директивы управления трансляцией
- •5 Краткие сведения о программировании процедур работы с устройствами ввода-вывода
- •5.1 Программирование работы с дисплеем
- •5.2 Видеооперации с прерыванием 10н bios
- •5.3 Видеооперации с прерыванием 21н dos
- •5.4 Программирование работы с клавиатурой
- •5.5 Программирование работы с принтерами
- •5.6 Печатающие устройства параллельного типа
- •5.7 Печатающее устройство последовательного типа
- •5.8 Программирование работы с файлами
- •5.9 Прерывания, используемые при работе с файлами на дисках
- •5.10 Некоторые аспекты создания исполняемых программ
- •5.11 Процедуры формирования программы
- •5.12 Структура исходной программы на языке ассемблера для получения исполняемой программы .Ехе
- •5.13 Основные сведения о листинге и его структуре
- •5.14 Особенности структуры машинных команд
- •5.14 Последовательность работы пк при выполнении программы
- •6 Краткие сведения об отладчике программ debug
- •6.1 Основные команды отладчика debug
|
|
|
Содержание
1 Введение 3
2 Состав машинных команд 5
3 Режим работы компьютеров 7
4 Основные компоненты языка 14
5 Краткие сведения о программировании процедур работы с устройствами ввода-вывода 28
6 Краткие сведения об отладчике программ DEBUG 45
Программное управление — основа автоматизации вычислительного процесса
1 Ведение
Решение задач на компьютере реализуется программным способом, то есть путем выполнения последовательно во времени отдельных операций над информацией, предусмотренных алгоритмом решения задачи.
Алгоритм — это точно определенная последовательность действий, которые необходимо выполнить над исходной информацией, чтобы получить решение задачи.
Понятие алгоритма — одно из важнейших понятий математики, ибо назначением математики и является разработка рациональных алгоритмов решения задач. Существует раздел математики — теория алгоритмов, занимающаяся разработкой методов и форм построения алгоритмов решения задач. Алгоритм решения задачи на вычислительной машине — это частный случай математического алгоритма.
Основными свойствами правильно построенного алгоритма являются:
- результативность — алгоритм должен давать конкретное конструктивное решение, а не указывать на возможность решения вообще;
- достоверность — алгоритм должен соответствовать сущности задачи и формировать верные, не допускающие неоднозначного толкования решения;
- реалистичность — возможность реализации алгоритма при заданных ограничениях: временных, программных, аппаратных;
- массовость — алгоритм должен быть массовым, пригодным для решения всех задач определенного класса на всем множестве допустимых значений исходных данных;
- детерминированность (определенность) — алгоритм должен содержать набор точных и понятных указаний, не допускающих неоднозначного толкования;
- дискретность — допустимость расчленения алгоритма на отдельные этапы с возможностью последовательной их реализации на машине;
- экономичность — алгоритм должен обеспечивать необходимую и достаточную точность решения задачи.
Алгоритм должен быть понятен (доступен) пользователю и/или машине. Доступность пользователю означает, что он должен отображаться посредством конкретных формализованных изобразительных средств, понятных пользователю. В качестве таких изобразительных средств используются следующие способы их записи: словесный, формульный, табличный, операторный, графический, макроязык программирования:
при словесном способе записи содержание последовательных этапов алгоритма описывается в произвольной форме на естественном языке;
формульный способ основан на строго формализованном аналитическом задании необходимых для исполнения действий;
табличный способ подразумевает отображение алгоритма в виде таблиц, использующих аппарат реляционного исчисления и алгебру логики для задания подлежащих исполнению взаимных связей между данными, содержащимися в таблице;
операторный способ базируется на использовании для отображения алгоритма условного набора специальных операторов: арифметических (А), логических (Р), печати (П), ввода данных (В) и т. д.; операторы снабжаются индексами и между ними указываются необходимые переходы, а сами индексированные операторы описываются чаще всего в табличной форме;
графическое отображение алгоритмов в виде блок-схем — самый распространенный способ. Графические символы, отображающие выполняемые процедуры, стандартизованы. Наряду с основными символами используются и вспомогательные, поясняющие процедуры и связи между ними;
алгоритмы могут быть записаны и в виде команд какого-либо языка программирования. Если это макрокоманды, то алгоритм читаем и пользователем-программистом, и вычислительной машиной, имеющей транслятор с соответствующего языка.
Языки, представляющие алгоритмы в виде последовательности читаемых программистом (не двоично-кодированных) команд, называются алгоритмическими языками. Алгоритмические языки подразделяются на машинно-ориентированные, процедурно-ориентированные и проблемно-ориентированные.
Машинно-ориентированные языки относятся к языкам программирования низкого уровня — программирование на них наиболее трудоемко, но позволяет создавать оптимальные программы, максимально учитывающие функционально-структурные особенности конкретного компьютера. Программы на этих языках, при прочих равных условиях, будут более короткими и быстрыми. Кроме того, знание основ программирования на машинно-ориентированном языке позволяет специалисту подробнейшим образом разобраться с архитектурой компьютера. Именно последнее в большей степени и обусловливает целесообразность ознакомления с машинно-ориентированным языком, каковым и является язык ассемблер, при изучении вычислительных систем. Большинство команд машинно-ориентированных языков при трансляции (переводе) на машинный (двоичный) язык генерируют одну машинную команду.
Процедурно-ориентированные и проблемно-ориентированные языки относятся к языкам высокого уровня, использующим макрокоманды. Макрокоманда при трансляции генерирует много машинных команд: для процедурно-ориентированной макрокоманды это соотношение в среднем «один к десяткам машинных команд», а для проблемно-ориентированной команды это «один к сотням машинных команд». Процедурно-ориентированные языки программирования — самые используемые (Basic, Pascal, C++, PL, ALGOL, COBOL и еще десятки популярных языков). При их использовании программист должен описывать всю процедуру решения задачи, тогда как проблемно-ориентированные языки (их называют также непроцедурными) позволяют лишь формально идентифицировать проблему и указать состав, структуры представления и форматы входной и выходной информации для задачи. В настоящее время эти языки разрабатываются слабо, ибо они, по существу, переродились в пакеты прикладных программ.
Все языки программирования, и языки машинно-ориентированные, и языки высокого уровня, для их восприятия компьютером требуют наличия программ перевода — трансляторов на машинный язык.
Трансляторы бывают двух типов: трансляторы-компиляторы и трансляторы-интерпретаторы.
Компиляторы при трансляции переводят на машинный язык сразу всю программу и затем хранят ее в памяти машины в двоичных кодах. Интерпретаторы каждый раз при исполнении программы заново переводят в машинные коды каждую макрокоманду и передают ее для непосредственного выполнения компьютеру. В памяти интерпретируемые программы хранятся в виде исходных макрокоманд и поэтому в любой момент читаемы человеком.
Откомпилированные двоично-кодированные программы практически человеком не читаемы. Но их можно вызвать в специальную программу-отладчик (DEBUG и его разновидности), который переведет эти программы на язык ассемблер, то есть сделает их «человекочитаемыми» (еще один довод в пользу изучения языка ассемблер).
Итак, алгоритм непосредственно воспринимается и исполняется компьютером, если он представлен в двоичном коде на машинном языке.
Алгоритм решения задачи, заданный в виде последовательности команд на языке вычислительной машины (в кодах машины), называется машинной программой. Команда машинной программы (иначе, машинная команда) — это элементарная инструкция машине, выполняемая ею автоматически без каких-либо дополнительных указаний и пояснений.
Машинная команда состоит из двух частей: операционной и адресной.
-
КОП
Адреса
Операционная часть команды (КОП — код операции) — это группа разрядов в команде, предназначенная для представления кода операции машины.
Адресная часть команды (адреса) — это группа разрядов в команде, в которых записываются коды адреса (адресов) ячеек памяти машины, предназначенных для оперативного хранения информации, или иных объектов, задействованных при выполнении команды. Часто эти адреса называются адресами операндов, то есть чисел, участвующих в операции.
По количеству адресов (al, a2, аЗ,...), записываемых в команде, команды делятся на безадресные, одно-, двух- и трехадресные.
- Типовая структура трехадресной команды:
-
КОП
а1
а2
а3
al и а2 — адреса ячеек (регистров), где расположены соответственно первое и второе числа, участвующие в операции, аЗ — адрес ячейки (регистра), куда следует поместить число, полученное в результате выполнения операции.
- Типовая структура двухадресной команды:
КОП |
а1 |
а2 |
al — это обычно адрес ячейки (регистра), где хранится первое из чисел, участвующих в операции, и куда после завершения операции должен быть записан результат операции; а2 — обычно адрес ячейки (регистра), где хранится второе участвующее в операции число.
- Типовая структура одноадресной команды:
КОП |
а1 |
al в зависимости от модификации команды может обозначать либо адрес ячейки (регистра), где хранится одно из чисел, участвующих в операции, либо адрес ячейки (регистра ), куда следует поместить число — результат операции.
Безадресная команда содержит только код операции, а информация для нее должна быть заранее помещена в определенные регистры машины (безадресные команды могут использоваться только совместно с командами другой адресности). Наибольшее применение в ПК нашли двухадресные команды.
Пример двухадресной команды, записанной на языке символического кодирования:
-
СЛ
0103
5102
Эту команду следует расшифровать так: сложить число, записанное в ячейке 0103 памяти, с числом, записанным в ячейке 5102, а затем результат (то есть сумму) поместить в ячейку 0103.
В кодах машины любая команда содержит только двоичные цифры записанных объектов.