Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.
Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.
Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.
Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.
Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.
Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.
Санкт–Петербургский Государственный Политехнический Университет
Факультет Технической Кибернетики
Кафедра Автоматики и Вычислительной Техники
ОТЧЕТ
О лабораторной работе
Дисциплина: СПО
Тема: Изучение принципов работы с прерываниями в DOS
Выполнил студент группы 4081/1
Журавлев А. В.
Руководитель:
Душутина Е.В.
Санкт-Петербург
2009
1. Цель работы
Целями работы являются приобретение знаний о типах внутренних прерываний и флаговой логики процессора, источников возникновения внутренних прерываний, формирование навыков использования механизма внутренних прерываний при решении практических задач (приемы перехвата прерываний и передачи управления соответствующим системным обработчикам).
2. Анализ обработчика прерывания при делении на ноль
Задание:
Проанализируйте содержимое стандартного обработчика прерывания по ошибке операции деления. Т.е. проверьте, как реагирует операционная система, на переполнение при выполнении команды деления
mov ax, 11
mov bl, 0
div bl
ret
Листинг 2. Текст программы вызова обработчика деления на ноль
Выводы:
Как видно, данная программа пытается разделить число 11, занесенное в регистр ax на 0, занесенный в младший байт регистра bx. Продолжительность выполнения данной операции составляет 2 байта.
В результате выполнения программы на экране монитора возникает предупреждение об ошибке деления на ноль.
3. Замена стандартного обработчика int0 с помощью функций DOS
Задание:
Замените стандартный обработчик int 0 на собственный, используя функции DOS для замены вектора прерывания и функцию 9h прерывания int 021h (функция dos 9) для иллюстрации работы вашего обработчика.
Рис. 3. Алгоритм последовательности действий
print macro
push ax, dx
lea dx, #1
mov ah, 9
int 021
pop dx, ax
#em
jmp start
_error db 'Warning: деление на ноль', 13, 10, '$'
n_vect equ 0
old_v dd ?
ddiv db 200 dup 0
start:
mov ax, 035 by n_vect ;сохранение вектора
int 021 ;es:bx
mov w old_v, bx
mov w old_v + 2, es
mov ax, 025 by n_vect ;установка нового вектора
lea dx, new ;ds:dx
int 021
Листинг 3. Текст программы PR_2.8 (начало)
mov ax, 11 ;деление на 0
mov bl, 0
nop
nop
div ddiv
mov ax, 025 by n_vect ;возврат старого вектора
mov dx, w old_v ;ds:dx
mov ds, w old_v+2
int 021
mov ds, cs ;возврат ds
int 020 ;выход
new: ;обработка прерывания
print _error
pop ax
add ax , 4
push ax
iret
Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.
Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.
Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.
Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.
Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.
Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.