Автор Тема: Помогите с асмом!  (Прочитано 1188 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн RFire

  • Эксперт
  • *****
  • Сообщений: 1548
  • Репутация: +442/-21
Re: Помогите с асмом!
« Ответ #15 : Апреля 10, 2006, 19:59:59 »
А в NT еще кольца безопасности не дают на низком уровне работать.

Оффлайн AC220

  • Новичок
  • *
  • Сообщений: 82
  • Репутация: +0/-3
Re: Помогите с асмом!
« Ответ #16 : Апреля 10, 2006, 20:24:05 »
Винда работает в защищенном режиме - поэтому напрямую к прерываниям ты обратиться не можешь.
При эмуляции ДОС это не совсем так. ;) Там ещё один режим используется.

В досовом окошке под 95 прерывания работали, точно помню.

Оффлайн RFire

  • Эксперт
  • *****
  • Сообщений: 1548
  • Репутация: +442/-21
Re: Помогите с асмом!
« Ответ #17 : Апреля 10, 2006, 20:25:30 »
Согласен. Я про win-приложения.

Оффлайн maximilian

  • Ветеран форума
  • ******
  • Сообщений: 3937
  • Репутация: +152/-80
    • borkhes точка livejournal точка com
Re: Помогите с асмом!
« Ответ #18 : Апреля 10, 2006, 22:29:52 »
Пишем драйвер, влезаем на самый защищённый уровень и косячим там по-полной. :))))))))

Оффлайн RafaelRS

  • Меценат
  • *****
  • Сообщений: 3471
  • Репутация: +1690/-337
  • Я - самодура
Re: Помогите с асмом!
« Ответ #19 : Апреля 10, 2006, 22:48:58 »
Эээ, вы там не хулигяньте. Если хошь извратнутся действительно, пральна про камрад говорит про изучение асма под винды. У меня руки таки не дошли до этого дела, так что готовый рецепт не предложу. Не знаю как прерывания, но обращения напрямую к портам например работает только в win95/98. winme не пробывал не знаю. Xp точно прокатит, думаю и по прерываниям аналогично.

БИОС тоже править даже если получится не рекомендую. Не понятно как на это винда среагирует (а может взад вернет правильную дату :) хотя наврядля).
« Последнее редактирование: Апреля 10, 2006, 22:50:41 от RafaelRS »

Оффлайн maximilian

  • Ветеран форума
  • ******
  • Сообщений: 3937
  • Репутация: +152/-80
    • borkhes точка livejournal точка com
Re: Помогите с асмом!
« Ответ #20 : Апреля 11, 2006, 00:44:13 »
вы чё, совсем в танке? Какие порты если режим В86? К какому "живому" порту вас винда подпустит?

Оффлайн DarkHero Автор темы

  • Эксперт
  • *****
  • Сообщений: 1466
  • Репутация: +50/-12
  • Давнозарегестрированный
Re: Помогите с асмом!
« Ответ #21 : Апреля 11, 2006, 07:24:34 »
ну хоть как в 95/98 это сделать есть рецепт?

Оффлайн RafaelRS

  • Меценат
  • *****
  • Сообщений: 3471
  • Репутация: +1690/-337
  • Я - самодура
Re: Помогите с асмом!
« Ответ #22 : Апреля 11, 2006, 07:49:18 »
вы чё, совсем в танке? Какие порты если режим В86? К какому "живому" порту вас винда подпустит?
Мы про что? Или читали не правильно :). Из под win98 все нормально обращается, так что не надо ляля тут не попробывав. Я вообще-то не попробывав не говорю (делал счетчик витков на намоточном станке, когда транс крутил, через порты обращался и все нормуль. Правда на ТурбоПаскале, но не суть важно).
ну хоть как в 95/98 это сделать есть рецепт?
Делай так же как в обычном ДОСе - через прерывание.

Оффлайн DarkHero Автор темы

  • Эксперт
  • *****
  • Сообщений: 1466
  • Репутация: +50/-12
  • Давнозарегестрированный
Re: Помогите с асмом!
« Ответ #23 : Апреля 11, 2006, 11:13:28 »
mov al,0bh            ;снимаем защиту от записи
out 70h,al     
nop
nop
nop
mov al,01h                ;нулевом разряде ставим 1
out 71h,al              ;а все это в порт 71       
sub DAYh, 30h       ; из аски в двоичное
sub DAYl, 30h
mov al, 07h       ;задаем адрес dd
out 070h, al   ;посылаем адрес ячейки для последующей записи
mov ah, DAYh
mov al, DAYl
aad           ;преобразуем BCD из ax в двоичное в al
out 071h, al       ;пишем
;********---------------конец записи в кмос даты
mov al,0bh              ;Восстанавливаем защиту от записи
out 70h,al              ;для этого на регистре 0bh в 
nop
nop
mov al,0                ;нулевом разряде ставим 0
out 71h,al              ;а все это в порт 71
mov ah, DAYh
mov al, DAYl
aad 
mov dl, al
xor al, al
mov ah, 2Bh     
int 21h  ; прерывание для установки даты в винде (95/98)

DAYh и DAYl содержат младшую и старшую цифры от числа дней. в кмос все нормально пишется, а вот прерывание, которое идет после, не заставляет измениться виндовскую дату. где может быть ошибка?

Оффлайн hell

  • Ветеран форума
  • ******
  • Сообщений: 4645
  • Репутация: +462/-136
    • hellamp rocks
Re: Помогите с асмом!
« Ответ #24 : Апреля 11, 2006, 11:30:01 »
Бла не надо в венде никакие биосы писать.
Дергай апишную функцию из асма.
Если хочешь примера - сгенерируй asm из C кода и посмотри.

Оффлайн BOFH

  • Ветеран форума
  • ******
  • Сообщений: 3077
  • Репутация: +91/-41
  • Даниил
    • Мой youtube-канал :)
Re: Помогите с асмом!
« Ответ #25 : Апреля 11, 2006, 16:09:09 »
вы чё, совсем в танке? Какие порты если режим В86? К какому "живому" порту вас винда подпустит?
А к "живым" и не надо, по идее! Даже вредно :) Даже очень :)