50335 (Удаление слов использованием резидентной программы), страница 2

2016-07-30СтудИзба

Описание файла

Документ из архива "Удаление слов использованием резидентной программы", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "курсовые/домашние работы", в предмете "информатика, программирование" в общих файлах.

Онлайн просмотр документа "50335"

Текст 2 страницы из документа "50335"

В данном программном изделии используются технологии работы с использованием портов ввода вывода (средства BIOS).

3.2 Назначение разработки

Программное изделие можно использовать в работе с операционной системой DOS. При помощи данного программного продукта можно производить удаление слов из текстового файла без учета регистра, считая пробел – разделителем.

3.3 Требования к программе или программному изделию

3.3.1 Стандарты

Программное изделие выполнено согласно стандартам, указанным в техническом задании в пункте 1.4.1.

3.3.2 Требования к составу и параметрам технических средств

Программное изделие работает на компьютере, совместимом с IBM PC. Программа не требовательна к оперативной памяти.

Вся информация вводится при помощи клавиатуры цифровые клавишы алфавитно-цифрового блока. Контроль информации осуществляется при помощи дисплея с видеорежимом 40/80-25.

3.3.3 Требования к информационной и программной совместимости

Программное изделие написано на языке Ассемблер для компилятора TurboAssemler 3.1, и работает под управлением операционной системы MS-DOS и виртуальной машины DOS в операционной системе Windows 95 – XP.

3.3.4 Результирующие компоненты изделия

Согласно пункту 1.4.6. технического задания все файлы программы предоставляются на дискете формата 3,5 дюйма.

3.3.5 Безопасность и секретность

Данный программный продукт не является секретным и не требует защиты, поэтому ограничение доступа к нему не предусматривается.

3.3.6 Рестарт

В случае, когда программа по внешним причинам перестает отвечать на запросы пользователя, необходимо:

  • в системе DOS нажать комбинацию клавиш «CTRL+ALT+DEL» и средствами операционной системы прервать программу

  • в виртуальной машине DOS операционной системы Windows просто закрыть окно.

  • и затем заново запустить ее согласно пункту 1.4.8. технического задания.

3.4.1 Структура модуля

  1. Общая статическая схема резидента

Общая статическая схема резидента представлена на рисунке 3.1.

Рисунок 3.1 – Общая статическая схема резидента

3.4.2 Описание подпрограмм

  1. Подпрограмма new_2Fh

Входные данные: ах – номер функции.

Выходные данные: нет.

Процессы обработки: происходит сравнение регистров общего назначения на предмет наличия определенного значения. Если значение регистра ax равно 0c801h, то производится выгрузку резидентной части и восстановление старого прерывания. В противном случае, вызывается системный обработчик прерывания int 2fh.

Используемые регистры: AX, DX, DI, DS, ES, CS.

Используемые внешние переменные: old_2Fh.

  1. Подпрограмма iniz

Входные данные: нет.

Выходные данные: нет.

Процессы обработки: являясь секцией инициализации резидента, процедура осуществляет проверку на повторную загрузку резидента, используя внешнюю переменную, с уникальным значением, инсталляцию резидента в память, передачу данных резиденту с использованием вектора свободного прерывания, передачу управления резиденту посредством передачу управления резиденту посредством вызова int 66h , вывод информационных сообщений.

Используемые регистры: AX, BX, DX, DS, ES, CS, DS, DI.

Используемые внешние переменные: old_2Fh, mes.

Блок-схема подпрограммы представлена на рисунке 3.4.

Рисунок 3.2 Блок-схема подпрограммы iniz

  1. Описание используемых функций DOS

  • Функция 09h int 21h – вывод строки на экран

Вход:

AH = 09h;

DS:DX – адрес выводимой строки, которая должна заканчиваться служебным символом '$'.

  • Функция 0ah int 21h ввод строки произвольной длины:

Вход:

AH = 0Ah.

Выход: введенная строка по адресу Buffer.

  • Функция 39h int 21h создание директории D:\temp

Вход:

АН=39h

DS:DX адрес ASCIZ-строки с путем, в котором все директории, кроме последней, существуют. Для DOS 3.3 и более ранних версий длина строки не должна превышать 64 байта.

Выход: CF=0 если директория создана

CF=1 и АХ = 3, если путь не найден

CF=1 и АХ = 5, если доступ запрещен.

  • Функция 5Bh int 21h – Создание файла

Вход:

AH = 5Bh.

  • Функция 40h int 21h – запись в file.

Вход:

AH = 40h.

DS:DX адрес начала строки

Выход:

CF = 0 AX число записанных байтов

CF=1 код ошибки.

  • Функция 3eh int 21h – закрытие file

Вход:

AH = 3Eh;

BX – идентификатор файла;

Выход:

CF=0 если не произошла ошибка

