Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методические указания1.doc
Скачиваний:
31
Добавлен:
02.05.2014
Размер:
130.05 Кб
Скачать

Прерывания

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

i8088 способен обрабатывать до 256 различных прерываний. Для обслуживания прерываний, имеется таблица с 256 векторами прерываний. Вектора прерываний - это указатели на соответствующие программы обслуживания; векторы представляют собой 4-х байтные величины: сегмент кода плюс 16 бит смещения;

Из 256 возможных прерываний, 32 зарезервированы для использования INTEL, оставшиеся 224 свободны для использования пользователем.

Когда происходит прерывание, адрес текущей команды и регистр флагов сохраняются в стеке, что позволяет возобновить прерванную программу. Затем, 8088 снабжается 8-ми битовым вектором, который определяет соответствующий элемент в таблице прерываний. В таблице содержится начальный адрес программы обработки прерываний. После этого, выполняется вызываемая программа обработки. И наконец, после команды IRET восстанавливается старое состояние процессора и по адресу возврата (т.е.по адресу сохраненному в стеке) возобновляется выполнение программы.

Команда INT n заставляет процессор выполнять программу обслуживания, на которую указывает вектор n в таблице прерываний.

Особым случаем двухбайтового программного прерывания INT с номером n является однобайтовое прерывание INT 3, или прерывание останова. Путем ввода данной однобайтовой команды в программу, пользователь имеет возможность устанавливать точки останова в свою программу, как инструмент отладки.

Представление чисел в эвм

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

Но в тех случаях, когда нужно отлаживать программы написанные на языке ассемблера, приходится просматривать содержимое регистров микропроцессора. Их значения выдается обычно с использованием 16-ричного исчисления, которое удобно использовать совместно с двоичным исчислением.

Как говорилось выше, основной единицей передачи данных в микропроцессоре 8088 является байт (8 бит) и слово (16-бит).

Байт можно рассматривать как целое число без знака в диапазоне от 0 до 255. Это 256 (2 в степени 8) значений, которые можно получить с помощью одного байта. Байт можно рассматривать также как число со знаком в диапазоне от -128 до 127. В последнем случае первый разряд соответствующего двоичного числа в ПЭВМ используется для указания знака числа (0 - положительное, 1 - отрицательное).

Машинное слово позволяет получить 65536 (2 в степени 16) значений, т.е. целые числа без знаков от 0 до 65535 или целые числа со знаками в пределах от - 32767 до +32768.

Рассмотрим двоичное представление одного байта. Оно имеет вид:

Для числа без знака: от 0000 0000 до 1111 1111:

0000 0000 - 0 0000 0101 - 5 1111 1011 - 251

0000 0001 - 1 0000 0110 - 6 1111 1100 - 252

0000 0010 - 2 0000 0111 - 7 1111 1101 - 253

0000 0011 - 3 0000 1000 - 8 1111 1110 - 254

0000 0100 - 4 ................. 1111 1111 - 255

Положительные числа со знаком представляются аналогично, но первый разряд числа равный 0 означает, что это число положительное:

от 0 000 0000 до 0 111 1111 (от 0 до 127).

Для отрицательного числа со знаком:

от 1 000 0000 до 1 111 1111 (от -128 до -1).

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

При переходе через 0 двоичные представления чисел имеют вид:

+3 0000 0011

+2 0000 0010

+1 0000 0001

0 0000 0000

-1 1111 1111

-2 1111 1110

-3 1111 1101

Алгоритм преобразования положительного двоичного числа в отрицательное:

Инвертировать все биты и прибавить 1.

Алгоритм преобразования отрицательного двоичного числа в положительное:

Инвертировать все биты и прибавить 1.

Алгоритм можно проверить с использованием калькулятора Windows 95 или Debug.

ПРИМЕР1(для одного байта):

+1=01H =00000001B

-1=FFH=11111111B.

ПРИМЕР2:

+100=64H=01100100B

-100=9CH=10011100B.

При отладке программ содержимое ячеек памяти и регистров обычно представляется с использованием более удобного в работе 16-ричного исчисления. Числа от 10 до 15 представляются буквами: A-10, B-11, C-12, D-13, E-14, F-15. Числа с двоичным, десятичным и шестнадцатеричным представлением имеют вид:

0000 0 0 0100 4 4 1000 8 8 1100 12 C

0001 1 1 0101 5 5 1001 9 9 1101 13 D

0010 2 2 0110 6 6 1010 10 A 1110 14 E

0011 3 3 0111 7 7 1011 11 B 1111 15 F

Для записи одной 16-ричной цифры требуется 4 бита двоичного числа (16=2 в степени 4). Поэтому один байт позволяет записать двухзначное, а одно слово (2 байта) четырехзначное 16-ричное число. Таким образом, записывая взамен выделенных 4-х битов двоичного числа соответствующую 16-ричную цифру получим пределы изменения числа размером в один байт:

Для числа без знака: от 00 до FF.(от 0 до 256)

Для положительного числа со знаком: от 00 до 7F (от 0 до 127)

Для отрицательного числа со знаком: от 80 до FF (от -128 до -1).

При переходе через ноль 16-ричные числа имеют вид:

+3 0000 0011 03

+2 0000 0010 02

+1 0000 0001 01

0 0000 0000 00

-1 1111 1111 FF

-2 1111 1110 FE

-3 1111 1101 FD.

Числа с размером в одно слово имеют следующие границы:

Число без знака:

от 0 до 65535 или от 0000 до FFFF

Число со знаком:

от -32768 до +32767 или от 8000 до 7FFF.