Методическое руководство к курсовой работе по дисциплине Assembler ibm pc содержание
Вид материала | Руководство |
- Учебно-методическое пособие по выполнению курсовой работы по дисциплине «Комплексный, 276.48kb.
- Дейт К. Д27 Руководство по реляционной субд db2/ Пер с англ и предисл. М. Р. Когаловского, 4309.37kb.
- Методическое пособие по дисциплине «информатика» (2семестр), 838.3kb.
- Методическое пособие по курсовой работе Для студентов Современной Гуманитарной Академии, 63.65kb.
- Пособие предназначено для студентов, выполняющих курсовые работы по дисциплине «Направления, 589.33kb.
- Руководство к выполнению курсовой работы по дисциплине «Финансы предприятий», 244.13kb.
- Методические указания к курсовой работе по дисциплине «Материаловедение и ткм», 699.8kb.
- Пояснительная записка к курсовой работе на тему: «Активный полосовой фильтр» по дисциплине, 342.06kb.
- Всвязи с имеющими место случаями невыполнения требований задания к курсовой работе, 112.75kb.
- Курс. 01;Мпк. 01;3 методическое пособие по курсовой работе методика воспитательной, 230.31kb.
Endp init
;Поля данных в нерезидентной части программы
msg1 db 'Резидентный обработчик установлен $'
msg2 db 'Попытка вторичной установки. Установка отменена $'
msg3 db 'Программа выгружена из памяти $'
command db 'off'
^
END resident ;Конец программы/точка входа
;Prg8. Тестовая программа для исследования работы prg7
;Программа использует функции DOS на стеке ввода/вывода в двух режимах.
;F1- режим попеременного вывода в бесконечном цикле двух строк функцией 09h в одно и то же
;место экрана. Смена символов в строке означает правильную её работу, F10- выход из режима и
;программы. F2- режим ввода c клавиатуры одиночных символов функцией 01h. F10- выход из
;режима и программы. Переход из одного режима в другой возможен через перезапуск программы.
Ideal
Model tiny
Codeseg
org 100h
^
Proc main
;Очистка экрана
mov ah,6 ;Функция инициализации окна или его очистка
mov al,0
mov bh,0Fh ;Атрибут; ярко-белый по чёрному
mov cx,0 ;Левый верхний угол
mov dx,184Fh ;Правый нижний угол
int 10h
;Выбор режима работы; F1- режим вывода строк, F2- режим ввода одиночных символов, F10-
;выход из программы
again: mov ah,08h ;Функция ввода одиночного символа без эха
int 21h ;Первый вызов DOS
cmp al,0 ;Расширенный ASCII код?
jne again ;Нет
mov ah,08h ;Да, введём старший байт
int 21h ;Повторный вызов DOS
cmp al,3Bh ;Нажата F1?
je F1 ;Да
cmp al,3Ch ;Нажата F2?
je F2 ;Да
jmp again ;Нажато незапланированное
;Попеременный вывод в бесконечном цикле двух строк на одно и то же место экрана. Смена ;символов в строке означает правильную работу. F10 –выход из программы
;Установим позицию курсора функцией BIOS 02h
F1: mov ah,02h ;Функция BIOS установки курсора
mov bh,0 ;Страница
mov dh,05h ;Строка (из 25)
mov dl,0h ;Столбец (из 80)
int 10h
;Цикл вывода
continual_1: mov ah,09h ;Вывод первой строки
mov dx,offset str1
int 21h
call check_cycle ;Проверка условия нахождения в цикле вывода
jnc F10 ;CF=0, Выходим из цикла
call delay ;Задержка
mov ah,09h ;Вывод второй строки
mov dx,offset str2
int 21h
call check_cycle ;Проверка условия нахождения в цикле вывода
jnc F10 ;CF=0, выходим из цикла
call delay ;Задержка
jmp continual_1 ;Продолжим
;Процедура задержки delay
Proc delay
mov cx,1000
L2: push cx
xor cx,cx
L1: loop L1 ;Внутренний цикл задержки
pop cx
loop L2 ;Внешний цикл задержки
ret
Endp delay
;Процедура проверки условий продолжения цикла. Если CF=0 - продолжаем, при CF=1 - выходим
;(была нажата клавиша F10)
Proc check_cycle
mov ah,06h ;Функция ввода. Если функция обнаружила в буфере
;клавиатуры символ, то возвращает ZF=0 и в AL код символа. В противном случае устанавливает
;ZF=1 и продолжает программу
mov dl,0FFh ;Режим ввода
int 21h
jnz M1 ;ZF=0, произведём анализ введённого символа
M2: stc ;Установим CF=1, как признак продолжения цикла
jmp ex1
M1: cmp al,0 ;Расширенный ASCII-код
jne M2 ;Нет, продолжим текущий цикл
mov ah,06h ;Введём второй байт
mov dl,0FFh ;Режим ввода
int 21h
cmp al,44h ;Клавиша F10?
jne M2 ;Нет, продолжим текущий цикл
cl ;CF=0, признак выхода из цикла
ex1: ret
Endp check_cycle
;Цикл ввода одиночных символов функцией DOS 01h. Выход из программы – F10.
;Установим позицию курсора функцией BIOS 02h
F2: mov ah,02h ;Функция BIOS установки курсора
mov bh,0 ;Страница
mov dh,07h ;Строка (из 25)
mov dl,0h ;Столбец (из 80)
int 10h
;Ввод с клавиатуры одиночных символов функцией DOS 01h с эхом
continual_2: mov ah,01h
int 21h
cmp al,0 ;Расширенный ASCII-код?
jne continual_2 ;Нет, повторим ввод
mov ah,08h ;Повторный вызов функции DOS для ввода
int 21h ;старшего байта
cmp al,44h ;F10?
jne continual_2 ;Нет, продолжим цикл
F10: mov ax,4C00h ;Выход в DOS
int 21h
^
Endp main
;Поля данных вывода
str1 DB 40 DUP('*'),13,'$'
str2 DB 40 DUP('&'),13,'$'
End main ;Конец программы/точка входа
Комментарий к исследованию резидентной программы Prq7. При взведённом флаге требования на обработку task_request (функция аппаратного обработчика 09h, активизируемого клавишной комбинацией Alt-A) исполнение процедуры task по выводу времени на экран монитора осуществляется:
- Прикладным обработчиком new_28h, когда компьютер не занят исполнением никакой программы и управление передано командному процессору Command.com.
- Прикладным обработчиком таймера new_08h – в первом режиме работы тестовой задачи, посвящённом попеременному выводу строк на экран функцией DOS 09h.
- Прикладным обработчиком new_28h – во втором режиме работы тестовой задачи при вводе одиночных символов с клавиатуры функцией DOS 01h.
12. Индивидуальные задания на проектирование
1 – 12 варианты.
Тестовая программа инициирует три числовых буфера (допустим num1, num2 и result), вводит последовательно в первые два буфера числа в десятичной (или в 16-теричной) системе счисления с последующим переходом в режим ожидания нажатия специальной комбинации клавиш, которая должна активизировать резидентную программу для выполнения вычислительной процедуры с введёнными числами. Тип вычислительной процедуры (а, следовательно, и вариант задания КР) определяется вариантами задания лабораторной работы № 2. Результат вычисления, полученный резидентной программой, помещается в буфер result, откуда и выводится тестовой программой на экран монитора.
Вводимые и выводимые числа в программах ограничены диапазоном соответствующих вычислительных процедур из лабораторной работы № 2.
13. Разработать прикладной резидентный обработчик прерывания new_04h, вызывающий прерывание тестовой задачи (с выводом соответствующего сообщения) при возникновении переполнения в операциях сложения и вычитания.
14. Разработать тестовую задачу с прикладным обработчиком new_09h, осуществляющего вывод на экран, после каждого нажатия произвольной клавиши, содержимое порта 60h контроллера клавиатуры, слово статуса флагов клавиатуры и первых 4-х байтов кольцевого буфера клавиатуры. Выход из программы по истечению обработки 40 клавиш.
15. Разработать резидентную программу с прикладным обработчиком new_09h клавиатуры. Программа осуществляет вывод на экран код нажатия и отпускания для произвольной клавиши. Выход из программы по истечению обработки 40 клавиш.
16. Разработать резидентную программу с прикладным обработчиком new_09h от клавиатуры. Программа осуществляет вывод на экран скан-код и ASCII- код для произвольной клавиши. Выход из программы по истечению обработки 40 клавиш.
17. Разработать резидентную программу динамического дампа регистров общего назначения, активизируемую через вектор 03h. Содержимое регистров выводится на экран в 16 - теричном коде. Демонстрацию программы провести на основе одной из ваших программ лабораторного практикума.
18. Разработать резидентную программу динамического дампа сегментных регистров регистра флагов и программного счётчика, активизируемую через вектор 03h. Содержимое регистров выводится на экран в 16 - теричном коде. Демонстрацию программы провести на основе одной из ваших программ лабораторного практикума.
19. Разработать резидентную программу динамического дампа памяти данных тестовой задачи. Вывод данных осуществляется в формате Turbo Debugger, соответствующем команде внутреннего меню окна дампа Alt+F10 > Display as > Byte. Резидент активизируется через пользовательский вектор.
20. Разработать прикладной обработчик new_01h пошагового выполнения программы. Содержательная часть обработчика должна выводить на экран содержимое всех регистров РОН после исполнения каждой команды для той части программы, для которой флаг TF=1. Покомандное исполнение реализуется клавишей F8. Демонстрацию программы провести на основе одной из ваших программ лабораторного практикума.
21. Разработать прикладной обработчик new_01h пошагового выполнения программы. Содержательная часть обработчика должна выводить на экран содержимое дампа памяти в формате Turbo Debugger после исполнения каждой команды для той части программы, для которой флаг TF=1. Покомандное исполнение реализуется клавишей F8. Демонстрацию программы провести на основе одной из ваших программ лабораторного практикума.
22. Некоторая тестовая задача выводит на экран текущее время из КМОП – часов и, добавляя к нему 30 секунд, устанавливает будильник. Срабатывание будильника активизирует резидентную программу, которая выводит на экран приветственное сообщение и короткий звонок (одноголосая мелодия).
23. Некоторая тестовая задача выводит на экран текущее время из КМОП – часов и, добавляя к нему 30 секунд, устанавливает будильник. Срабатывание будильника активизирует резидентную программу, которая воспроизводит фрагмент мелодичного перезвона (последовательность сигналов для нот какой-либо октавы).
24. Разработать резидентную программу, выводящую на экран монитора (правый верхний угол) текущее время из КМОП – часов с интервалом в 1 сек. Каждый вывод времени вызывается активизацией прикладного обработчика от будильника new_4Ch. Вывод производится способом прямой записи в видеопамять.
Требования к оформлению курсовой работы.
- Курсовая работа должна иметь титульный лист и состоять из 12 – 15 листов печатного текста шрифтом, равный 12 пунктам.
- Содержание КР включает следующие обязательные параграфы (разделы):
- Задание.
- Структура программы и обоснование выбора её отдельных модулей (составных обработчиков прерываний) должна учитывать следующие факторы:
– Вычислительные процедуры, используемые в программе, должны соответствовать заданному алгоритму реализации;
– Резидентная программы должна быть защищена от повторной установки и давать возможность выгрузки её из памяти;
– Прикладной аппаратный обработчик прерываний должны строится с учётом свойства нереентерабельности DOS;
– Программа должна работать с хорошо продуманным экранным интерфейсом.
- Справочное описание используемых в программе системных обработчиков, сервисных функций DOS и BIOS.
- Листинг программы.
- Функциональное описание программы и результаты её демонстрации.
- Необходимые компьютерные файлы на дискете для демонстрации программы
13. Литература,
в которой в той или иной степени рассматриваются вопросы, связанные с выполнением курсовой работы.
1. Финогенов К.Г. Самоучитель по системным функциям MS-DOS.- Изд.2,-М.: Радио и связь, Энтроп, 1995.-382 с., илл.
2. Сван Т. Освоение Turbo Assembler. - Киев: Диалектика,1996. - 544 с., ил.
3. Финогенов К.Г. Основы языка Ассемблера. -М.: Радио и связь, 1999. - 288 с.: ил.
4. Зубков С.В. Assembler. Для DOS, Windows и Unix.-М.: ДМК, 1999..- 640 с., ил.
5. Assembler /В. Юров. - СПб: Издательство «Питер», 2000. -624 с.: ил.
6. Юров В. Assembler: Специальный справочник. СПб: Питер, 2000.
7. Пирогов В.Ю. Assembler. Учебный курс. - М.: "Нолидж", 2001.-848с.
8. Финогенов К.Г. Рудаков П.И. Язык ассемблера: уроки программирования. - М.: ДИАЛОГ-МИФИ, 2001. - 640с.
9. Афанасьев В.А. Cайт кафедры ВТ НГТУ: http:/ermak.cs.nstu.ru
- Методическое пособие к лабораторному практикуму по языку Assembler IBM PC.
- Методическое руководство к выполнению курсовой работы языку Assembler IBM PC.
^ Методический материал к выполнению курсовой работы подготовил доцент
кафедры ВТ НГТУ В.А. Афанасьев.
Март, 2002г.
1 Если прикладной обработчик new_09h содержит внутри себя собственную процедуру обработки информации, (например, с именем task) то перед выполнением данной процедуры необходимо позаботиться о разрешении прерываний для таймера, «оконтурив» процедуру task командами sti и cli.
2Перед запуском тестовой программы проверьте, имеется ли у вас строка в файле config.sys:
Device=C:\WIN98\COMMAND\ANSI.SYS
или что-нибудь подобное, отражающее путь в вашем компьютере к драйверу MS-DOS - ANSI.SYS
3 ^ Программы, использующие мультиплексное прерывание 2Fh, могут работать в оболочке FAR, или непосредственно в сеансе MS-DOS.
4 Для просмотра окружения программы загрузите её отладчик Turbo Debugger, откройте окно CPU, перейдите в окно дампа памяти и с помощью команды Goto в открывшемся окне установите адрес DS:002Ch. В окне дампа по этому адресу откроется содержимое PSP, начиная с адреса 2Сh. Запомните значение сегментного адреса (обозначим его SegSetting), записанного по указанному выше адресу и, вновь воспользовавшись командой Goto, установите адрес SegSetting:0000h.
5В программе FAR, написанной с использованием API - функций Windows, а не функций DOS, разрушение системы не произойдёт (во всяком случае, это не происходило при проведении указанного эксперимента на моём компьютере с ОС Windows 98).