Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2006.03.12;
Скачать: [xml.tar.bz2];

Вниз

Как "замереть" по таймеру...   Найти похожие ветки 

 
ArtemESC ©   (2006-02-19 21:39) [0]

Доброго времени суток...
Как сделать чтобы выполняемая программа замерла на
    несколько мс. с использованием ассемблера, без
         использования прерываний и  функций какой-либо
    ОС?


 
Anatoly Podgoretsky ©   (2006-02-19 21:44) [1]

А зачем ассемблер то? Что бы помучаться?


 
Ученик чародея ©   (2006-02-19 21:54) [2]

обработчик на прерывание, например 08h (вызывается 18.2 раза в сек) и проверяешь.

Вот программа для перевода в VGA режиме в DOS из цветного в чернобелый. По причине визуальности и простоты вошла в научное пособие на кафедре, где я учился.

write macro row
mov ah,09h
mov dx,offset row
int 21h
endm

vec segment At 0h ;Идем на
 Org 8h*4        ;8-й вектор
 adr Label Dword ;адресс
vec Ends

code Segment Para
  Assume CS:code
  Org 100h

Start:   Jmp Init  ;инициализация
save dd ?    ;главное запомнить

b&w Proc far

   Push AX BX CX DX SI DI DS ES;и другим
   pushf
   Pushf                       ;дай
   call save                   ;поработать

   mov ah,0fh   ; тестеруем
   int 10h      ; включенный режим
   mov ah,cs:[oldres]; сравниваем со старым
   cmp al,ah    ; режимом
   mov cs:[oldres],al

   jz exit      ;если равен выход

   Mov AX,101bh;включаем черно-белый режим
   Mov BX,0000h;1-цвет регистр
   Mov CX,00ffh;последний
   Int 10h     ;поехали
exit:
   popf
   Pop ES DS DI SI DX CX BX AX;назад

   Iret
oldres db (0f5h)
b&w Endp

init Proc Near  ;инициализация
 write row1
 write row2
 write row3

 Assume DS:vec
 Push DS
 Mov AX,vec
 Mov DS,AX
 
 Cli

 Mov AX,Word Ptr adr
 Mov Word Ptr save,AX
 Mov AX,Word Ptr adr+2
 Mov Word Ptr save+2,AX;сохранили старое значение

 Mov Word Ptr adr,Offset b&w
 Mov Word Ptr adr+2,CS      ;установили новый адрес

 Sti
 Mov DX,Offset init
 Int 27h
row1 db "Эта программа написана организацией SB.-PRO.",0ah,0dh,"$"
row2 db "Копия шаровая,предназначена для общего пользования",0ah,0dh,"$"
row3 db "         устанавливает монохромный режим",0ah,0dh,"$"

init Endp

code Ends
End Start


PS
Сам писал, ногами не пинать.


 
kaZaNoVa ©   (2006-02-19 22:02) [3]

Sleep(10) спесёт прогера и асм не нужен:)


 
БарЛог ©   (2006-02-19 22:04) [4]

А "замерла" - это значит "вообще ничего не делала" ?
А то можно зациклить до определенного момента (в цикле проверка по времени).


 
isasa ©   (2006-02-19 22:10) [5]

Ученик чародея ©   (19.02.06 21:54) [2]
обработчик на прерывание, например 08h (вызывается 18.2 раза в сек) и проверяешь.

А ели это NT (4, 5, 5.1)?


 
Джо ©   (2006-02-19 22:12) [6]

> [5] isasa ©   (19.02.06 22:10)
> А ели это NT (4, 5, 5.1)?

Да нет, тут человек, кажется, загрузочный сектор пишет.


 
Anatoly Podgoretsky ©   (2006-02-19 22:20) [7]

Джо ©   (19.02.06 22:12) [6]
Рано ему


 
ArtemESC ©   (2006-02-19 23:47) [8]

БарЛог ©   (19.02.06 22:04) [4]
Точно...До определенного момента...


 
ArtemESC ©   (2006-02-20 00:01) [9]

