- •Методические указания
- •Методические указания
- •Содержание
- •Введение
- •Теоретическая часть краткая информация о пэвм ibm pc
- •Регистры
- •Организация памяти
- •Использование сегментного регистра
- •Режимы адресации
- •Пространство ввода/вывода
- •Прерывания
- •Представление чисел в эвм
- •Лабораторная работа n1 изучение программы-отладчика, регистров и команд микропроцессора Intel-8088
- •3.Порядок выполнения работы
- •Лабораторная работа n2 написание и отладка управляющих программ с использованием псевдокодов
- •3.Порядок выполнения работы
- •Лабораторная работа n3 написание и отладка управляющих программ на языке ассемблера
- •Приложения
- •1.Справка о командах ассемблера
- •Список использованных источников
- •Методические указания
Прерывания
Прерывания изменяют нормальное выполнение задачи, чтобы обработать внешние сигналы. Прерывания, произведенные машинным оборудованием, происходят в результате внешних событий и выполняются после выполнения текущей команды. После того, как программа обработки прерываний заканчивает обслуживание прерывания, выполнение продолжается с команды, которая следует сразу за командой прерывания.
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.