Для студентов МГТУ им. Н.Э.Баумана по предмету Системное программированиеКП - резидентный загрузчикКП - резидентный загрузчик 2017-12-28СтудИзба

Курсовая работа: КП - резидентный загрузчик

Описание

Описание файла отсутствует

Характеристики курсовой работы

Учебное заведение
Семестр
Просмотров
169
Скачиваний
5
Размер
306,52 Kb

Список файлов

Прочти меня

Файл скачан с сайта StudIzba.com

Listing

Turbo Assembler Version 3.1 26/12/02 04:09:58 Page 1

loader.ASM

1 0000 .model tiny ;объединить сегменты кода, +

2 данных, стека и т.д.

3

4 .386 ;для pushf/popf, +

5 pusha/popa, shl, снятие ограничение в 127 байтдля

6 ;условных +

7 переходов

8 ;--------------------------------------- --------

9 ;вызывается дообработки вызова

10 prep_state macro

11 cli

12

13 cmp byte ptr cs:is_app_working,1;проверка работаетли уже +

14 приложение

15 je exit_09h_handler ;если да, то нельзя снова +

16 запускать процесс

17

18 mov al,01h

19 mov byte ptr cs:is_app_working,al;указывает, что уже работает

20

21 mov ax,ss ;сохраняет адреса +

22 стека прерванной программы

23 mov word ptr cs:app_ss,ax

24 mov ax,sp

25 mov word ptr cs:app_sp,ax

26

27 mov ax,cs ;переключает стек и+

28 все сегментныйрегистры

29 mov ds,ax ;на резидент

30 mov es,ax

31 mov ss,ax

32 lea sp,pr_stack

33 add sp,480h

34

35 sti

36 endm

37 ;--------------------------------------- --------

38 ;вызывается при завершении обработки вызова

39 rest_state macro

40 cli

41

42 xor ax,ax

43 mov byte ptr cs:is_app_working,al;указывает, что приложение +

44 большене работает

45

46 mov ax, word ptr cs:app_ss ;восстанавливает стек прерванной +

47 программы

48 mov ss,ax

49 mov ax, word ptr cs:app_sp

50 mov sp,ax

51

52 sti

53 endm

54 ;--------------------------------------- --------

55 ;считывает заголовок exe файла

56 ;обязательный параметрfile_name содержит адрес строки,

57 ;содержащей путь к файлу в виде ASCIIZстроки

Turbo Assembler Version 3.1 26/12/02 04:09:58 Page 2

loader.ASM

58 ;регистр ds уже долженбыть настроен на нужныйсегмент

59 read_header macro file_name:req

60 mov ax,3D02h ;открывает файл

61 lea dx,file_name

62 int 21h

63 jc Error_IO

64

65 mov handle,ax

66 xor ax,ax

67 mov ah,3Fh ;читает из файла

68 mov bx,handle

69 mov cx,32 ;первые 32 байта

70 lea dx,header

71 int 21h

72 jc Error_IO

73

74 mov ah,3Eh ;закрывает файл

75 mov bx,handle

76 int 21h

77 jc Error_IO

78 endm

79 ;--------------------------------------- --------

80 ;загружает exeфайл в память

81 ;настраивает его адреса

82 ;и устанавливает точкувозврата

83 ;обязательный параметрfile_name содержит адрес строки,

84 ;содержащей путь к файлу в виде ASCIIZстроки

85 ;регистр ds уже долженбыть настроен на нужныйсегмент

86 load_file macro file_name:req

87 call setEPB ;заполняет EPB

88

89 read_header file_name

90

91 mov ax,4B01h ;загружает в память +

92 программу, указанную

93 lea bx,EPB ;в переменной file_name

94 lea dx,file_name

95 int 21h

96 jc Error_IO

97

98 mov ah,62h ;получает PSP прерванного процесса

99 int 21h

100

101 add bx,10h ;настраивает SS:SP на стек +

102 загруженной

103 mov sp,word ptr header.10h

104 mov ax,bx ;программы

105 add ax,word ptr header.0Eh

106 mov ss,ax

107 mov ax,bx

108 add ax,word ptr header.16h

109 push ax ;устанавливаетточку входа в

110 mov ax,word ptr header.14h ;программу

111 push ax

112 sub bx,10h

113 mov ds,bx ;настраивает ds и es на новый PSP

114 mov es,bx

