| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Asm: Общие вопросы > int 19h |
| Автор: cornhulio 27.9.2002, 17:09 |
| Я ламак полный подкиньте плиз исходник того как перезагрузить комп....а то внизу чел написал чё-то я и непонял |
| Автор: Chingachguk 27.9.2002, 20:31 |
| А что ты хочешь от него ? Вызываешь его - и все. Применяется в коде типа mbr/boot, когда надо перезагрузить систему. Например, если код в Mbr не смог прочесть boot-сектор, то он может вызвать весь процесс загрузки по новой, но без переинициализации таблицы векторов прерываний. int 19h - Это вызов BIOS. Откуда ты хочешь вызвать перезагрузку и зачем ? Если ты напишешь подробнее, то ответ, возможно, будет более содержательным... |
| Автор: cornhulio 27.9.2002, 23:22 |
| Автор: Chingachguk 27.9.2002, 23:33 |
| Из экзешника где ? В дос ? Под виндами ? Под NT точно не будет работать... |
| Автор: cornhulio 28.9.2002, 00:11 |
| давай сначала под дос.....ненавижу винды =) пингвин рулит =) |
| Автор: Chingachguk 28.9.2002, 17:58 |
| Ну, графический дос-98 ничего... Значит, так: int 19h у меня не работает - программа виснет (в DOS). Видимо, это происходит из-за: "INT 19 - SYSTEM - BOOTSTRAP LOADER Desc: This interrupt reboots the system without clearing memory or restoring interrupt vectors. Because interrupt vectors are preserved, this interrupt usually causes a system hang if any TSRs have hooked vectors from 00h through 1Ch, particularly INT 08..." - т.е. он не переинициализирует таблицу векторов прерываний. А вот как (в досе) можно безусловно перезагрузить комп: .286 text segment byte public assume cs:text,ds:text org 100h begin: mov dx,offset Start call @@Message ; Restart processor mov al,0FEh out 64h,al @@Stop: jmp @@Stop ; Или hlt - ждать до прерывания @@Exit: mov dx,offset Finish call @@Message retn @@Message: mov ah,09h int 21h retn Start db 'Start !',13,10,'$' Finish db 'Finish !',13,10,'$' Text Ends end begin При желании ты можешь сделать так, что после сброса процессора управление перейдет на ту точку в памяти, которое ты укажешь. |
| Автор: Гость_Андрей 11.5.2004, 14:23 |
| Ой, люди, люди....такая интересная тема. Вообщем так...проблема такая мне надо заменить послебовательность alt+ctrl+del на alt+ctrl+RShift+del в досе плюс прога должна бвть резедентной на базе мультиплексного прерывания...плиз помогите очень надо. |
| Автор: Akina 11.5.2004, 15:02 |
| Чтобы перегрузить комп в ДОСе - достаточно просто вот такого: jmp far ptr 0FFFFh:0 Чтобы изменить под ДОСом последовательность alt+ctrl+del на alt+ctrl+RShift+del - надо сделать свой клавиатурный обработчик int 9. Резидентный есссно... а уж мультиплексное прерывание (2Fh) тут вообще не при чем... |
| Автор: Jin X 15.5.2004, 22:39 | ||||||||
| Перезагрузка Под DOS:
Под DOS/Win9X,ME:
Под WinNT/2K/XP: никак p.s.int 19h хоть и настроен в современных компах на jmp far F000:FFF0, но лучше его не использовать! p.p.s. Перед перезагрузкой советую сделать сброс дисковых буферов (т.е. незаписанный software-кэш дозаписывается на диск):
|