Listing (КП - резидентный загрузчик), страница 2

2017-12-28СтудИзба

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

Файл "Listing" внутри архива находится в следующих папках: КП - резидентный загрузчик, Резидентный загрузчик. Текстовый-файл из архива "КП - резидентный загрузчик", который расположен в категории "". Всё это находится в предмете "системное программирование" из 5 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "курсовые/домашние работы", в предмете "системное программирование" в общих файлах.

Просмотр 2 страницы текстового-файла онлайн

216 0164 8B 3E001A mov di,word ptr ds:[1Ah] ;загрузка адреса головы

217 0168 3B 3E001C cmp di,word ptr ds:[1Ch] ;и хвоста буфера клавиатуры, если +

218 они равны, то прерывание

219 016C 0F 8400FB je exit_09h_handler ;вызвано отпусканием +

220 клавиш. Значитнам тутне место :)

221

222 0170 8B 05 mov ax,word ptr [di] ;Читает символиз головы +

223 буфера.

224 ;Дальше +

225 проверяет скан-коды

226 0172 80 FC02 cmp ah,02h ;1 or !

227 0175 74 3690 90 je work_1 ;да это 1. Идет на +

228 работу

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

loader.ASM

229 0179 80 FC03 cmp ah,03h ;2 or @

230 017C 74 5590 90 je work_2 ;аналогично

231 0180 80 FC16 cmp ah,16h ;u or U

232 0183 74 0C90 90 je its_u

233 0187 80 FC2E cmp ah,2eh ;с or C

234 018A 74 1390 90 je its_c

235 018E E9 00DA jmp exit_09h_handler ;если мы попали сюда, то +

236 символне относился к группе 1, 2, u, c

237

238 0191 its_u:

239 0191 A0 0017 mov al,ds:[17h]

240 0194 B4 04 mov ah,04h

241 0196 84 E0 test ah,al ;проверка нажата ли клавиша+

242 Ctrl

243 0198 75 7190 90 jnz work_u

244 019C E9 00CC jmp exit_09h_handler

245

246 019F its_c:

247 019F A0 0017 mov al,ds:[17h]

248 01A2 B4 04 mov ah,04h

249 01A4 84 E0 test ah,al ;проверка нажата ли клавиша+

250 Ctrl

251 01A6 0F 8500B3 jnz work_c

252 01AA E9 00BE jmp exit_09h_handler

253

254

255 01AD work_1:

256 01AD 89 3E001C mov word ptr ds:[1Ch],di

257

258 01B1 FA cli

259

260 01B2 33 C0 xor ax,ax

261 01B4 2E: 38 06 0560r cmp byte ptr cs:is_haveto_work,al

262 01B9 75 3C90 90 jne drop_cli ;проверки +

263 возможности вызова функции загрузки

264

265 01BD 2E: 38 06 055Fr cmp byte ptr cs:is_app_working,al

266 01C2 75 3390 90 jne drop_cli

267

268 01C6 2E: A3 0561r mov word ptr cs:which_app,ax;указывает какой файл запускать

269

270 01CA B0 01 mov al,1

271 01CC 2E: A2 0560r mov byte ptr cs:is_haveto_work,al

272 01D0 EB 2590 jmp drop_cli

273

274 01D3 work_2:

275 01D3 89 3E001C mov word ptr ds:[1Ch],di

276

277 01D7 FA cli

278

279 01D8 33 C0 xor ax,ax

280 01DA 2E: 38 06 0560r cmp byte ptr cs:is_haveto_work,al

281 01DF 75 1690 90 jne drop_cli

282

283 01E3 2E: 38 06 055Fr cmp byte ptr cs:is_app_working,al

284 01E8 75 0D90 90 jne drop_cli

285

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

loader.ASM

286 01EC B8 0001 mov ax,1

287 01EF 2E: A3 0561r mov word ptr cs:which_app,ax

288 01F3 2E: A2 0560r mov byte ptr cs:is_haveto_work,al

289

290 01F7 drop_cli: ;сбросзапрета +

291 прерываний и выход из обработчика

292 01F7 FB sti

293 01F8 EB 7190 jmp exit_09h_handler

294

295 01FB unld_err:

296 01FB 8C C8 mov ax,cs ;выводит сообщения +

297 об невозможности выгрузки

298 01FD 8E D8 mov ds,ax

299 01FF BA 04B7r lea dx,msg_unld_err

300 0202 B9 0026 mov cx,offset msg_unld_err_len