Turbo Assembler Version 3.1 26/12/02 04:09:58 Page 3

loader.ASM

115 lea dx,rest

116 mov bx,0ah

117 mov [bx],dx ;точкувозврата на rest

118 retf

119 endm

120 ;--------------------------------------- --------

121 =000D cr equ 0dh ; ASCII возврат каретки

122 =000A lf equ 0ah ; ASCII перевод строки

123 ;--------------------------------------- --------

124 =0001 stdout equ 1 ; стандартный вывод

125 ;--------------------------------------- --------

126

127 0000 .code ;сегмент кода

128 org 2Ch

129 002C ???? env_seg dw ? ;окружение DOS, +

130 сегментный адрес

131

132 org 80h

133 0080 ?? cmd_line_len db ? ;длинакомандной строки

134 0081 7F*(??) cmd_line db 7Fh dup (?) ;командная строка

135

136 0100 Start:

137 0100 E9 08E8 jmp initialize

138

139 ;--------------------------------------- --------

140 ;Выводсообщения об ошибке привыполнении операции

141 ;Ввода-вывода

142 0103 Error_IO:

143 0103 33 C0 xor ax,ax

144 0105 2E: 3B 06 0561r cmp ax,word ptr cs:which_app

145 010A 75 0F90 90 jne IO_2

146

147 010E BA 0428r lea dx,msg_er1

148 0111 B9 0031 90 mov cx,msg_er1_len

149 0115 E8 0025 call pmsg

150 0118 E9 02AB jmp rest

151

152 011B IO_2:

153 011B BA 0459r lea dx,msg_er2

154 011E B9 0031 90 mov cx,msg_er2_len

155 0122 E8 0018 call pmsg

156 0125 E9 029E jmp rest

157

158 ;--------------------------------------- --------

159 ;Установка сегментов вEPB

160 0128 setEPB proc near

161 0128 BB 04F3r lea bx,EPB

162 012B 8C D8 mov ax,ds

163 012D 89 4704 mov [bx][ 4],ax

164 0130 89 4708 mov [bx][ 8],ax

165 0133 89 470C mov [bx][12],ax

166 0136 89 4710 mov [bx][16],ax

167 0139 89 4714 mov [bx][20],ax

168 013C C3 retn

169 013D setEPB endp

170 ;--------------------------------------- --------

171 ;отображает сообщение на стандартном выходе

Turbo Assembler Version 3.1 26/12/02 04:09:58 Page 4

loader.ASM

172 ;в ds:dx адресстроки

173 ;в cx длина

174 013D pmsg proc near

175 013D BB 0001 mov bx,stdout

176 0140 B4 40 mov ah,40h

177 0142 CD 21 int 21h

178 0144 C3 ret

179 0145 pmsg endp

180

181 0145 hw_reset:

182 0145 CB retf ;минимальный +

183 hw_reset по спецификации ISP

184

185

186 ;--------------------------------------- --------

187 ;обработчик прерыванияклавиатуры

188 ;при работе вызывает старый обработчик,

189 ;а потом выполняет свои проверки и операции

190 0146 int09h_handler proc far

191 0146 EB 10 jmp short actual_int09h_handler ;ISP: пропустить блок

192

193 0148 ???????? old_int09h dd ? ;ISP: старый +

194 обработчик

195 014C 424B dw 424Bh ;ISP: сигнатура

196 014E 00 db 00h ;ISP: +

197 вторичный обработчик

198 014F EB F4 jmp short hw_reset ;ISP: ближний jmp на +

199 hw_reset

200 0151 07*(00) db 7 DUP (0) ;ISP: +

201 зарезервированно

202

203 0158 actual_int09h_handler: ;начало обработчика int 09h

204 0158 9C pushf ;сохраняем флаги

205 0159 2E: FF 1E 0148r call dword ptr cs:old_int09h ;вызываем старый обработчик

206

207 015E 60 pusha ;

208 015F 1E push ds ;в аппаратном +

209 прерывании надо сохранять все регистры

210 0160 06 push es ;

211

212

213 0161 6A 40 push 0040h

214 0163 1F pop ds ;в ds +

215 сегментный адреc области данных BIOS

Картинка-подпись
Хочешь зарабатывать на СтудИзбе больше 10к рублей в месяц? Научу бесплатно!
Начать зарабатывать

Комментарии

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