CF=1и АХ = 6, если неправильный идентификатор.

  • Функция 3dh int 21h – открыть существующий файл

Вход:

AH = 3Dh;

DS:DXадрес ASCIZ-строки с полным именем файла

Выход:

CF=0и АХ = идентификатор файла, если не произошла ошибка CF=1и АХ = 2, если файл не найден

CF=1и АХ = 3, если путь не найден

CF=1и АХ = 4, если слишком много открытых файлов

CF=1и АХ = 5, если доступ запрещен

CF=1и АХ = 0Сh, неправильный режим доступа.

  • Функция 3Fh int 21h чтение файла

Вход:

АН=3Fh

BX идентификатор файла

CX число байтов

DS:DX адрес буфера для приема данных.

Выход:

CF=0и АХ = число считанных байтов, если не произошла ошибка

CF=1и АХ = 05h, если доступ запрещен

CF=1и АХ = 6, если неправильный идентификатор.

  • Функция 41h int 21h – удаление файла

Вход:

AH = 41h

DS:DXадрес ASCIZ-строки с полным именем файла.

Выход:

CF=0 если файл удален

CF=1и АХ = 02h, если файл не найден

CF=1и АХ = 03h, если путь не найден

CF=1и АХ = 05h, если доступ запрещен.

  • Функция 56h int 21h – Переименовать файл.

Вход:

AH = 56h;

  1. Текст подпрограмм

Cм. приложение А.

3.5 Тестирование

3.5.1 Цель испытаний

Выяснить поведение программы в различных ситуациях, созданных пользователем.

  1. 3.5.2 Тесты

  2. Тест №1

Действия: первый запуск резидентной программы.

Реакция программы: выводится уведомление об установке резидента. См. рисунок 3.3.

Рисунок 3.3 Тест №1

  1. Список использованных источников

1.Гордеев А. В., Молчанов А. Ю. Системное программное обеспечение. – Питер, 2003. – 736 с.

2.Зубков С. В. Assembler для DOS, Windows и UNIX. – М.: ДМК, 2000. – 608 с.

3.Кулаков В. Программирование на аппаратном уровне: специальный справочник (+дискета). 2-е издание. – СПб.: Питер, 2003. – 847 с. ил.

4.Финогенов К. Г., Самоучитель по системным функциям MS DOS. –3-е изд., – М.: Горячая линия – Телеком, 2001. – 382с.

5.Фролов А.В., Фролов Г.В. Аппаратное обеспечение персонального компьютера. – М.: Диалог-МИФИ, 1997. – 304 с (БСП т.33).

6.Юров В. И. Assembler. Учебник для вузов.2-е изд. – СПб.: Питер, 2006. – 637 с.: ил.

Приложение А

Листинг файла residenta.lst

Turbo Assembler Version 4.1 26/12/10 02:44:32 Page 1

residenta.ASM

1 0000 .modeltiny

2 0000 .code

3 .486

4 org 100h

5 0100 main proc far

6 0100 E9 01C8 jmp iniz

7 0103 00000000 old_2Fh dd 0 ;системный адрес int_2Fh

8 0107 00000000 old_09h dd 0 ;системный адрес 09h

9 010B 44 3A5C 74 65 6D 70+ filename1 db'D:\temp\file1.txt',0

10 5C 6669 6C 65 31 2E+

11 74 7874 00

12 011D 44 3A5C 74 65 6D 70+ filename2 db'D:\temp\file2.txt',0

13 5C 6669 6C 65 32 2E+

14 74 7874 00

15 012F ???? handle1 dw ?

16 0131 ???? handle2 dw ?

17 0133 14 bufferdb 20

18 0134 ???? buf_len dw ?

19 0136 12*(??) cont db 18 dup (?);содержимое буфера

20 0148 0A 0D24 str_break db 10,13,'$'

21 014B 49 6E70 75 74 20 73+ welcome db "Input string, please",'$'

22 74 7269 6E 67 2C 20+

23 70 6C65 61 73 65 24

24 0160 53 7472 69 6E 67 20+ doing db "String afterdeleting",'$'

25 61 6674 65 72 20 64+

26 65 6C65 74 69 6E 67+

27 24

28 0176 44 3A5C 74 65 6D 70+ directory db 'D:\temp',0

29 00

30

31 017E new_2Fh: ;прикладной обработчик 2Fh

32 017E 3D C800 cmp ax,0c800h ;подфункция повторной загрузки

33 0181 74 0B90 90 jzinst

34 0185 3C 01 cmp al,01 ;подфункция выгрузки

35 0187 74 0E90 90 jzuninstall

36 018B EB 0490 jmp out_2Fh

37 018E inst:

38 018E B0 FF mov al,0ffh

39 0190 CF iret ;возврат после первого вызоваint 2Fh

40 0191 out_2Fh:

