47602 (Микропроцессор i8086/i8088), страница 2
Описание файла
Документ из архива "Микропроцессор i8086/i8088", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "курсовые/домашние работы", в предмете "информатика, программирование" в общих файлах.
Онлайн просмотр документа "47602"
Текст 2 страницы из документа "47602"
У словное графическое изображение микропроцессора приведено на рис.1.2. Назначение контактов БИС зависит от режима работы процессора. Восемь контактов имеют двойное обозначение, причём обозначения в скобках соответствуют максимальному режиму. В таблице 1.1. приведены назначения контактов, одинаковые для обоих режимов, в таблице 1.2. - назначение контактов, которые используются только в минимальном режиме, в таблице 1.3. - назначение контактов, которые используются только в максимальном режиме. Буквой z обозначены трехстабильные выходы, которые переводятся в высокоимпедансное состояние при переходе микропроцессора в режим захвата; в скобках приведены альтернативные обозначения контактов, которые встречаются в литературе.
Рис.1.2. Графическое изображение БИС МП i8086.
Таблица 1.1. Назначение контактов МП i8086 для
минимального и максимального режимов
Обозначение | Назначение | Тип | |
AD15 - АО | Address/data - мультиплексная двунаправленная шина адреса/данных (ADB - Address Data Bus), по которой с разделением во времени передаются адреса и данные. Адреса передаются в первом такте цикла шины и сопровождаются сигналом ALE, а данные - во второй половине цикла шины и сопровождаются сигналом DEN | Вход/ выход (z) | |
BHE/ST7 | Byte High Enable/Status 7 - выходной сигнал разрешения старшего байта/сигнал состояния. В первом такте цикла одновременно с адресной информацией передается сигнал ВНЕ. Активный (L) уровень ВНЕ означает, что по старшей половине AD15 - AD8 шины адреса/данных передаются 8-разрядные данные. Сигнал ВНЕ используется для разрешения доступа к старшему банку памяти или к внешнему устройству с байтовой организацией, подключенному к старшей половине шины данных. В других тактах формируется сигнал состояния ST7 | Выход (z) | |
RD | Read - выходной сигнал чтения. Указывает на то, что МП выполняет цикл чтения | Выход (z) | |
READY | Ready - входной сигнал готовности, подтверждающий, что ячейка памяти или устройство ввода/вывода, адресуемое в команде, готово к взаимодействию с МП при передаче данных | Вход | |
INTR | Interrupt Request - входной сигнал запроса (при Н-уровне) маскированного прерывания. Если прерывания разрешены, МП переходит к подпрограмме обработки прерывания, в противном случае игнорирует этот сигнал | Вход | |
RESET (CLR) | Сигнал аппаратного сброса (при Н-уровце). Переводит МП в начальное состояние, при котором сброшены сегментные регистры (кроме CS, все разряды которого устанавливаются в единичное состояние), указатель команд IP, все флаги, регистры очереди команд и все внутренние триггеры устройства управления. Сигнал RESET не влияет на состояние РОН. Во время действия сигнала RESET все выходы, имеющие три состояния, переводятся в высокоимпедансное состояние; выходы, которые имеют два состояния, становятся пассивными. Минимальная продолжительность сигнала RESET при первом включении МП составляет 50 мкс, а при повторном запуске - четыре | Вход |
Обозначение | Назначение | Тип |
TEST | Test - входной сигнал проверки. Сигнал используется вместе с командой ожидания WAIT, выполняя которую, МП проверяет уровень сигнала TEST. Если TEST = 0, МП переходит к выполнению следующей после WAIT команды. Если TEST = 1, МП находится в состоянии ожидания, выполняет холостые такты и периодически, с интервалом 5TCLK, проверяет значение сигнала TEST | Вход |
CLK, (CLC) | Clock - входные тактовые импульсы, обеспечивающие синхронизацию работы МП | Вход |
MN/MX | Minimum/maximum - вход сигнала выбора минимального или максимального режимов. Определяет режим работы МП: при 1 - минимальный, при 0 - максимальный | Вход |
INTA | Interrupt Acknowledge - выходной сигнал подтверждения прерывания, определяющий чтение вектора прерывания | Выход |
ALE | Address Latch Enable - выходной сигнал разрешения фиксации адреса; выдается в начале каждого цикла шины и используется для записи адреса в регистр-фиксатор | Выход |
DEN (DE) | Data Enable - выходной сигнал разрешения данных, который определяет появление данных на шине адреса/данных | Выход (z) |
DT/R (OP /IP) | Data Transmit/Receive (Output-Input) - выходной сигнал передачи/приема данных; определяет направление передачи данных по ADB. Предназначен для управления шинными формирователями и действует на протяжении всего цикла шины | Выход (z) |
M/IO | Memory/Input-Output - выходной сигнал признака обращения к памяти (М/Ю = 1) или внешнему устройству (М/Ю = 0). Используется для распределения адресного пространства памяти и устройств ввода/вывода | Выход (z) |
WR | Write - выходной сигнал записи. Указывает на то, что МП выполняет цикл записи в память или внешнее устройство, и сопровождает данные, которые выдаются МП на шину данных | Выход (z) |
HOLD | Hold - входной сигнал запроса захвата шин от внешнего устройства или контроллера прямого доступа к памяти | Вход |
HLDA | Hold Acknowledge - выходной сигнал подтверждения захвата. Сигнал указывает на то, что МП перевел свои шины адреса/данных, адреса/состояния и управления в z-состояние | Выход |
Таблица 1.2. Назначение контактов МП i8086 в максимальном режиме
ST2 - ST0 (S2 - SO) | Выходные сигналы линий состояния. Характеризуют тип выполняемого цикла шины; используются для формирования управляющих сигналов | Выход (z) |
RQ/GTO RQ/GT1 (RQ/ЁО) (RQ/БЦ | Request/Grant (Request/Enable) - два входных/выходных сигнала запроса/предоставления локальной шины; используются для связи с другими процессорами, в частности, с арифметическим сопроцессором. Линия RQ/GT1 имеет меньший приоритет | Вход/ выход |
LOCK | Lock - выходный сигнал блокировки (занятости) шины - сигнал монополизации управления шиной; формируется во время выполнения команды с префиксом LOCK и информирует другие процессоры и устройства о том, что они не должны запрашивать системную шину | Выход |
QS1. QSO | Queue Status - два выходных сигнала состояния очереди; идентифицируют состояние внутренней шестибайтной очереди команд и действуют на протяжении такта синхронизации после выполнения операции над очередью. Сигналы QS1, QS0 предназначены для сопроцессора, который контролирует шину адреса/данных, фиксирует момент выборки из памяти программ предназначенной для него команды с префиксом ESC, а после этого следит за очередью команд и определяет момент, когда эта команда должна выполняться | Выход |
2. Разработка программного обеспечения
2.1. Основной алгоритм
Термин «чётность» в программировании может иметь двоякий смысл:
- первое; целое число считается чётным, если делится на два без остатка;
- второе; значение термина «чётность» используется применительно к флагу чётности (PF – Parity Flag), который предусмотрен в составе регистра флагов процессора i8086. Этот флаг устанавливается в 1, если младший байт результата предыдущей команды содержит чётное число битов, равных 1, и в 0 - нечётное.
Выберем предпочтительный вариант интерпретации термина «контроль четности». Для этого рассмотрим два алгоритма контроля и определим, какой из них окажется более чувствительным к изменению исходных данных.
Сначала определим общий принцип формирования контрольного кода. Очевидно, что использовать общее количество элементов массива нецелесообразно, так как тогда можно будет в лучшем случае обнаружить изменение размера массива, но не изменение отдельных его элементов. Более того, в большинстве языков программирования понятие «массив» предполагает набор данных, количество элементов в котором в процессе выполнения программы не изменяется (является константным). Соответственно, изменение размера как вариант изменения массива рассматривать нецелесообразно.
Обработку же отдельных элементов массива независимо от интерпретации термина «чётность» можно выполнять двумя способами:
Если размер массива не превышает ёмкости контрольного кода (количеству бит в двоичном представлении числа), то каждому элементу массива можно поставить в соответствие один бит в контрольном коде. При этом если элемент массива чётный, то соответствующий бит контрольного кода будем устанавливать в 1, в противном случае – в 0. В таком случае если произойдет изменение любого элемента массива таким образом, что изменится чётность этого элемента, контрольный код позволит не только обнаружить сам факт изменения информации, но и однозначно определить изменённый элемент.
Если размер массива превышает ёмкость контрольного кода, то однозначное соответствие между элементами массива и битами контрольного кода обеспечить невозможно. В таком случае можно подсчитывать количество чётных или, наоборот, нечётных элементов массива. Если изменится чётность какого-либо элемента массива, изменится и контрольная сумма, что позволит обнаружить сам факт изменения исходных данных.
Однако такой способ не гарантирует защиты от «компенсирующих» ошибок, то есть когда одновременно изменяется два (в общем случае – чётное количество) элементов, причём один становится вместо чётного нечётным, а второй – наоборот, вместо нечётного чётным. В такой ситуации контрольная сумма останется неизменной и изменение данных обнаружено не будет.
Для более надежного контроля сохранности данных используют, как правило, более сложные алгоритмы, например, CRC32 – подсчёт циклической контрольной суммы. Можно сделать вывод - в любом случае необходимо определить наиболее «устойчивую» интерпретацию термина «чётность» на уровне отдельного элемента массива.
Двоичное число является чётным в математическом смысле, если его самый младший бит равен нулю. Соответственно, изменение любых старших битов элемента массива никак не скажется на его чётности (нечётности).
При использовании механизма подсчёта битов, аналогичном установке флага чётности, изменение любого бита исходного байта изменит и контрольное число. Естественно, что это также не обеспечивает защиты от «компенсирующих» ошибок, когда будет изменена сразу пара (или чётное количество) битов. Тем не менее, очевидно, что вариант подсчёта битов в исходных элементах массива более чувствителен к изменению исходных данных, чем проверка делимости элементов на два без остатка.