Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как выключить компьютер, как перезагрузить я знаю,а вот выключить 
V
    Опции темы
Torrero
Дата 8.11.2008, 20:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 14.11.2006

Репутация: нет
Всего: нет



Покажите плиз как (и желательно с объяснениями)  можно выключить комп...
Нашёл такое:
               
Код

                db 0xb8,0x00,0x80,0x8e,0xd0,
        db 0xbc,0x00,0xf0,0xb8,0x01,
        db 0x53,0x31,0xdb,0xcd,0x15,
        db 0xb8,0x08,0x53,0xbb,0x01,
        db 0x00,0xb9,0x01,0x00,0xcd,
        db 0x15,0xb8,0x0d,0x53,0xbb,
        db 0x01,0x00,0xb9,0x01,0x00,
        db 0xcd,0x15,0xb8,0x0e,0x53,
        db 0x31,0xdb,0xb9,0x02,0x01,
        db 0xcd,0x15,0xb8,0x07,0x53,
        db 0xbb,0x01,0x00,0xb9,0x03,
        db 0x00,0xcd,0x15,0xf4,0xeb,
        db 0xfd

но в ТАСМе(который нам выдали в универе,не знаю какая версия) не компилится!

знаю что перезагрузка делается так: jmp 0FFFFh:0000h, но она тоже выдавала ошибку,пока не нашёл альтернативу:DB 0EAh, 0, 0, 0FFh, 0FFh... и всё пошло как по маслу...Код свыше вроде как работает,может есть какой нибудь альтернативный вариант как и для перезагрузки?

З.Ы. Знаю что есть старая  тема но на вопрос там так никто и не ответил!


Это сообщение отредактировал(а) Torrero - 8.11.2008, 20:28
PM MAIL   Вверх
dumb
Дата 9.11.2008, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 4
Всего: 158



Цитата(Torrero @  8.11.2008,  21:26 Найти цитируемый пост)
Нашёл такое:
это по сути дамп кода для C-шного "встроенного" асма.

тот же код в нормальном виде(комментариев еще навпихал):
Код

; сборка:
; tasm poweroff.asm
; tlink /t poweroff
  model tiny
  .code
  org 100h
start:
      mov   ax,5301h  ; CONNECT REAL-MODE INTERFACE
      xor   bx,bx     ; dev id
      int   15h
      mov   ax,5308h  ; ENABLE/DISABLE POWER MANAGEMENT
      mov   bx,1      ; dev id
      mov   cx,1      ; 1 - enable
      int   15h
      mov   ax,530Dh  ; EN/DISABLE DEVICE POWER MANAGEMENT
      mov   bx,1      ; dev id
      mov   cx,1      ; 1 - enable
      int   15h
      mov   ax,530Eh  ; DRIVER VERSION
      xor   bx,bx     ; dev id
      mov   cx,0102h  ; version (bcd)
      int   15h
      mov   ax,5307h  ; SET POWER STATE
      mov   bx,1      ; dev id
      mov   cx,3      ; 3 - off
      int   15h
halt: hlt
      jmp   halt
  end start

PM MAIL   Вверх
Mikl_
Дата 11.11.2008, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 9.11.2007

Репутация: 6
Всего: 14



Torrero, Для выключения компьютера под WinXP нужна привилегия SE_SHUTDOWN_NAME. Почитайте про привилегии и их получение в MSDN. В этом примере есть код получения привилегий и выключения компа http://goodnight.narod.ru/GoodNight_Source.zip
Цитата(mix_mix )
Есть 3 пути:
1) kernel32!ShutdownSystemEx
       Скорость: ~30 сек - 2 мин
       Плюсы: все приложения корректно завершаются системой.
       Минусы: система выключается офигенно долго.
2) ntdll!NtShutdownSystem
       Скорость: ~1-3 сек
       Плюсы: все ring0 приложения (драйвера и ядро ОС) корректно выгружаются, юзер обсирается от испуга.
       Минусы: все ring3 приложения летят в голубую даль
3) выход в ring0, биосовские прерывания
       Скорость: ~0.01-0.1 сек
       Плюсы: юзер умирает от обширного инфаркта.
       Минусы: так недолго и систему убить, написание кода под ring0 (тем более без драйвера) - дело, скажем, не из легких.

взято на www.wasm.ru/forum
PM MAIL   Вверх
Torrero
Дата 13.11.2008, 18:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 14.11.2006

Репутация: нет
Всего: нет



Спасибо всем большое!!!
PM MAIL   Вверх
Dreamuchiy
Дата 6.12.2008, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 145
Регистрация: 26.12.2006

Репутация: нет
Всего: -1



А без винды не обойтись? Чего на ней белый свет клином сошелся? Один фиг все идет на аппаратном уровне. Напишите плиз кто нибуть о выключении на аппаратном уровне
--------------------
Мечтаю написать в карман Биллу Гейтсу... Или как минимум посмотреть крах Майкрософт...
PM MAIL   Вверх
Mikl_
Дата 8.12.2008, 04:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 9.11.2007

Репутация: 6
Всего: 14



Dreamuchiy, если я работаю в среде WinXP -- вопрос -- "Почему я должен писать программы под DOS?" smile 
PM MAIL   Вверх
VSergeyV
Дата 3.2.2009, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 299
Регистрация: 9.5.2006
Где: Новосибирск

Репутация: нет
Всего: 3



Mikl_, DOS - это аппаратный уровень? smile И уж тем более WinXP ненадстройка над DOS
PM MAIL ICQ   Вверх
Mikl_
Дата 4.2.2009, 06:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 9.11.2007

Репутация: 6
Всего: 14



VSergeyV, DOS - это неаппаратный уровень smile а устаревшая ОС которую вас заставляют изучать из-за консерватизма преподавателей и где это я сказал, что "WinXP надстройка над DOS? " или фразу если я работаю в среде WinXP -- вопрос -- "Почему я должен писать программы под DOS?" можно как-то по другому трактовать? smile 

Это сообщение отредактировал(а) Mikl_ - 4.2.2009, 11:44
PM MAIL   Вверх
ironworker
Дата 27.5.2009, 14:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 27.5.2009

Репутация: нет
Всего: нет




Модератор: Сообщение скрыто.

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm: Общие вопросы"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0999 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.