Поиск:

Ответ в темуСоздание новой темы Создание опроса
> hlt команда, что она делает? 
:(
    Опции темы
rthsobakas
Дата 9.2.2008, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 562
Регистрация: 20.9.2007

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



Читал в инете и в справочниках об этой команде и везде написано что она останавливает процессор. Зачем это нужно? приведите,пжл, пару примеров с её использованием(маленьких тока)...
PM   Вверх
PPS05
Дата 9.2.2008, 16:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 262
Регистрация: 6.11.2005
Где: Беларусь, Минск

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



Имею мысль, что можно использовать при ожидании прерывания. А вот нужно ли?... 


--------------------
Ушел с форума и не вернулся.
PM MAIL ICQ   Вверх
rthsobakas
Дата 9.2.2008, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 562
Регистрация: 20.9.2007

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



Код

Имею мысль, что можно использовать при ожидании прерывания. А вот нужно ли?... 

 мне тоже не совсем понятно зачем она нужна... Примеров не могу найти с ней, так бы может че понял
PM   Вверх
PPS05
Дата 9.2.2008, 18:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 262
Регистрация: 6.11.2005
Где: Беларусь, Минск

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



Полазил по ссылкам в Гугле. Получается, что т.к. процессор приостанавливается можно его охладить. Вывести из hlt можно прерыванию, разрешенному до hlt.


--------------------
Ушел с форума и не вернулся.
PM MAIL ICQ   Вверх
rthsobakas
Дата 9.2.2008, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 562
Регистрация: 20.9.2007

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



ну к примеру код
Код

.286
.model small
.code
    push    2h
    pop    cx
    mov    dl,0abh
 @1:    mov    ah,2
    int    21h
    rol    dl,1
    loopnz    @1
    hlt
    end

 но при выполнении exe выдает ошибку.
PM   Вверх
PPS05
Дата 10.2.2008, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 262
Регистрация: 6.11.2005
Где: Беларусь, Минск

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



Цитата(rthsobakas @  9.2.2008,  19:40 Найти цитируемый пост)
но при выполнении exe выдает ошибку.


А под какую систему запускается? В NT линейке hlt - привелигированная команда, недопустима в ring-3.


--------------------
Ушел с форума и не вернулся.
PM MAIL ICQ   Вверх
rthsobakas
Дата 11.2.2008, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Awaiting Authorisation
Сообщений: 562
Регистрация: 20.9.2007

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



на winXP запускаю

Цитата

В NT линейке hlt - привелигированная команда, недопустима в ring-3.


чето ниче не понял. Объясни поподробней , если не сложно
PM   Вверх
PPS05
Дата 11.2.2008, 18:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 262
Регистрация: 6.11.2005
Где: Беларусь, Минск

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



В двух словах особо не объяснишь... На системах Windows 2000, 2003, NT, XP команда hlt входит в состав привелигированных, это значит, что прикладные программы не могут использоать hlt. Ей может пользоваться лишь ядро системы, которое имеет большие привилегия на выполнение кода.


--------------------
Ушел с форума и не вернулся.
PM MAIL ICQ   Вверх
Mikl_
Дата 14.2.2008, 10:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Семантика команды: остановка микропроцессора до прерывания или перезагрузки. 
Применение: 
В результате выполнения команды микропроцессор переходит в состояние остановки. Из этого состояния его можно вывести сигналами на входах RESET, NMI, INTR. Если для возобновления работы микропроцессора используется прерывание, то сохраненное значение пары CS:EIP/IP указывает на команду, следующую за HLT. Для иллюстрации применения данной команды рассмотрим способ переключения микропроцессора из защищенного в реальный режим и его возврата обратно в реальный режим. В микропроцессоре не предусмотрено специальных средств для подобного переключения. Сброс микропроцессора можно инициировать, если вывести байт со значением 0FEh в порт клавиатуры 64h. После этого микропроцессор переходит в реальный режим и управление получает программа BIOS, которая анализирует байт отключения в CMOS-памяти по адресу 0Fh. Если значения этого байта равно 05h — сброс микропроцессора инициирует инициализацию программируемого контроллера прерываний на значение базового вектора 08h. Далее управление передается по адресу, который находится в ячейке области данных BIOS 0040:0067h; 
Если значения этого байта равно 0Ah — сброс микропроцессора инициирует непосредственно передачу управления по адресу в ячейке области данных BIOS 0040:0067h (то есть без перепрограммирования контроллера прерываний). 
Если Вы не используете прерываний, то достаточно установить байт 0Fh в CMOS-памяти в 0Ah. Предварительно Вы должны инициализировать ячейку области данных BIOS 0040:0067h значением адреса, по которому необходимо передать управление после сброса. Для программирования CMOS-памяти используются номера портов 070h и 071h. Вначале в порт 070h заносится нужный номер ячейки CMOS-памяти, а затем в порт 071h — новое значение этой ячейки. 
;работаем в реальном режиме, готовимся к переходу в защищенный режим:
    PUSH ES
    PUSH 40h
    POP ES
    MOV WORD PTR ES:[67h],OFFSET RET_REAL;RET_REAL — метка в программе, с которой должно
;начаться выполнение программы после сброса
    MOV ES:[69h],CS
    MOV AL,0Fh ;будем обращаться к ячейке 0Fh в CMOS
    OUT 70h,AL
    NOP ;чуть задержимся, чтобы аппаратура отработала сброс без перепрограммирования контроллера
    MOV AL,0Ah
    OUT 71h,AL
;переходим в защищенный режим установкой бита 0 CR0=1 
. . .;работаем в защищенном режиме
;готовимся перейти обратно в реальный режим
    MOV AL,01FCh
    OUT 64h,AL ;сброс микропроцессора 
    HLT
;остановка до физического окончания процесса сброса
 RET_REAL: ... ;метка, на которую будет передано управление после сброса
Разработчики из фирмы Intel рекомендуют использовать команду HLT только тогда, кода возникает катастрофическая ошибка оборудования и дальнейшая работа бессмысленна.
PM MAIL   Вверх
MAKCim
Дата 14.2.2008, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


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

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



Цитата(Mikl_ @  14.2.2008,  10:25 Найти цитируемый пост)
Разработчики из фирмы Intel рекомендуют использовать команду HLT только тогда, кода возникает катастрофическая ошибка оборудования и дальнейшая работа бессмысленна. 

применений больше


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
sgi1981
Дата 14.2.2008, 22:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



В остановленном состоянии микропроцессор потребляет мощность несколько ватт, а в исполняемом состоянии мощность несколько десятков ватт, вот поэтому есть смысл применять HLT.


--------------------
Тело в нашем пространстве - есть часть пространства, в которой пространство обладает дисторсией относительно внешнего пространства.
PM MAIL   Вверх
Mikl_
Дата 15.2.2008, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



MAKCim
Я цитировал Юрова
PM MAIL   Вверх
AndNot
Дата 28.2.2008, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Извиняюсь за поднятие старой темы, просто вспомнился старый досовский трюк:
Код
Delay macro d
  local @@l
    mov cx, d
@@l:
    hlt
    loop @@l
endml
Самый короткий способ организации задержек (с дискретностью в 1/18 секунды) smile Правда со своими недостатками, поэтому не применим там, где неправильная задержка может нарушить логику программы.
PM MAIL   Вверх
MAKCim
Дата 28.2.2008, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


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

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



AndNot, 
стремный способ
особенно если учесть, что кроме таймера есть еще куча всяких устройств  smile 


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
AndNot
Дата 1.3.2008, 20:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



MAKCim, 
Цитата(AndNot @  28.2.2008,  13:38 Найти цитируемый пост)
Правда со своими недостатками, поэтому не применим там, где неправильная задержка может нарушить логику программы
 ;) Я же не зря оговаривался. Но дос, есть дос, когда контролируешь почти все IRQ, то вполне можно применить. Использовал в небольших демонстрашках, где нужны были задержки (до нескольких секунд) и в то же время возможность прерывать их мышкой smile 
А вот старый способ самой короткой "вешалки": 
Код
    cli
    hlt
Под досом и Win9x работал безупречно, помогал лишь Reset. 

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

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

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


 




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


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

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