301 0205 E8 FF35 call pmsg

302

303 0208 EB 6190 jmp exit_09h_handler

304

305 020B work_u:

306 020B 89 3E001C mov word ptr ds:[1Ch],di ;очищает буферклавиатуры, +

307 устанавливая адреса головы

308 ;и хвоста +

309 одинаковыми, уничтожаясимвол в буфере

310 020F FA cli ;запрещает +

311 все прерываниякроме немаскируемых, т.к. выполняет

312 +

313 ;критический участок

314 0210 6A 00 push 0

315 0212 1F pop ds ;в ds +

316 сегментный адрес таблицы векторов прерываний

317 0213 8C C8 mov ax,cs ;в ax наш +

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

319

320 0215 3B 060026 cmp ax,word ptr ds:[09h*4+2];сравнивает сегментныеадреса,т.к.+

321 DOS незагрузит другую

322 ;программу +

323 с сегментным адресом резидента

324 0219 75 E0 jne unld_err

325 021B 3B 0600A2 cmp ax,word ptr ds:[28h*4+2]

326 021F 75 DA jne unld_err

327 0221 3B 0600B6 cmp ax,word ptr ds:[2Dh*4+2]

328 0225 75 D4 jne unld_err

329

330 0227 B8 2509 mov ax,2509h ;восстанавливает +

331 старыеобработчики

332 022A 2E: C5 16 0148r lds dx,dword ptr cs:old_int09h ;принцип см. вразделе +

333 инициализации

334 022F CD 21 int 21h

335 0231 B8 2528 mov ax,2528h

336 0234 2E: C5 16 0271r lds dx,dword ptr cs:old_int28h

337 0239 CD 21 int 21h

338 023B B8 252D mov ax,252Dh

339 023E 2E: C5 16 03E1r lds dx,dword ptr cs:old_int2Dh

340 0243 CD 21 int 21h

341

342 0245 8C C8 mov ax,cs ;выводит сообщение +

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

loader.ASM

343 об успешной выгрузке

344 0247 8E D8 mov ds,ax

345 0249 BA 048Ar lea dx,msg_unld

346 024C B9 002D mov cx,offset msg_unld_len

347 024F E8 FEEB call pmsg

348

349 0252 0E push cs

350 0253 5B pop bx ;bx +

351 содержит сегментный адрес резидента

352 0254 B4 50 mov ah,50h ;объявляет резидент+

353 текущим процессом

354 0256 CD 21 int 21h

355 0258 B8 4C00 mov ax,4C00h ;и завершает его, +

356 код возврата 00 - успешная выгрузка

357 025B CD 21 int 21h

358

359 025D work_c: ;перехватывает +

360 нажатие клавишCtrl+C и

361 025D 33 C0 xor ax,ax ;прерывает +

362 выполнение лю,ых операций

363 025F 2E: A2 0560r mov byte ptr cs:is_haveto_work,al

364 0263 2E: A2 055Fr mov byte ptr cs:is_app_working,al

365 0267 2E: A3 0561r mov word ptr cs:which_app,ax

366

367 026B exit_09h_handler:

368 026B 07 pop es ;

369 026C 1F pop ds +

370 ;восстанавливает регистры

371 026D 61 popa ;

372

373 026E CF iret ;возвращается в +

374 прерванную программу

375

376 026F int09h_handler endp ;конецобработчика

377

378

379

380 ;--------------------------------------- --------

381 ;обработчик прерываниянеактивности DOS

382 ;в этом обработчике выполняется загрузка файла

383 026F int28h_handler proc far

384 026F EB 11 jmp short actual_int28h_handler

385

386 0271 ???????? old_int28h dd ?

387 0275 424B dw 424Bh

388 0277 00 db 00h

389 0278 E9 FECA jmp hw_reset

390 027B 07*(00) db 7 dup (0)

391

392 0282 actual_int28h_handler:

393 0282 9C pushf

394 0283 2E: FF 1E 0271r call dword ptr cs:old_int28h

395

396 0288 60 pusha

397 0289 1E push ds

398 028A 06 push es

399

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

loader.ASM

400 028B A1 0565r mov ax,word ptr [in_dos_addr+2]

401 028E 8E C0 mov es,ax

402 0290 B8 0563r mov ax,offset es:[in_dos_addr] ;проверка флага занятости +

403 DOS

404 +

405 ;так как будутвызываться сложные функции DOS

406 +

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