На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Перед отправкой сообщения внимательно прочтите правила раздела!!!
1. Запрещается обсуждать написание вирусов, троянов и других вредоносных программ!
2. Помните, что у нас есть FAQ раздела Assembler и Полезные ссылки. Посмотрите, возможно, там уже имеется решение вашего вопроса.

3. Настоятельно рекомендуем обратить особое внимание на правила форума, которые нарушаются чаще всего:
  3.1. Заголовок темы должен кратко отражать её суть. Темы с заголовками типа "Срочно помогите!" или "Ассемблер" будут отправляться в Корзину для мусора.
  3.2. Исходники программ обязательно выделяйте тегами [code]...[/code] (одиночные инструкции можно не выделять).
  3.3. Нежелательно поднимать старые темы (не обновлявшиеся более года) без веской на то причины.

Не забывайте также про главные Правила форума!

Добро пожаловать и приятного вам общения!!! ;)
 
Модераторы: Jin X, Qraizer
  
> Нужна помощь!!!
    Всем привет.
    Я сам в асемблере соображаю мало, но на работе приходится делать следующее:
    Есть исходник на ассемблере и bat файл для компиляции.
    Раз в день в исходнике меняются несколько строк (текстовые переменные),прога компилится и рассылается, абонентам.
    Работает прога под Win 32. Проблема в том, что надо в определенное место (я уже нашел куда)вставить задержку по времени (40 сек).
    То есть прога просто подождала 40 сек. и потом продолжила с этого места.
    Все регистры на этот момент свободны.
    Компилируется под TASM 5.0
    Буду благодарен за любые помощь, особенно просто за кусок кода который можно вставить.
      mov esi,esp
      push 9c40h
      call dword ptr [__imp__Sleep@4];Для Masm
      ;or
      сall dword ptr [Sleep:near];Для Tasm
      Если так не будет работать
      пропиши в заголовок
      extrn Sleep:near
      //////.....;;;;;

      mov esi,esp
      push 9c40h
      Call Sleep
        Ок! Спасибо огромное второй способ работает.
        Как я понял Sleep это некая API функция?
          что значит некая :)) это пауза в 1/1000 секунды, а 9C40H ето 40000 миллисекунд, или 40 секунд..
          если нужны более мелкие задержки, используй программные циклы.
          кстати! никто не знает, как определить частоту процессора в MHz под DOS??
            2Organic: Если надо - кину примерчик на мыло.
            (определение MHz)
              Тока не ругайтесь...
              На Паскале (определение частоты). Работает от 1/18.2 до 2/18.2 секунды...
              {$G+}
              Uses Dos;
              Var
              TSC: Boolean;
              Speed: Longint;
              SaveInt8: Pointer;
              Stage: Byte;
              Procedure SpeedCounter; far; assembler;
              Asm
              push ax
              push ds
              mov ax,seg @Data
              mov ds,ax
              inc Stage
              mov al,20h
              out 20h,al
              pop ds
              pop ax
              iret
              End;
              Begin
              Asm
              db 66h; xor ax,ax
              inc ax
              db 0Fh,0A2h
              and dl,10h
              mov TSC,dl
              End;
              If not TSC then
              Begin
              WriteLn('Your processor have no TSC.');
              WriteLn('Do you wanna try anyway (Y/N) ?');
              Asm
              mov ah,0
              int 16h
              or al,20h
              mov TSC,0
              cmp al,'y'
              jne @No
              inc TSC
              @No:
              End;
              If not TSC then Halt;
              WriteLn
              End;
              Asm
              mov ah,0Dh
              int 21h
              mov ax,1681h
              int 2Fh
              in al,0A1h
              mov ah,al
              in al,21h
              push ax
              mov al,0FEh
              out 21h,al
              inc ax
              out 0A1h,al
              End;
              GetIntVec(8, SaveInt8);
              SetIntVec(8, @SpeedCounter);
              Asm
              @1:cmp Stage,1
              jne @1
              db 0Fh,31h
              db 66h; xchg bx,ax
              @2:cmp Stage,2
              jne @2
              db 0Fh,31h
              db 66h; sub ax,bx
              db 66h; mov word ptr Speed,ax
              pop ax
              out 21h,al
              mov al,ah
              out 0A1h,al
              End;
              SetIntVec(8, SaveInt8);
              Asm
              mov ax,1682h
              int 2Fh
              End;
              WriteLn('CPU Clock : ', Speed*(1193181/65536): 0: 0, ' Hz')
              End.
              0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
              0 пользователей:


              Рейтинг@Mail.ru
              [ Script execution time: 0,0278 ]   [ 15 queries used ]   [ Generated: 2.05.24, 18:31 GMT ]