Выборочные вопросы по СПО -2006
Понедельник, 31 Янв 2011 9:421. Разработать алгоритм определения адреса блока памяти, выделенного последнему обработчику прерывания с номером n . Составить программу на ассемблере.
2. Разработать алгоритм программы порождения дочернего процесса, путь файла дочернего процесса задается с помощью переменной среды FCP=C:\…. Составить программу на ассемблере.
3. Разработать алгоритм загрузки и запуска оверлея A.OVL, путь файла оверлея передать с помощью переменной среды FOVL=C:\111\A.OVL. Составить программу на ассемблере.
4. Разработать алгоритм загрузки и настройки EXE программы, используя информацию из заголовка EXE файла.
5. Разработать алгоритм пошагового выполнения оверлея без захода в обработчики прерываний. Составить программу на ассемблере.
6. Разработайте алгоритм вычисления размера в секторах логического диска E: (имеются диски A:, C:, D:, E:,… ), информацию использовать из PT. Составить программу на ассемблере.
7. Разработайте алгоритм определения состояния таблицы векторов прерываний до загрузки операционной системы MS DOS. Составить программу, таблицу векторов записать в память по адресу 0A0000h.
8. Разработайте алгоритм вывода на экран содержания блоков MCB, принадлежащих текущей программе. Составить программу на ассемблере.
9. Разработайте алгоритм, который позволяет определить путь загрузки текущей программы используя информацию из PSP и вывода его на экран в виде строки. Составить программу на ассемблере.
10. Структура и назначение FAT. Элементы FAT. Размещение, удаление и восстановление файлов.
11. Разработайте алгоритм определения количества элементов корневого каталога дискеты отдельно для файлов и подкаталогов, результаты необходимо поместить в переменные целого типа. Составить программу на ассемблере.
12. Разработайте алгоритм подсчета занятых файлами и каталогами кластеров дискеты. Составить программу на ассемблере.
13. Приведите описание основных блоков обработчика аппаратного прерывания на примере прерывания 09h.
14. Методы управления аппаратными прерываниями. Аппаратные и программные средства, способы применения.
15. Понятие об основном и дополнительном обработчиках прерываний. Способы построения дополнительных обработчиков прерываний. Методы передачи управления и данных.
16. Прерывания в IBM PC. Схема обработки прерываний. Возврат из обработчика прерывания. Используемые структуры данных. Алгоритмы обработки на аппаратном уровне.
17. Разработайте алгоритм обработки прерывания INT 21h, функции 3fh, режимы 01-чтение и 02-чтение/запись. Дополнительный обработчик должен проверять тип открываемого файла. Если это файл типа EXE, то выводится сообщение на экран(вывод осуществить используя напрямую видеопамять -0B800:0h). Составить программу на ассемблере.
18. Приведите особенности построения резидентных программ для ЕХЕ и СОМ форматов. Укажите способы передачи управления и данных.
19. Приведите способы предотвращения повторной загрузки резидентных программ. Для приведенных способов разработайте алгоритмы программ.
20. Разработайте алгоритм определения размера загружаемой части некоторой ЕХЕ программы в байтах (информацию взять из заголовка файла). Составить программу на ассемблере.
21. Вывести формулы вычисления индекса в векторе отображения для многомерного массива (размещение по столбцам).
22. Сформировать ХЕШ – функцию для двулитерных идентификаторов, <ид>::=… .
23. Написать грамматику для порождения предложений языка L={Bn|B={0110,1011}}. Bn – декартова степень множества В.
24. Построить КА для грамматики Z::=….
25. Построить таблицу идентификаторов, используя метод цепочек переполнения для следующей последовательности: …. В качестве ключа использовать первый символ идентификатора.
26. Имеется НКА
…).
Задана матрица переходов М : ….
Требуется построить КА, эквивалентный данному НКА.
27. Построить КА для сканера, распознающего лексемы: …. Сканер также распознает и удаляет блочный комментарий – /* строка */. Показать для каких состояний КА сканера возникает неопределенность и как она разрешается.
28. Написать программу на языке С сканера для лексем: …. В программе реализовать метод, основанный на КА.
29. Построить грамматику для следующих типов чисел: целые, вещественные, вещественные с порядком. Пример чисел: 5, -5, 5., 5.0, -5.е-01.
30. Написать программу определения следующих классов литер: …..
31. Построить заключительное состояние синтаксического стека для предложения некоторого языка a+b*(c+d), полученное в результате анализа методом нисходящего разбора с возвратами (грамматика …).
32. Построить сеть для представления грамматики Z::=….
33. Построить грамматику скобочного алгебраического выражения с операциями +, -, *, / для нисходящего метода разбора. Указание. Итерацию при формировании грамматики не использовать.
34. Показать является ли правильной грамматика A::=… и пригодной для нисходящего разбора. Указание. Использовать отношения FIRST и FIRST+ .
35. Построить таблицы левых L(U) и правых R(U) символов для грамматики G[Z]={Z::=…}.
36. Построить матрицу предшествования для грамматики G[Z]={Z::=…}.
37. Установить, может ли использоваться в методе простого предшествования грамматика <READ>::=…. Если нет, то почему и как её преобразовать, чтобы можно было использовать.
38. Написать на языке С программу синтаксического распознавателя для метода простого предшествования.
39. Дано предложение некоторого языка: a+b*c-d. Указать, является ли оно сентенциальной формой. Установить имеются ли основа, простые фразы, фразы. Показать все существующие варианты. Грамматика языка: G[E]={E::=…}.
Задача 1.
Разработайте алгоритм защиты от НСК программы в среде MS-DOS с файловой системой FAT16 путем привязки программы по месту установки на жестком диске на уровне номеров кластеров, отводимых файлу программы. Приведите программную реализацию алгоритма на языке Ассемблера.
Каркас ответа
Принципы решения
В основную программу дописываются процедуры Install, Check, ClustSearch и соответствующие переменные. Процедура Install определяет и фиксирует путь загрузки программы, затем отыскивает цепочку кластеров, занимаемых файлом и записывает ее в качестве эталона. После этого она заменяет в переменной адреса AddrProc адрес процедуры Install на адрес процедуры Check. В основной программе стоит только один косвенный вызов процедуры по адресу AddrProc. Процедура Check проверяет соответствие цепочки занимаемых файлом кластеров эталонной цепочке, полученной процедурой Install при установке программы.
Структура программы
Программа состоит из следующих частей:
- Процедура установки Install
- Процедура проверки Check
- Процедура поиска кластеров ClustSearch
- Процедуры и данные основной программы
Структуры и данные процедур Install, Check, ClustSearch
Глобальные переменные для Install
- N_I – число контролируемых номеров кластеров. В данной задаче это или реальное число кластеров, или 10, если число реально занимаемых файлом кластеров более десяти
- ClustList_I – список номеров кластеров
- BootRec – буфер для загрузочной записи логического диска
- File_I – переменная для хранения пути загрузки программы
- Boot – структура для оформления доступа к полям BootRec
- Другие данные и структуры
Глобальные переменные для Check
- N – число контролируемых номеров кластеров. В данной задаче это или реальное число кластеров, или 10, если число реально занимаемых файлом кластеров более десяти
- ClustList – список номеров кластеров
Структура Boot
Boot struct
Jump db 3 dup(0)
Oem db 8 dup(0)
BPB label byte
SectSize dw
ClustSize db
ResSects dw
FatCnt db
RootSize dw
Any db 3 dup(0)
FatSize dw
Other db (512-$) dup(0)
Boot ends
Процедура ClustSearch
Параметры:
- Дальний адрес N
- Дальний адрес ClustList
- Дальний адрес File
Алгоритм.
-
- Чтение загрузочного сектора в BootRec.
Используемая функция – Int 25h
Входные параметры:
- Al – номер диска (0 – А, 1 – В,…)
- (CX)= -1
- DS:BX – адрес блока параметров
блок параметров
BP label byte
NumSect dd 0
CountSect dw 1
AddrBuf dd BootRec - Чтение RootDir
- Чтение FAT
- Поиск элемента каталога соответствующего файлу File
- Поиск и запись цепочки номеров кластеров по адресу ClustList, а число кластеров – в N
- Чтение загрузочного сектора в BootRec.
Процедура Install
Алгоритм.
- Определяет путь загрузки программы и записывает в File_I
- Вызывает процедуру ClustSearch. Параметры – адреса File_I, N_I, ClustList_I
- Заполняет AddrProc адресом процедуры проверки Check
Процедура Check
Алгоритм.
- Определяет путь загрузки программы и записывает в File
- Вызывает процедуру ClustSearch. Параметры – адреса File, N, ClustList
- Сравнивает параметры File, N, ClustList с File_I, N_I, ClustList_I
- В случае неуспеха сравнения заканчивает работу программы