Выборочные вопросы по СПО -2006

Понедельник, 31 Янв 2011 9:42
Posted in category СПО
Комментарии выключены

1.     Разработать алгоритм определения адреса блока памяти, выделенного последнему обработчику прерывания  с номером 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

Алгоритм.

    1. Чтение загрузочного сектора в BootRec.
      Используемая функция – Int 25h
      Входные параметры:
      - Al – номер диска (0 – А, 1 – В,…)
      - (CX)= -1
      - DS:BX – адрес блока параметров
      блок параметров
      BP label byte
      NumSect dd    0
      CountSect dw    1
      AddrBuf dd BootRec
    2. Чтение RootDir
    3. Чтение FAT
    4. Поиск элемента каталога соответствующего файлу File
    5. Поиск и запись цепочки номеров кластеров по адресу ClustList, а число кластеров – в N

Процедура Install

Алгоритм.

  1. Определяет путь загрузки программы и записывает в File_I
  2. Вызывает процедуру ClustSearch. Параметры – адреса File_I, N_I, ClustList_I
  3. Заполняет AddrProc адресом процедуры проверки Check

Процедура Check

Алгоритм.

  1. Определяет путь загрузки программы и записывает в File
  2. Вызывает процедуру ClustSearch. Параметры – адреса File, N, ClustList
  3. Сравнивает параметры File, N, ClustList с File_I, N_I, ClustList_I
  4. В случае неуспеха сравнения заканчивает работу программы
Сохранить в:

  • Twitter
  • Grabr
  • WebDigg
  • email
  • Facebook
  • FriendFeed
  • Google Bookmarks
  • Yandex
  • Memori
  • MisterWong
  • BobrDobr
  • Moemesto
  • News2
  • 100zakladok
  • Baay!

Случайные записи

Комментарии и пинг сейчас закрыты.