Listing (КП - резидентный загрузчик), страница 3
Описание файла
Файл "Listing" внутри архива находится в следующих папках: КП - резидентный загрузчик, Резидентный загрузчик. Текстовый-файл из архива "КП - резидентный загрузчик", который расположен в категории "". Всё это находится в предмете "системное программирование" из 5 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "курсовые/домашние работы", в предмете "системное программирование" в общих файлах.
Просмотр 3 страницы текстового-файла онлайн
407 ;нужночтобы этот флагбыл сброшен
408
409 0293 A9 0000 test ax,0
410 0296 0F 850140 jnz exit_28h_handler
411
412 029A FA cli
413 029B 33 C0 xor ax,ax
414 029D 2E: 38 06 0560r cmp byte ptr cs:is_haveto_work,al;проверканеобходимос ти вызова+
415 функции загрузки
416 02A2 0F 840134 je exit_28h_handler
417 02A6 FB sti
418
419 prep_state ;проверка +
420 возможности и подготовка к загрузке
1 421 02A7 FA cli
1 422 02A8 2E: 80 3E 055Fr 01 cmp byte ptr cs:is_app_working,1;проверка работаетли уже +
423 приложение
1 424 02AE 74 BB je exit_09h_handler ;если да, то нельзя снова +
425 запускать процесс
1 426 02B0 B0 01 mov al,01h
1 427 02B2 2E: A2 055Fr mov byte ptr cs:is_app_working,al;указывает, что уже работает
1 428 02B6 8C D0 mov ax,ss ;сохраняет адреса +
429 стека прерванной программы
1 430 02B8 2E: A3 0567r mov word ptr cs:app_ss,ax
1 431 02BC 8B C4 mov ax,sp
1 432 02BE 2E: A3 0569r mov word ptr cs:app_sp,ax
1 433 02C2 8C C8 mov ax,cs ;переключает стек и+
434 все сегментныйрегистры
1 435 02C4 8E D8 mov ds,ax ;на резидент
1 436 02C6 8E C0 mov es,ax
1 437 02C8 8E D0 mov ss,ax
1 438 02CA BC 056Br lea sp,pr_stack
1 439 02CD 81 C40480 add sp,480h
1 440 02D1 FB sti
441
442 02D2 33 C0 xor ax,ax
443 02D4 2E: 3B 06 0561r cmp ax,word ptr cs:which_app ;анализ: какойфайл нужно +
444 загружать
445 02D9 75 7490 90 jne load_2
446
447 load_file exe1prog ;загрузка файла +
448 exe1.exe
1 449 02DD E8 FE48 call setEPB ;заполняет EPB
1 450 read_header exe1prog
2 451 02E0 B8 3D02 mov ax,3D02h ;открывает файл
2 452 02E3 BA 052Br lea dx,exe1prog
2 453 02E6 CD 21 int 21h
2 454 02E8 0F 82FE17 jc Error_IO
2 455 02EC A3 053Dr mov handle,ax
2 456 02EF 33 C0 xor ax,ax
Turbo Assembler Version 3.1 26/12/02 04:09:58 Page 9
loader.ASM
2 457 02F1 B4 3F mov ah,3Fh ;читает из файла
2 458 02F3 8B 1E053Dr mov bx,handle
2 459 02F7 B9 0020 mov cx,32 ;первые 32 байта
2 460 02FA BA 053Fr lea dx,header
2 461 02FD CD 21 int 21h
2 462 02FF 0F 82FE00 jc Error_IO
2 463 0303 B4 3E mov ah,3Eh ;закрывает файл
2 464 0305 8B 1E053Dr mov bx,handle
2 465 0309 CD 21 int 21h
2 466 030B 0F 82FDF4 jc Error_IO
1 467 030F B8 4B01 mov ax,4B01h ;загружает в память +
468 программу, указанную
1 469 0312 BB 04F3r lea bx,EPB ;в переменной exe1prog
1 470 0315 BA 052Br lea dx,exe1prog
1 471 0318 CD 21 int 21h
1 472 031A 0F 82FDE5 jc Error_IO
1 473 031E B4 62 mov ah,62h ;получает PSP прерванного процесса
1 474 0320 CD 21 int 21h
1 475 0322 83 C310 add bx,10h ;настраивает SS:SP на стек +
476 загруженной
1 477 0325 8B 26054Fr mov sp,word ptr header.10h
1 478 0329 8B C3 mov ax,bx ;программы
1 479 032B 03 06054Dr add ax,word ptr header.0Eh
1 480 032F 8E D0 mov ss,ax
1 481 0331 8B C3 mov ax,bx
1 482 0333 03 060555r add ax,word ptr header.16h
1 483 0337 50 push ax ;устанавливаетточку входа в
1 484 0338 A1 0553r mov ax,word ptr header.14h ;программу
1 485 033B 50 push ax
1 486 033C 83 EB10 sub bx,10h
1 487 033F 8E DB mov ds,bx ;настраивает ds и es на новый PSP
1 488 0341 8E C3 mov es,bx
1 489 0343 BA 03C6r lea dx,rest
1 490 0346 BB 000A mov bx,0ah
1 491 0349 89 17 mov [bx],dx ;точкувозврата на rest
1 492 034B CB retf
493 034C EB 7090 jmp after_load
494
495 034F load_2:
496 load_file exe2prog ;загрузка файла +
497 exe2.exe
1 498 034F E8 FDD6 call setEPB ;заполняет EPB
1 499 read_header exe2prog
2 500 0352 B8 3D02 mov ax,3D02h ;открывает файл
2 501 0355 BA 0534r lea dx,exe2prog
2 502 0358 CD 21 int 21h
2 503 035A 0F 82FDA5 jc Error_IO
2 504 035E A3 053Dr mov handle,ax
2 505 0361 33 C0 xor ax,ax
2 506 0363 B4 3F mov ah,3Fh ;читает из файла
2 507 0365 8B 1E053Dr mov bx,handle
2 508 0369 B9 0020 mov cx,32 ;первые 32 байта
2 509 036C BA 053Fr lea dx,header
2 510 036F CD 21 int 21h
2 511 0371 0F 82FD8E jc Error_IO
2 512 0375 B4 3E mov ah,3Eh ;закрывает файл
2 513 0377 8B 1E053Dr mov bx,handle
Turbo Assembler Version 3.1 26/12/02 04:09:58 Page 10
loader.ASM
2 514 037B CD 21 int 21h
2 515 037D 0F 82FD82 jc Error_IO
1 516 0381 B8 4B01 mov ax,4B01h ;загружает в память +
517 программу, указанную
1 518 0384 BB 04F3r lea bx,EPB ;в переменной exe2prog
1 519 0387 BA 0534r lea dx,exe2prog
1 520 038A CD 21 int 21h
1 521 038C 0F 82FD73 jc Error_IO
1 522 0390 B4 62 mov ah,62h ;получает PSP прерванного процесса
1 523 0392 CD 21 int 21h
1 524 0394 83 C310 add bx,10h ;настраивает SS:SP на стек +
525 загруженной
1 526 0397 8B 26054Fr mov sp,word ptr header.10h
1 527 039B 8B C3 mov ax,bx ;программы
1 528 039D 03 06054Dr add ax,word ptr header.0Eh
1 529 03A1 8E D0 mov ss,ax
1 530 03A3 8B C3 mov ax,bx
1 531 03A5 03 060555r add ax,word ptr header.16h
1 532 03A9 50 push ax ;устанавливаетточку входа в
1 533 03AA A1 0553r mov ax,word ptr header.14h ;программу
1 534 03AD 50 push ax
1 535 03AE 83 EB10 sub bx,10h
1 536 03B1 8E DB mov ds,bx ;настраивает ds и es на новый PSP
1 537 03B3 8E C3 mov es,bx
1 538 03B5 BA 03C6r lea dx,rest
1 539 03B8 BB 000A mov bx,0ah
1 540 03BB 89 17 mov [bx],dx ;точкувозврата на rest
1 541 03BD CB retf
542
543 03BE after_load:
544 03BE FA cli
545 03BF 33 C0 xor ax,ax
546 03C1 2E: A2 0560r mov byte ptr cs:is_haveto_work,al;сброс флага необходимости +
547 обработки
548 03C5 FB sti
549
550 03C6 rest:
551 rest_state +
552 ;восстановление после загрузки
1 553 03C6 FA cli
1 554 03C7 33 C0 xor ax,ax
1 555 03C9 2E: A2 055Fr mov byte ptr cs:is_app_working,al;указывает, что приложение +
556 большене работает
1 557 03CD 2E: A1 0567r mov ax, word ptr cs:app_ss ;восстанавливает стек прерванной +
558 программы
1 559 03D1 8E D0 mov ss,ax
1 560 03D3 2E: A1 0569r mov ax, word ptr cs:app_sp
1 561 03D7 8B E0 mov sp,ax
1 562 03D9 FB sti
563 +
564 ;сбросфлага невозможности работы
565
566 03DA exit_28h_handler:
567 03DA FB sti
568 03DB 07 pop es
569 03DC 1F pop ds
570 03DD 61 popa
Turbo Assembler Version 3.1 26/12/02 04:09:58 Page 11
loader.ASM
571
572 03DE CF iret
573 03DF int28h_handler endp
574
575 ;--------------------------------------- --------