Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.06.2010, 15:27   #1
9ino4ka
Новичок
Джуниор
 
Регистрация: 17.05.2010
Сообщений: 2
По умолчанию Написать сообщение (Ассемблер )Написать комментарии и определить что выполняет TSR программа

Есть код TSR-программы, рабочая. Но в ней комменты абракадабра. Нужно разобраться в коде и написать к нему комменты, определить как конкретно она работает, что выполняет. Т.е. сформулировать условия задания для этой программы. Срок до 05.06.

http://narod.ru/disk/21435961000/REZPROG.ASM.html
9ino4ka вне форума Ответить с цитированием
Старый 02.06.2010, 16:11   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Деньги готова заплатить?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.06.2010, 16:38   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

9ino4ka

Прежде всего. В коде полно комментариев.
читайте файл в кодировке MS DOS (возьмите, например, редактор AkelPad или встроенный в Far Commander/Total Commander текстовый редактор )
вот, выдержки из кода:
Цитата:
Код:
;---------------------------------------------------------------------------
; Написать TSR-программу, которая выводит по нажатию горячей клавиши кол-во
; TSR-программ загруженных с момента её загрузки.
;---------------------------------------------------------------------------
code_seg segment
        ASSUME  CS:CODE_SEG,DS:code_seg,ES:code_seg
        org 100h
start:
    jmp begin
;----------------------------------------------------------------------------
TSR_count   DB  0   ; счётчик TSR-программ
mes         DB  'Количество загруженных TSR-програм: ','$'
len         =$-mes
endmes      DB  ' ',13,10,'$'
;============================================================================
; Макроопределение, позволяющее вывести строку текста средствами BIOS
wintext         macro message
        local   next_sym

        mov     CX,len          ;длина строки
        mov     BX,offset CS:message
        mov     AH,0Eh          ;функция вывода одного символа
next_sym:
        mov     AL,CS:[BX]      ;AL <- символ
        inc     BX
        int     10h
        loop    next_sym        ;цикл по строке len раз
        endm
;******************************************************************************
;Процедура вывода десятичного числа, хранящегося в двоично-десятичной форме
;
;INPUT:  CX - число в двоично-десятичной форме
;OUTPUT: нет
;******************************************************************************
out_bcd proc    near

....

out_bcd endp
;******************************************************************************
;Процедура преобразования числа из двоичной формы в двоично-десятичную
;
;INPUT:  AL - число в двоичной форме
;OUTPUT: CX - число в двоично-десятичной форме
;             от единиц в младшем полубайте CL до сотен в младшем полубайте CH   

bin_to_bcd proc near
...
bin_to_bcd endp
;================== Обработчик прерываний
new_09h proc far
...        in      AL, 60h ;Введём содержимое порта В
        or      AL, 80h ;Установим старший бит
        out     61h, AL ;и вернёмся в порт В.
        and     AL, 7Fh ;Снова разрешим работу клавиатуры,
        out     61h, AL ;сбросив старший бит порта В.
...        
        new_09h endp
;=====================Обработчик прерывания 27h
new_27h proc far
        inc     byte ptr CS:[offset TSR_count]
        jmp     CS:old_27h
;       iret
new_27h endp
;=====================Обработчик прерывания 2Fh
int_2Fh proc far
    cmp     AH,0C7h         ; Наш номер процесса?
    jne     Pass_2Fh        ; Нет, на выход
    cmp     CX,'na'
 ..
    cmp     AL,00h          ; Подфункция проверки на повторную установку?
    je      inst            ; Программа уже установлена
    cmp     AL,01h          ; Подфункция выгрузки?
    je      unins           ; Да, на выгрузку
    jmp     short Pass_2Fh  ; Неизвестная подфункция - на выход
inst:
    mov     AL,0FFh         ; признак невозможности повторной установки
    iret
Pass_2Fh:
    jmp dword PTR CS:[int_2Fh_vector] ;передача управления 
                                      ;обработчику по цепочке

 ..........

;=========== Анализ параметров командной строки ===========================
begin:
        mov CL,ES:80h       ; Длина хвоста в PSP
                            ;(длина строки параметров командной строки)
        cmp CL,0            ; Длина хвоста=0?
        je  check_install   ; Да, программа запущена без параметров,
                            ; попробуем установить
        xor CH,CH       ; CX=CL= длина хвоста(длина строки с параметром)
        cld             ; DF=0 - флаг направления вперед
        mov DI, 81h     ; ES:DI-> начало хвоста в PSP
        mov SI,offset key   ; DS:SI-> поле key
        mov AL,' '          ; Уберем пробелы из начала хвоста
repe    scasb   ; Сканируем хвост(строку параметров) пока пробелы
                ; AL - (ES:DI) -> флаги процессора
                ; повторять пока элементы равны
        dec DI          ; DI-> на первый символ после пробелов
        mov CX, 4       ; ожидаемая длина параметра
repe    cmpsb   ; Сравниваем введенный параметр с параметром выгрузки
                ; (DS:DI)-(ES:DI) -> флаги процессора
        jne check_install ; параметр отличен от /off
        inc flag_off  ; запрос на выгрузку программы
;--------- Проверим, не установлена ли уже эта программа ----------------
 ..........
во-вторых, первыми же строчками идёт описание того, что данная програма делает:
Цитата:
Написать TSR-программу, которая выводит по нажатию горячей клавиши кол-во
; TSR-программ загруженных с момента её загрузки.
p.s. выкладываю архив с программкой сюда, чтобы проще было форумчанам взять её...
Вложения
Тип файла: zip REZPROG.zip (3.8 Кб, 9 просмотров)

Последний раз редактировалось Serge_Bliznykov; 02.06.2010 в 16:40.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.06.2010, 16:57   #4
9ino4ka
Новичок
Джуниор
 
Регистрация: 17.05.2010
Сообщений: 2
По умолчанию

Serge_Bliznykov спасибо, все открылось нормально. Очень признательна.

Последний раз редактировалось 9ino4ka; 02.06.2010 в 17:03.
9ino4ka вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Написать комментарии к программе Space1 Общие вопросы C/C++ 1 03.05.2010 13:35
Определить что выполняет данная программа anna_ Помощь студентам 2 17.12.2009 22:03
Прошу написать комментарии к коду Larkin. Помощь студентам 2 17.06.2009 15:15
Написать комментарии к коду. Delphi. Дарюха Помощь студентам 1 21.11.2007 16:05