Listing (КП - резидентный загрузчик), страница 5
Описание файла
Файл "Listing" внутри архива находится в следующих папках: КП - резидентный загрузчик, Резидентный загрузчик. Текстовый-файл из архива "КП - резидентный загрузчик", который расположен в категории "". Всё это находится в предмете "системное программирование" из 5 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "курсовые/домашние работы", в предмете "системное программирование" в общих файлах.
Просмотр 5 страницы текстового-файла онлайн
763 0A12 8C 060565r mov word ptr [in_dos_addr+2],es
764
765 0A16 B4 FF mov ah,-1 ;поиск"защелки" +
766 начинаем с 0FFh
767
768 0A18 more_mux:
769 0A18 B0 00 mov al,00h
770 0A1A CD 2D int 2Dh
771 0A1C 3C 00 cmp al,00h ;проверяеn, есть ли+
772 кто наэтой "защелке"
773 0A1E 75 0890 90 jne not_free
774 0A22 88 2603F4r mov byte ptr mux_id,ah ;записываеn себt её номер, +
775 если она не занята
776 0A26 EB 0C jmp short next_mux ;ищеn новую
777
778 0A28 not_free:
779 0A28 8E C2 mov es,dx
780 0A2A BE 04DDr mov si,offset amis_sign
781 0A2D B9 0010 mov cx,16
782 0A30 F3> A6 repe cmpsb ;проверяеn первые 16 байт +
783 AMIS-сигнатуры, а вдруг это уже загруженный
784 ;ранеев +
785 памятьрезидент
786 0A32 E3 6A jcxz loaded ;если cx = 0, то есть это +
787 так и есть
788 ;не надо +
789 грузиться еще один раз
790
791 0A34 next_mux:
792 0A34 FE CC dec ah ;переход к +
793 "защелке" с меньшим номером
794 0A36 75 E0 jnz more_mux ;повторяет поиск до+
795 0
796
797 0A38 free_mux_found:
798 0A38 80 3E03F4r 00 cmp byte ptr mux_id,0 ;что-либо в номер "защелки"+
Turbo Assembler Version 3.1 26/12/02 04:09:58 Page 15
loader.ASM
799 записано?
800 0A3D 74 6D90 90 je no_more_mux ;если нет, то +
801 свободных "защелок" нет
802
803 0A41 B8 352D mov ax,352Dh ;получает адрес тукущего +
804 обработчика перывания 2Dh
805 0A44 CD 21 int 21h
806 0A46 89 1E03E1r mov word ptr [old_int2Dh],bx;записывает его в своюпеременную
807 0A4A 8C 0603E3r mov word ptr [old_int2Dh+2],es
808 0A4E B8 3528 mov ax,3528h
809 0A51 CD 21 int 21h
810 0A53 89 1E0271r mov word ptr [old_int28h],bx
811 0A57 8C 060273r mov word ptr [old_int28h+2],es
812 0A5B B8 3509 mov ax,3509h
813 0A5E CD 21 int 21h
814 0A60 89 1E0148r mov word ptr [old_int09h],bx
815 0A64 8C 06014Ar mov word ptr [old_int09h+2],es
816
817 0A68 B8 252D mov ax,252Dh ;устанавливаетновый обработчик +
818 прерывания 2Dh
819 0A6B BA 03DFr lea dx,int2Dh_handler
820 0A6E CD 21 int 21h
821 0A70 B8 2528 mov ax,2528h
822 0A73 BA 026Fr lea dx,int28h_handler
823 0A76 CD 21 int 21h
824 0A78 B8 2509 mov ax,2509h
825 0A7B BA 0146r lea dx,int09h_handler
826 0A7E CD 21 int 21h
827
828
829 0A80 B4 49 mov ah,49h
830 0A82 8E 06002Cr mov es,word ptr env_seg
831 0A86 CD 21 int 21h +
832 ;освобождает MCB, содержащий среду DOSдля данной программы
833
834 0A88 BA 0B5Dr lea dx,msg_ins
835 0A8B B9 002B mov cx,offset msg_ins_len
836 0A8E E8 F6AC call pmsg ;пишет, что мы +
837 инсталлировалась
838
839 0A91 B8 3100 mov ax,3100h
840 0A94 BA 09EBr mov dx,offset tsr_end
841 0A97 B1 04 mov cl,4
842 0A99 D3 EA shr dx,cl
843 0A9B 42 inc dx
844 0A9C CD 21 int 21h
845
846 0A9E loaded:
847 0A9E B9 001F mov cx,offset msg_lod_len
848 0AA1 BA 0B22r lea dx,msg_lod
849 0AA4 E8 F696 call pmsg ;пишет, что программа уже +
850 загружена в память
851
852 0AA7 B8 4C01 mov ax,4C01h ;нормально +
853 завершается без установки новой копии
854 0AAA CD 21 int 21h
855
Turbo Assembler Version 3.1 26/12/02 04:09:58 Page 16
loader.ASM
856 0AAC no_more_mux:
857 0AAC B9 001C mov cx,offset msg_mux_len
858 0AAF BA 0B41r lea dx,msg_mux
859 0AB2 E8 F688 call pmsg ;пишет, что в памяти +
860 слишком много резидентов
861
862 0AB5 B8 4C01 mov ax,4C01h ;нормально +
863 завершается без установки новой копии
864 0AB8 CD 21 int 21h
865
866
867 0ABA 45 7865 20 6C 6F 61+ msg_abt db 'Exe loader', cr,lf
868 64 6572 0D 0A
869 0AC6 4C 6F61 64 73 20 32+ db 'Loads2 predefined executeable files', cr,+
870 20 7072 65 64 65 66+ lf
871 69 6E65 64 20 65 78+
872 65 6375 74 65 61 62+
873 6C 6520 66 69 6C 65+
874 73 0D0A
875 0AEC 54 6869 73 20 70 72+ db 'This program have been written by Tim +
876 6F 6772 61 6D 20 68+ from IU5-51', cr, lf
877 61 7665 20 62 65 65+
878 6E 2077 72 69 74 74+
879 65 6E20 62 79 20 41+
880 6E 6472 65 79 20 66+
881 72 6F6D 20 49 55 35+
882 2D 3532 0D 0A
883 =0068 msg_abt_len equ $ - msg_abt
884
885 0B22 45 7272 6F 72 3A 20+ msg_lod db 'Error: program already loaded', cr, lf
886 70 726F 67 72 61 6D+
887 20 616C 72 65 61 64+
888 79 206C 6F 61 64 65+
889 64 0D0A
890 =001F msg_lod_len equ $ - msg_lod
891
892 0B41 45 7272 6F 72 3A 20+ msg_mux db 'Error: too many tsr loaded', cr, lf
893 74 6F6F 20 6D 61 6E+
894 79 2074 73 72 20 6C+
895 6F 6164 65 64 0D 0A
896 =001C msg_mux_len equ $ - msg_mux
897
898 0B5D 50 726F 67 72 61 6D+ msg_ins db 'Program was sucsessfully loaded in memory', cr, lf
899 20 7761 73 20 73 75+
900 63 7365 73 73 66 75+
901 6C 6C79 20 6C 6F 61+
902 64 6564 20 69 6E 20+
903 6D 656D 6F 72 79 0D+
904 0A
905 =002B msg_ins_len equ $ - msg_ins
906
907 0B88 initialize endp ;конецинициализационной +
908 части
909
910 end start
Turbo Assembler Version 3.1 26/12/02 04:09:58 Page 17
Symbol Table
Symbol Name Type Value
??DATE Text "26/12/02"
??FILENAME Text "loader "
??TIME Text "04:09:58"
??VERSION Number 030A
@32BIT Text 0
@CODE Text DGROUP
@CODESIZE Text 0
@CPU Text 0F0FH
@CURSEG Text _TEXT
@DATA Text DGROUP
@DATASIZE Text 0
@FILENAME Text LOADER
@INTERFACE Text 00H
@MODEL Text 1
@STACK Text DGROUP
@WORDSIZE Text 2
ACTUAL_INT09H_HANDLER Near DGROUP:0158
ACTUAL_INT28H_HANDLER Near DGROUP:0282
ACTUAL_INT2DH_HANDLER Near DGROUP:03F2
AFTER_LOAD Near DGROUP:03BE
AMIS_HOOKLIST Byte DGROUP:04ED
AMIS_SIGN Byte DGROUP:04DD
APP_SP Word DGROUP:0569
APP_SS Word DGROUP:0567
CMD Byte DGROUP:0509
CMD_LINE Byte DGROUP:0081
CMD_LINE_LEN Byte DGROUP:0080
CR Number 000D
DROP_CLI Near DGROUP:01F7
ENV_SEG Word DGROUP:002C
EPB Word DGROUP:04F3
ERROR_IO Near DGROUP:0103
EXE1PROG Byte DGROUP:052B
EXE2PROG Byte DGROUP:0534
EXIT_09H_HANDLER Near DGROUP:026B
EXIT_28H_HANDLER Near DGROUP:03DA
FCB1 Byte DGROUP:050B
FCB2 Byte DGROUP:051B
FREE_MUX_FOUND Near DGROUP:0A38
HANDLE Word DGROUP:053D
HEADER Byte DGROUP:053F
HW_RESET Near DGROUP:0145
INITIALIZE Near DGROUP:09EB
INT09H_HANDLER Far DGROUP:0146
INT28H_HANDLER Far DGROUP:026F
INT2DH_00 Near DGROUP:0412
INT2DH_HANDLER Far DGROUP:03DF
INT2DH_NO Near DGROUP:0421
IN_DOS_ADDR Dword DGROUP:0563
IO_2 Near DGROUP:011B