Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: CMOS  (Прочитано 6424 раз)
0 Пользователей и 1 Гость смотрят эту тему.
LP
Помогающий

ru
Offline Offline

« : 16-10-2004 17:04 » 

Hello! Кому не трудно помогите, пожалуйста, со следующим
фрагментом кода:
Код:
;определение типа hdd через CMOS
mov al,12h ;адрес CMOS по которому хранится тип hdd
out 70h,al   
jmp @delay;задержка
@delay:
in al,71h    ;в al должен записываться байт по которому
                ;определяется тип жесткого диска
 
Проблема в том, что у меня всегда al=0, что означает
диск отсутствует . Проверял на 4-х разных компьютерах,
везде одно и тоже!
Может кто-нибудь знает в чем тут дело?
Может это устаревший способ (все справочники у меня старые)?
Или проблема в Паскале (у меня этот фрагмент в паскальной программе используется): например
Код:
program CMOS;
var b:byte;
begin
asm
mov al,12h
out 70h,al
jmp @delay
@delay:
in al,71h
mov b,al
end;
writeln(b);
end.
Выводится 0.  Так больше нельзя...
« Последнее редактирование: 02-12-2007 14:09 от Алексей1153++ » Записан

Если эта надпись уменьшается, значит ваш монитор уносят
Finch
Спокойный
Администратор

il
Offline Offline
Пол: Мужской
Пролетал мимо


« Ответ #1 : 16-10-2004 20:31 » 

LP, Если ты пишеш под виндой. Я вижу только одну проблему. Комманды in и out закрыты для исполнения. Это сделано в целях безопасности. Они могут работать только на нулевом уровне. т.е. В том, в котором работает ядро виндовса. Если ты поставиш себе на машину чистый ДОС и запустиш с него свою программку, я думаю у тебя эта проблема исчезнит.
Записан

Не будите спашяго дракона.
             Джаффар (Коша)
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #2 : 17-10-2004 00:29 » 

Вот что у меня есть:
Код:
12H     hard disk types (if < 15)

 19H     hard disk C type (if > 15)
 1aH     hard disk D type (if > 15)

Но следует помнить, что эти типы относятся к очень древним винтам. Результат 0 для современного винта может быть нормой.
« Последнее редактирование: 02-12-2007 14:10 от Алексей1153++ » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
LP
Помогающий

ru
Offline Offline

« Ответ #3 : 17-10-2004 11:40 » 

Finch, RXL cпасибо за ответы!
Цитата
LP, Если ты пишеш под виндой. Я вижу только одну проблему. Комманды in и out закрыты для исполнения.
Finch, но в той же лабе при определении типа флоппи дисковода все OK:

Код:
mov al,10h ; 10h - адрес инф-ии о флоппи дисководе
out 70h,al    
jmp @delay
@delay:
in al,71h    
               
Цитата
Результат 0 для современного винта может быть нормой.
Раз так, то, видимо, все в порядке.
« Последнее редактирование: 02-12-2007 14:10 от Алексей1153++ » Записан

Если эта надпись уменьшается, значит ваш монитор уносят
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines