Форум: "Прочее";
Текущий архив: 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