41 0191 2E: FF 2E 0103r jmp cs:old_2Fh ;после обработки необходим переход в транзитную часть

42 0196 CF iret;откудабыл осуществленвызов

43 0197 uninstall:

44 0197 1E push ds

45 0198 06 push es

46 0199 B8 2509 mov ax,2509h ;восстановление int 09h

47 019C 2E: C5 16 0107r lds dx,cs:old_09h

48 01A1 CD 21 int 21h

49 01A3 B8 252F mov ax,252Fh ;восстановление int_2Fh

50 01A6 2E: C5 16 0103r lds dx,cs:old_2Fh

51 01AB CD 21 int 21h

52 ;выгрузка окруж. резидента

53 ; адрес окруж.в PSP по смещению 2ch

54 01AD 2E: 8E 06 002C mov es,cs:2ch ;сегментный адрес окруж.

55 01B2 B4 49 mov ah,49h

56 01B4 CD 21 int 21h

57 ;выгрузка резидента

Turbo Assembler Version 4.1 26/12/10 02:44:32 Page 2

q.ASM

58 01B6 0E push cs

59 01B7 07 pop es;сегментный адрес резидента

60 01B8 B4 49 mov ah,49h

61 01BA CD 21 int 21h

62 01BC 07 pop es

63 01BD 1F pop ds

64 01BE CF iret ;возвращение после третьего вызова int 2Fh

65

66 01BF asmb:

67 ;создание директории D:\temp

68 01BF B4 39 mov ah,39h

69 01C1 BA 0176r mov dx,offset directory

70 01C4 CD 21 int 21h

71 ;создание file1

72 01C6 B4 5B mov AH,5Bh

73 01C8 B9 0000 mov CX,0 ; без атрибутов

74 01CB BA 010Br mov DX,offset filename1

75 01CE CD 21 int 21h

76 01D0 A3 012Fr mov handle1, ax ; дескриптор file в handle1

77 ;очистка экрана

78 01D3 B8 0003 mov AX,0003h

79 01D6 CD 10 int 10h

80 ;выводна экран приветствия

81 01D8 B4 09 mov AH,09h

82 01DA BA 014Br lea DX,welcome

83 01DD CD 21 int 21h

84 01DF B4 09 mov AH,09h

85 01E1 BA 0148r lea DX,str_break

86 01E4 CD 21 int 21h

87 ;ввод строки склавиатуры

88 01E6 B4 0A mov AH,0Ah

89 01E8 BA 0133r lea DX,buffer

90 01EB CD 21 int 21h ; в buf_len -фактическая длина строки

91 01ED B4 09 mov AH,09h

92 01EF BA 0148r lea DX,str_break

93 01F2 CD 21 int 21h

94 ;выводна экран удаляемых слов

95 01F4 B4 09 mov AH,09h

96 01F6 BA 0160r lea DX,doing

97 01F9 CD 21 int 21h

98 01FB B4 09 mov AH,09h

99 01FD BA 0148r lea DX,str_break

100 0200 CD 21 int 21h

101 ;запись в file1

102 0202 B4 40 mov AH,40h

103 0204 8B 1E012Fr mov BX,handle1

104 0208 33 C9 xor CX,CX

105 020A 8B 0E0134r mov CX,buf_len

106 020E BA 0136r lea DX,cont ; содержимое buffer

107 0211 CD 21 int 21h

108 ;выводна экран file1

109 0213 B4 40 mov AH,40h

110 0215 BB 0001 mov BX,1

111 0218 8B 0E0134r mov CX,buf_len

112 021C BA 0136r lea DX,cont

113 021F CD 21 int 21h

114 0221 B4 09 mov AH,09h

Turbo Assembler Version 4.1 26/12/10 02:44:32 Page 3

q.ASM

115 0223 BA 0148r lea DX,str_break

116 0226 CD 21 int 21h

117 ;закрытие file1

118 0228 B4 3E mov ah,3eh

119 022A 8B 1E012Fr mov bx, handle1

120 022E CD 21 int 21h

121 0230 read_next:

122 0230 B4 3D mov ah,3dh ;открыть существующий файл

123 0232 B0 00 mov al, 0

124 0234 BA 010Br lea dx, filename1

125 0237 CD 21 int 21h

126 0239 A3 012Fr mov handle1, ax

127 023C read_next_byte:

128 023C B4 3F mov ah,3Fh ; чтение файла

129 023E 8B 1E012Fr mov bx,handle1

130 0242 B9 0001 mov cx,1 ; считывать один байт

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Нашёл ошибку?
Или хочешь предложить что-то улучшить на этой странице? Напиши об этом и получи бонус!
Бонус рассчитывается индивидуально в каждом случае и может быть в виде баллов или бесплатной услуги от студизбы.
Предложить исправление
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5137
Авторов
на СтудИзбе
441
Средний доход
с одного платного файла
Обучение Подробнее