- •Программное управление — основа автоматизации вычислительного процесса
- •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
5.14 Последовательность работы пк при выполнении программы
Программа решения задачи состоит из последовательности команд, которые выполняются друг за другом. Исключения составляют команды передачи управления, изменяющие естественный ход выполнения программы путем передачи управления по имеющемуся в них явному или неявному адресу.
Каждая команда программы начинает исполняться сразу, как только ее адрес (смещение) поступит в регистр микропроцессора Instructor Pointer (IP). Для выполнения любой, даже самой короткой команды в МП типа CISC требуется несколько тактов.
1. Первый такт у всех команд одинаковый — по адресу, поступившему в IP, выполняется считывание кода команды и передача этого кода в блок регистра команд (БРК) микропроцессора. Более подробно последовательность работы машины в этом такте можно описать следующим образом (здесь и далее указываются только основные управляющие сигналы):
в регистр IP поступает сигнал считывания информации, и считанный код адреса смещения команды (Асмещ) поступит на вход узла формирования адреса в У У;
на второй вход этого устройства из МПП поступит считанный из регистра сегмента кода (CS) начальный адрес кодового сегмента;
в УФА эти коды сложатся и сформируется абсолютный адрес команды по формуле:
Аабс = А’сегм * 16 + Асмещ;
абсолютный адрес по кодовым шинам адреса (КША) поступит в регистр адреса оперативного запоминающего устройства (ОЗУ), и будет подготовлена соответствующая этому адресу ячейка памяти для считывания информации;
в ОЗУ поступит управляющий импульс считывания, и код команды из ячеек памяти будет передан на кодовые шины данных (КШД). Количество считанных ячеек зависит от длины кода считываемой команды;
по КШД код команды пройдет на регистр данных ОЗУ и будет записан обратно в ячейки памяти, из которых он считывался (будет регенерирован);
одновременно по тем же КШД код команды пройдет в УУ и будет записан в БРК.
Второй и последующие такты команды зависят от кода этой команды и в первую очередь от кода операции (КОП). Рассмотрим дальнейшую работу ПК применительно к выполнению ассемблерной команды ADD AX , Pole.
2. В соответствии с данной командой во втором такте должен быть расшифрован код операции команды для определения набора управляющих сигналов, необходимых для выполнения команды, из регистра АХ считано первое число, участвующее в операции, и это число помещено в регистр Perl АЛУ. Для этого:
в начале второго такта выполнения команды код операции, соответствующий ассемблерному обозначению ADD, поступит из БРК на вход дешифратора операций (ДШО) устройства управления, в котором по данному коду будет выбрана одна из шин;
эта шина является адресной шиной ПЗУ микропрограмм, инициирующей группу ячеек памяти, содержащих сигналы, необходимые для управления выполнением операции сложения. Под действием этих управляющих сигналов в этом же втором такте из БРК будет считан адрес первого числа -АХ, код которого пройдет транзитом через УФА и по КША поступит в МПП;
в МПП будет подготовлен для работы регистр АХ, и из этого регистра будет считано первое число, которое по КШД пройдет в Perl АЛУ.
3. В третьем такте выполнения команды ADD AX, Pole из инициированных ячеек ПЗУ микропрограмм будут считаны сигналы, которые выполнят следующие действия:
считают второй адрес из команды, находящейся в БРК. Ассемблерное имя этого адреса Pole, но в коде машинной команды будет находиться уже двоичный код адреса Лсмеш, взятый из таблицы адресов именованных полей памяти (эту таблицу можно видеть в конце листинга программы);
передадут этот адрес на вход УФА. На второй вход УФА поступит начальный адрес сегмента данных Лсеш из регистра DS. В УФА будет сформирован абсолютный адрес второго числа:
Аабс = А’сегм * 16 + Асегм
(составляющие Абазы и Аинд в команде не использованы);
адрес Аабс по КША пройдет в ОЗУ, где по этому адресу будет считано второе число;
по КШД считанное число поступит в Рег2 АЛУ и обратно в ОЗУ для регенерации.
4. В четвертом такте все управляющие сигналы поступят в АЛУ, где:
число из Perl будет передано на один вход сумматора;
число из Рег2 будет передано на второй вход сумматора;
в сумматоре числа сложатся и сумма поступит в Perl АЛУ.
5. В пятом, последнем такте выполнения команды ADD AX, Pol e сумма чисел из АЛУ должна быть передана и записана в регистр АХ МПП, а в регистре IP — сформирован адрес смещения следующей команды программы. Для этого:
из кода команды в БРК будет считан первый адрес — АХ, который транзитом через УФА пройдет по КША в МПП, где инициирует для приема информации регистр АХ;
из Perl АЛУ будет считана сумма чисел, которая по КШД пройдет на вход МПП и будет записана в регистр АХ;
в регистр IP будет добавлено число 6, равное длине выполненной команды (команда ADD AX, Pole имеет длину 6 байт);
Поскольку в регистре IP сменился код адреса смещения, ПК приступит к выполнению следующей команды программы.
В случае выполнения команд передачи управления в конце такой команды в IP добавится не длина выполненной команды, а разность между адресом смещения текущей команды и адресом смещения команды, к которой передано управление (при передаче управления в другой сегмент будет изменено и содержимое регистра CS).
