определение размера программы

Тема в разделе "WASM.WIN32", создана пользователем badbyy, 18 дек 2007.

  1. badbyy

    badbyy New Member

    Публикаций:
    0
    Регистрация:
    18 дек 2007
    Сообщения:
    2
    Всем привет!
    у меня есть программа по выводу текущего времени на экран. * COM file
    Писала не я, поэтому я вообще дуб в Ассемблере...мне необходимо чтоб помимо времени выходила еще строка...Размер проги -...
    Файл КОМ...((( не знаю как ...и что


    .model tiny ; Тип модели памяти - "крошечная"
    .code ; Сегмент кода. Хотя в com-файле всего то один сегмент
    .386 ; Использовать инструкции 386 процессора (для команды shld)
    org 100h ; Директива для com программы (если быть точнее,
    ; то это выделение 256 байт под PSP)
    Begin: ; Метка начала программы

    mov ah, 02h ; 02h - ф-ция получения времени
    int 1Ah ; Получим системное время

    mov ah, ch ; в ch у нас часы. Поместим в рег. ah для вывода
    call print_ah ; Выводим показания часов

    mov al, ':' ; Выведем разделитель ":"
    int 29h ; с помощью ф-ции ДОСа

    ; Далее аналогично для минут и секунд.
    mov ah, 02h
    int 1Ah
    mov ah, cl
    call print_ah ; Выводим показания минут

    mov al, ':'
    int 29h

    mov ah, 02h
    int 1Ah
    mov ah, dh
    call print_ah ; Выводим показания секунд

    mov ax, 0
    int 16h ; Ожидаем нажатия любой клавиши

    int 20h ; Выход в ДОС

    ; Процедура по выводу значения регистра на экран (старшой части регистра ax)
    print_ah proc ; Процедура вывода на экран содержимого регистра ah в hex-форме
    xchg dx, ax ; DX = AX
    mov cx, 2 ; Число цифр для вывода (Если поставить 4 - выведет содержимое всего регистра)
    shift_ax:
    shld ax, dx, 4 ; Получить в AL очередную цифру
    rol dx, 4 ; Удалить ее из DX
    and al, 0Fh ; Оставить в AL только эту цифру
    cmp al, 0Ah ; Три команды, переводящие
    sbb al, 69h ; Шестнадцатеричную цифру в AL
    das ; В соответствующий ASCII-код
    int 29h ; Вывод на экран
    loop shift_ax ; Повторить для всех цифр
    ret ; Выход из процедуры и возврат в основной код
    print_ah endp
    end Begin ; Типа конец :)
     
  2. Mikl_

    Mikl_ New Member

    Публикаций:
    0
    Регистрация:
    14 ноя 2006
    Сообщения:
    907
    badbyy
    Насколько я помню, при старте com-программы в cx содержится размер программы. Сохраняй его в переменную, переводи в ASCII символы и выводи на экран, проблем-то:)
     
  3. badbyy

    badbyy New Member

    Публикаций:
    0
    Регистрация:
    18 дек 2007
    Сообщения:
    2
    если вообще ничего в ассемблере не шаришь...проблем много
     
  4. Mikl_

    Mikl_ New Member

    Публикаций:
    0
    Регистрация:
    14 ноя 2006
    Сообщения:
    907
    badbyy
    то есть ты хотел, что бы за тебя кто-то писал программу? Тогда говори об этом прямо. Для тех, кто "вообще ничего в ассемблере не шаришь", но хотят научится есть раздел WASM.BEGINNERS, для тех кто учится не хочет/не может есть, соответственно, раздел WASM.COMMERCE