DOS. Перезагрузка. =)

Низкоуровневое программирование портов, микроконтроллеров и т.д.

Модератор: Andy

Andy
Сообщения: 238
Зарегистрирован: 17 фев 2004, 08:15
Откуда: Минск

Можно таким образом:

Код: Выделить всё

	push	0ffffh
	push	0000h
	retf
В этом случае мы вызываем внутреннюю процедуру перезагрузки (насколько помню не "горячая", а вроде reset'a (но проверить сейчас не на чем))

P.S. - Только сегодня проверил - именно ресет. Плюс еще один симпатичный короткий способ (использует вместо retf - jmp 0ffffh:0000h)

Код: Выделить всё

db 0eah,00h,00h,0ffh,0ffh
droopy
Сообщения: 10
Зарегистрирован: 19 сен 2004, 03:55
Контактная информация:

Еще способы:
- самый короткий - int 19h
- jmp dword ptr ds:[467h], если ds=0
- перейти в защищённый режим, не устанавливая IDT, и вызвать неправильную команду
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Самый правильный из них - это первый. А вот последний метод просто "кирпичный" :)
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Andy
Сообщения: 238
Зарегистрирован: 17 фев 2004, 08:15
Откуда: Минск

Самый правильный из них - это первый
Самый правильный - это мой :) А вот первый из них, к сожалению, не правильный. int 19h это загрузка, а не перезагрузка (тем более спрашивалось про ресет). Проверьте сами господа - DOS как бы перезагрузится, но вот комп - нет. Тестов БИОСа вы не увидите.
jmp dword ptr ds:[467h], если ds=0
Работает! :)
*provided AS IS
Lex
Сообщения: 4
Зарегистрирован: 29 май 2005, 23:07

Введи команду HLT(остановка процессора) и все!!! Перезагрузится как миленький!!! Я уже пробовал, а вот код:

Lex segment
org 100h
Begin:
HLT
Lex ends
End Begin
Defder
Сообщения: 64
Зарегистрирован: 24 май 2005, 12:25

А есть возможность выключить компьютер?
И ещё: заблокировать Reset или PowerOff?

под чистым DOS, естественно
Andy
Сообщения: 238
Зарегистрирован: 17 фев 2004, 08:15
Откуда: Минск

И ещё: заблокировать Reset или PowerOff?
1. Выдрать кнопку
2. Заклеить ее скотчем или изолентой
3. Отключить провода на материнской плате

:)
*provided AS IS
Defder
Сообщения: 64
Зарегистрирован: 24 май 2005, 12:25

Вопрос вполне серьёзный. Естественно, имеются в виду ACPI-системы.
Аватара пользователя
Oscar
Сообщения: 963
Зарегистрирован: 29 май 2004, 13:44
Откуда: Мюнхен (рожден в Киеве)
Контактная информация:

ЭхЪ, я бы многое отдал, чтобы посмотреть на код программы на Асме, да хоть под чистым досом, которая бы заблокировала мне возможность выдергнуть штэкер питания из резетки )))

Сорри за оффтопик ))
Ответить