>>Anatoly Podgoretsky ©   (19.02.06 22:20) [7]
 А откуда вы знаете кому-что рано или позно???


 
Defunct ©   (2006-02-20 04:30) [10]

> ArtemESC

.386

  xor  ax, ax
  mov es, ax
  mov eax, es:[413h]
  add  eax, 2           ; <-- время в 1/18 сек.
wait:
  cmp eax, es:[413h]
  jb    wait  


 
Defunct ©   (2006-02-20 04:37) [11]

Ученик чародея ©   (19.02.06 21:54) [2]

Вов, у тебя еще эта программка сохранилась! ;>
ты ж ее еще в школе писал,
монтирование по классике жанра из П.Абеля.. :)


 
Defunct ©   (2006-02-20 04:46) [12]

Anatoly Podgoretsky ©   (19.02.06 22:20) [7]

Не рано, как раз тот возраст (даже позновато), чтобы прочуствовать железо, написать вирус и успокоиться.


 
Думкин ©   (2006-02-20 08:37) [13]

> без использования прерываний и


> Ученик чародея ©   (19.02.06 21:54) [2]
> обработчик на прерывание, например 08h


%) Вот так и пишут. Вначале напишут, потом не дочитают, а потом ветка в 500 постов.


 
Ученик чародея ©   (2006-02-20 09:46) [14]

>>Думкин ©   (20.02.06 08:37) [13]
>>> без использования прерываний и

Как я понял, ему без прерываний DOS, а прерывания BIOS вполне подходят.


 
Ученик чародея ©   (2006-02-20 10:02) [15]

>>Defunct ©   (20.02.06 04:30) [10]

Это называется тормознем крутейший Athlon64 3800+. В FoxPro 2.6 так все реализовано.

Применять этот код можно только единично, но не для постоянной работы.


 
Defunct ©   (2006-02-20 15:07) [16]

Ученик чародея ©   (20.02.06 10:02) [15]

Это называется простой код, без использования прерываний, который обеспечит задержку.

Применять можно там где требуется задержка.


 
kaZaNoVa ©   (2006-02-20 15:13) [17]

премнять для задежки надо Sleep() - нет загрузки системы


 
Defunct ©   (2006-02-20 15:50) [18]

kaZaNoVa ©   (20.02.06 15:13) [17]

может подскажете, как Sleep сделать без ОС?


 
Jeer ©   (2006-02-20 15:54) [19]

Defunct ©   (20.02.06 15:50) [18]


> может подскажете, как Sleep сделать без ОС?


Вовремя лечь спать и не постить сюда муру.


 
kaZaNoVa ©   (2006-02-20 15:54) [20]

Defunct ©   (20.02.06 15:50) [18]
а без ОС и нормальную EXE-прогу не запустить .. :( тут к сожалению не подскажу:(


 
Defunct ©   (2006-02-20 17:24) [21]

Jeer ©   (20.02.06 15:54) [19]

Это вы мне ? если мне тогда перечитайте сабж.


kaZaNoVa ©   (20.02.06 15:54) [20]

вам бы тоже сабж перечитать не помешало..


 
Jeer ©   (2006-02-20 17:33) [22]

Defunct ©   (20.02.06 17:24) [21]

Нет, конечно:))
Ответ для kaZaNoVa ©   (20.02.06 15:13) [17] с учетом Defunct ©   (20.02.06 15:50) [18]



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2006.03.12;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.013 c
2-1140266785
KILROY
2006-02-18 15:46
2006.03.12
инфа о файле,скан директории,ADO.


15-1140233045
Ученик чародея
2006-02-18 06:24
2006.03.12
Почему человек верит в существующее в своем воображении?


2-1140456167
МегаПупс
2006-02-20 20:22
2006.03.12
Видео плеер


15-1140366549
Fenik]
2006-02-19 19:29
2006.03.12
Ищу варган


1-1139373604
Disciple2005
2006-02-08 07:40
2006.03.12
Delphi &amp; Word





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский