Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: программирование на языке Assembler


Информационный Канал Subscribe.Ru

RusFAQ.ru: программирование на языке Assembler

Выпуск № 598
от 24.07.2003, 15:30

Администратор:
Имя: Калашников О.А.
URL: Информационный ресурс
ICQ: 68951340
Россия, Москва
О рассылке:
Задано вопросов: 3777
Отправлено ответов: 11088
Активность: 293.5 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

Tigran K. Kalaidjian
Статус: Профессиональный
Общий рейтинг: 122.94
URL: Методы оптимизации работы ПК
[Подробней >>]
Bob Johnson
Статус: Профессиональный
Общий рейтинг: 152.19
URL: Программирование
[Подробней >>]
Теоретик
Статус: Доверительный
Общий рейтинг: 115.2
[Подробней >>]
 
getoff
Статус: Начальный
Общий рейтинг: 107.54
[Подробней >>]
Дмитрий
Статус: Профессиональный
Общий рейтинг: 126.82
[Подробней >>]
Евгений Иванов
Статус: Опытный
Общий рейтинг: 140
URL: Super Assembler Software
[Подробней >>]
 
Ayl
Статус: Профессиональный
Общий рейтинг: 118.23
[Подробней >>]
Broken Sword
Статус: Профессиональный
Общий рейтинг: 121.53
URL: мой сайт
[Подробней >>]
Beeblebrox
Статус: Профессиональный
Общий рейтинг: 107.61
URL: Beeblebrox / TMA HomePage
[Подробней >>]
 
_vt
Статус: Профессиональный
Общий рейтинг: 120.87
[Подробней >>]
Hangatyr
Статус: Опытный
Общий рейтинг: 114.82
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 3731. внимательно смотрите на ник от кого пришел вопрос гандон хуба подставляет чужие e-mail... (ответов: 1)
Вопрос № 3732. Игра Европа 2. Известен адрес, где находится код клавиши при нажатии которой устанавливается пауза, ... (ответов: 3)
Вопрос № 3733. В доках Iczeliona, описывается методика написания VxD. Но это засада, так как под NT это не работает... (ответов: 2)
Вопрос № 3735. во первых строках моего писима хатю сказать, что книга клаааасная!! кагда мона будет скачать 2-й том... (ответов: 4)
Вопрос № 3736. хайте, эксперты! скачал я демок с инета 256б каждая, штук 100, некоторые с исходниками на асме. како... (ответов: 5)
Вопрос № 3739. Здравствуйте, уважаемые эксперты! Я пытаюсь подключить устройство через LPT-port. Под ДОС у меня вс... (ответов: 2)
Вопрос № 3740. Здравствуйте,друзья.Пытаясь написать прогу,я упрастил для себя задачу.Программа должна выводить в AX... (ответов: 3)
Вопрос № 3741. Доброго времени суток господа Эксперты. У меня есть вопрос которыЙ надеюсь вы мне поможете прояснит... (ответов: 6)

Вопросов: 8, ответов: 26


 Вопрос № 3731

внимательно смотрите на ник от кого пришел вопрос
гандон хуба подставляет чужие e-mail



Вопрос отправлен: 19.07.2003, 11:05
Отправитель: Broken Sword (brokensword@mail.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Tigran K. Kalaidjian

Доброе время суток, Broken Sword!
Хе-хе. А я это предсказывал в письме к нашему читателю Antonio всего пару дней назад...
Это нормально для немодерируемой конференции, где вопрошающий может оставаться анонимным. Пример такого поведения легко найти в конфах иерархии MTU.INFORM - сразу после отмены модераториала началась подмена адресов и ников.
Есть 2 варианта решения этой проблемы:
1. введение команды модераторов и отмена анонимности(как в FIDONet-конференциях).
2. просто игнорирование таких выпадов.
Второй вариант был применен в конфах MTU.INFORM

Ответ отправлен: 19.07.2003, 12:09
Отправитель: Tigran K. Kalaidjian


 Вопрос № 3732

Игра Европа 2. Известен адрес, где находится код клавиши при нажатии которой устанавливается пауза, хочу заменить этот код на код средней клавиши мыши, может кто-нибудь подскажет код средней клавиши мыши и оператор, если он отличается.



Вопрос отправлен: 19.07.2003, 20:44
Отправитель: ilich (ilich@mail.wplus.net)

[Следующий вопрос >>] [Список вопросов]

Отвечает Bob Johnson

Здравствуйте, ilich!
Ну-ну. А какой там был код до этого, и вообще раньше пауза устанавливалась на клавиатуре или на мыше? Если на клаве - то тебе будет трудно...
> и оператор, если он отличается
Зависит от того, что там было.

* EMan1.4: ---===*** Have your friend the way you would like him ... never mind, do anything that comes natural ***===---


Ответ отправлен: 20.07.2003, 21:00
Отправитель: Bob Johnson


Отвечает Теоретик

Добрый день, ilich!
Существует вида кодов клавиш: ASCII-коды, скан-коды и виртуальные коды Windows.
Первые два связаны только с клавиатурой, соответственно средняя кнопка мыши никак с их помощью не задаётся.
А вот Windows имеет виртуальные ключи для кнопок мыши.
Левая кнопка мыши: 1
Правая кнопка мыши: 2
Средняя кнопка мыши: 4
Соответственно, получится или нет у вас сделать паузу зависит от того, какие коды использует игрушка.


Ответ отправлен: 20.07.2003, 17:36
Отправитель: Теоретик


Отвечает Tigran K. Kalaidjian

Приветствую Вас, ilich!
Э-э.. Что такое "код средней клавиши"? Доступ к мыши и клавиатуре осуществляется разными способами. Например для получения кода нажатой клавиши можно использовать int16h, а статус кнопок мыши получается с помощью одной из ф-ций прер-я int33h. Код средней клавиши в этом случае - 010b=2d
Если Вас интересует программирвание мыши под ДОС, то пишите на kalaidjian@pochtamt.ru - вышлю доки по теме.

Ответ отправлен: 19.07.2003, 22:55
Отправитель: Tigran K. Kalaidjian


 Вопрос № 3733

В доках Iczeliona, описывается методика написания VxD. Но это засада, так как под NT это не работает. Подскажите есть что-либо подобное под NT ядро, главное где взять примеры с описанием. Очень надо. Заранее благодарю.



Вопрос отправлен: 20.07.2003, 00:18
Отправитель: demwf

[Следующий вопрос >>] [Список вопросов]

Отвечает Bob Johnson

Здравствуйте, demwf!
Под NT надо писать другие драйвера - WDM, например. Для этого тебе надо прежде всего NT DDK под ту винду, под которую ты будешь писать драйвер. Ссылка на XP DDK есть на моей странице (я ее сейчас на память не помню), если она еще работает (раздел "файлы"). http://bobjohnson.nm.ru Там же есть (должны быть) и примеры ("там же" - в смысле DDK, а не на моей странице).

* EMan1.4: ---===*** Have your friend the way you would like him ... never mind, do anything that comes natural ***===---


Ответ отправлен: 20.07.2003, 21:00
Отправитель: Bob Johnson


Отвечает getoff

Доброе время суток, demwf!
В системе NT принята совершенно другая системя для драйверов WDM. Поэтому примеры и не работали. Примеры для NT можно взять в том самом DDK для нужной системы с сайта M$.

Ответ отправлен: 20.07.2003, 04:24
Отправитель: getoff


 Вопрос № 3735

во первых строках моего писима хатю сказать, что книга клаааасная!! кагда мона будет скачать 2-й том??
а вопрос вот какой:
у меня MASM 6.13 и он под виндой(98) не хочет конпилировать, пишет
DOSXNT : fatal error DX1140: DOSXNT.386 required to run with Windows
DOSXNT : fatal error DX1230: DOSXNT initialization failed
можно чтонить с этим сделать?? а то тяжко перегружаться под дос все время((



Вопрос отправлен: 20.07.2003, 07:19
Отправитель: Poma

[Следующий вопрос >>] [Список вопросов]

Отвечает Bob Johnson

Добрый день, Poma!
1. Учите все-таки Русский Язык (это относится ко многим людям, которые задают вопросы), т.к. "во первых строках", "хатю", "мона", "конпилировать", "чтонить" и т.д. уже просто достает читать. Вы думаете, что это модно или красиво? Да это полный отстой.
> во первых строках моего писима хатю сказать, что книга клаааасная!! кагда мона будет скачать 2-й том??
Клево. А что за книга хоть?
> DOSXNT : fatal error DX1140: DOSXNT.386 required to run with Windows
Ну вот и найди этот самый DOSXNT.386. Это - файл (видимо). А помочь тебе в этом может яндекс.

* EMan1.4: ---===*** Have your friend the way you would like him ... never mind, do anything that comes natural ***===---


Ответ отправлен: 20.07.2003, 21:00
Отправитель: Bob Johnson


Отвечает Tigran K. Kalaidjian

Добрый день, Poma!
Добавьте следующую строку в system.ini(секция [386Enh]):
device=DOSXNT.386
Ну, и путь, если понадобится.


Ответ отправлен: 20.07.2003, 14:57
Отправитель: Tigran K. Kalaidjian


Отвечает Дмитрий

Доброе время суток, Poma!
Вот описание проблемы и ее решение:
DX1140: DOSXNT.386 driver required to run with Windows
For ML.EXE to run with the Microsoft Windows operating system, the
driver called DOSXNT.386 must be specified in the [386Enh] section of
SYSTEM.INI as follows:
DEVICE=DOSXNT.386


Ответ отправлен: 22.07.2003, 11:14
Отправитель: Дмитрий


Отвечает Евгений Иванов

Приветствую Вас, Poma!
Тебе нужно загружать библиотеку DOSXNT.386 из секции
[386Enh] файла system.ini
device=DOSXNT.386


Ответ отправлен: 20.07.2003, 13:50
Отправитель: Евгений Иванов


 Вопрос № 3736

хайте, эксперты!
скачал я демок с инета 256б каждая, штук 100, некоторые
с исходниками на асме. каков принцип работы всех этих
демок, у меня с графикой получается только рисовать точки,
линии, линии справо-налево, меняя цвет на 1. Там-то красиво,
хоть и с 320х200х256, хоть и 256байт. К примеру, линия
ползет по экрану, линия толстая и как-будто светится,
оставляя за собой след, который плавно исчезает.
принцип построения таких программ каков? в исходнике
почти ничего непонял. Или пример "плазма", там вообще ничего непонять, даже где там точки выводятся.
и ещё, поясните пожалуста, что,где куда в исходнике и зачем,
т.е. что какая команда делает и зачем, особенно. с ;*


Приложение:


Вопрос отправлен: 20.07.2003, 11:35
Отправитель: Zensor_ (zasm@mail.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Ayl

Приветствую Вас, Zensor_!
В основном все эти демки используют изменения палитры для получения соответствующего эффекта. Например эффект исчезания линии можно достичь, если каждую точку линии нарисовать своим цветом, предварительно загрузив в регистры палитры одно и тоже значение, а затем последовательно изменять цвета для каждого регистра палитры на более темный до получения черного цвета.
Насчет "ничего не понятно" - ничего удивительного, в таких демках используется множество "вывертов" как непосредственно с ассемблером, так и с аппаратной частью. Чтобы разобраться, нужно обложиться документацией (в примере с плазмой - справочник по командам ассемблера и справочник по видеоадаптору VGA). После чего последовательно на бумажке (можно и в отладчике) выполняешь программу. Пытаешься понять, что делает эта команда (или блок команд, что более правильно). Не в плане "загружает число тринадцать (шестнадцатеричное) в регистр AX", а "использует прерывание 10h (прерывание видеоBIOS) для установки с помощью функции 0, указанной в AH, режима экрана 320*200 256 цветов (режим 13h, указывается в регистре AL)". Когда ты так распишешь всю программу на блоки, ты уже вчерне сможешь приблизительно понять ее логику. После этого начинаешь понимать математику, например, почему для построения плазмы используется исенно такой закон. Когда ты таким образом отпрепарируешь десяток демок, в дальнейшем ты уже "на лету" будешь вычленять подобные куски. И дело пойдет гораздо проще.
Насчет программы рисования плазмы. Вначале заполняются 66 регистров палитры по определенному закону (двумя блоками по 33 регистра в блоке). Затем с помощью FPU заполняется 512 элементов массива с помощью некоторого синусоидального закона. Далее, начиная с метки @MainLp экран заполняется точками с цветом, выисляемым также по некоторому закону. Вывод точки выполняется с помощью команды stosb перед командой loop @x_Loop. Все, что написано перед этим stosb - определение цвета точки (точнее, индекса в палитре). Когда ты декодируешь эту функцию, то ты должен понять, как прога устроена.

Ответ отправлен: 20.07.2003, 22:26
Отправитель: Ayl


Отвечает Broken Sword

Здравствуйте, Zensor_!
не будете ли вы столь любезны запаковать все 100 скачанных демок в один zip и кинуть на brokensword@mail.ru ? Век не забуду!
во всех подобных демках ОЧЕНЬ активно используется сопроцессор, и вывод через регистры видеокарты. Впринципе там все очень просто, если знать математику и принципы создания визуальных эффектов

Ответ отправлен: 21.07.2003, 23:31
Отправитель: Broken Sword


Отвечает Евгений Иванов

Приветствую Вас, Zensor_!
Настройка палитры или создание оной.
>mov di, 20*320;*the pixel is putting there?
Да, на строчку 20.
>mov word ptr [x], 160;*
Всего 160 строчек из 200-от.
То есть, выводятся линии за линией по вертикали.
Что выводить (какой цвет), берётся по синусоидальному закону.
Заранее заполняется таблица для быстроты.


Ответ отправлен: 20.07.2003, 13:49
Отправитель: Евгений Иванов


Отвечает Beeblebrox

Приветствую Вас, Zensor_!
Рано тебе еще. Вообще-то демки - это высший пилотаж, в особенности 256-байтные. Осваивай постепенно режим 13h (320x200 256 цветов), рисуй точки, группы точек, изменяй палитру, синхронизируй вывод с обратным ходом луча, изучай математику и ассемблер. Очень полезный ресурс в инете http://www.enlight.ru (demo.design FAQ)

Ответ отправлен: 21.07.2003, 16:45
Отправитель: Beeblebrox


Отвечает Bob Johnson

Добрый день, Zensor_!
Ну ты даешь...
> и ещё, поясните пожалуста, что,где куда в исходнике и зачем, т.е. что какая команда делает и зачем, особенно. с ;*
Мне кажется, что среди нас нет автора этой демки (хотя бы потому, что там комментарии на немецком языке), так что объяснить тебе никто не сможет (это надо понять именно то, как автор делал задуманный эффект). Странно, почему только в этой демке не сделали перед выходом команды
        mov al, 3
int 10h

т.к. это даст переход в текстовый режим, а размер будет тогда ровно 256 байт. (ah тут все равно 0, т.к. после shr ax, 10 inc ax ah всегда будет 0).
> каков принцип работы всех этих демок
Надо придумывать эффект и простой алгоритм его реализации. При этом изначально демка может занимать 300 и даже больше байт, а потом ты начинаешь думать, как то, что ты сделал уменьшить еще.

* EMan1.4: ---===*** Have your friend the way you would like him ... never mind, do anything that comes natural ***===---


Ответ отправлен: 20.07.2003, 21:01
Отправитель: Bob Johnson


 Вопрос № 3739

Здравствуйте, уважаемые эксперты!
Я пытаюсь подключить устройство через LPT-port.
Под ДОС у меня всё получилось, теперь хочу разобраться
как сделать всё под Windows, но под последней не получается:
выдаёт ошибку. При отладке под сайсом при вызове CreateThread
вообще всё виснет. Ума не приложу в чём проблема. Пользуюсь в
качестве пособия туториалами Iczelion'a, компилирую тасмом.
Подскажите, пожалуйста, в чём моя ошибка.


Приложение:


Вопрос отправлен: 20.07.2003, 13:40
Отправитель: 86 a5 ad ef (difuzion@mail.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Евгений Иванов

Привет, тёзка!
>
! push threadID
надо так
push offset threadID
и вообще советую использовать при адресации [], чтобы хоть самому не
путаться!
а то пишешь:
mov al,sfal
а чего имел в виду, постоянную заносишь или из адреса?
А вот так
mov al,[sfal]
сразу ясно, что из памяти!
push 3bch
pop dx
лучше
mov dx, 3BCh
не намного меньше, но быстрее, так как стек не использует!
shtatno:
push 3bch
pop dx
Зачем второй раз?



Ответ отправлен: 20.07.2003, 19:02
Отправитель: Евгений Иванов


Отвечает _vt

Приветствую Вас, 86 a5 ad ef!
Работать напрямую с LPT-портом можно только через драйвер, а у тебя обычная программа

---===*** E-Man 1.4 - waiting for 1.5...***===---


Ответ отправлен: 23.07.2003, 11:12
Отправитель: _vt


 Вопрос № 3740

Здравствуйте,друзья.Пытаясь написать прогу,я упрастил для себя задачу.Программа должна выводить в AX и BX колличество "срабатывания"генератора случайных чисел,чтобы потом увидеть
в отладчике статистику.Это как если подбросить 100 раз монетку и результат записать в эти регистры.Ну что-то я намудрил наверное со стеком.Где я ошибся ? Не судите строго,
заранее благодарен.Yury.


Приложение:


Вопрос отправлен: 20.07.2003, 15:02
Отправитель: Yury (ch_y@mail.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает _vt

Доброе время суток, Yury!
Процедура rand правильная, а алгоритм статистики запутан донельзя, ошибок море... Проще новую программу написать, чем эту исправить...

---===*** E-Man 1.4 - waiting for 1.5...***===---


Ответ отправлен: 23.07.2003, 11:12
Отправитель: _vt


Отвечает Hangatyr

Доброе время суток, Yury!
1. Что значит загадочная последовательность инструкций
mov bx, ax
xor ax, ax
mov ax, bx
2.
xor eax,eax
xor ebx,ebx
jz r
Команда XOR тоже влияет на состояние флага ZF, который вы проверяете, т.е. если нужно проверить равен ли нулю DX эти инструкции нужно будет разместить или до или после XOR.
3.
mov cx,100
push cx
xor cx,cx
Тоже не совсем понятно - процедура rand не использует CX. Собственно, в этом и есть ошибка - регистр CX помещается в стек только один раз, а извлекается 100h раз. Нужно поставить push cx где-нибудь после Lebel_1.
В приложении подправленный вариант программы.


Приложение:

Ответ отправлен: 20.07.2003, 16:00
Отправитель: Hangatyr


Отвечает Евгений Иванов

Здравствуйте, Yury!
Ну... хотя у тебя и мусора тоже полно.., но вот так должно получше:
cseg segment
assume cs:cseg,ds:cseg,es:cseg,ss:cseg
org 100h
.386
Begin:
int 3
mov cx,100
Lebel_1:
push cx
;!!xor cx,cx ;! по моему, лишняя команда
;!! Lebel_1: ;! Со стеком сразу видна ошибочка; метку Lebel_1 надо пораньше, перед push.
call rand
mov bx,ax
;!!xor ax,ax ;!ты думаешь, AX портится, когда в BX копируешь? :)
;!!mov ax,bx
xor dx,dx
mov cx,2
div cx
;!!cmp dx,0
xor eax,eax
xor ebx,ebx
or dx, dx ;!здесь надо, XOR портит флаг Z
jz r
jmp o
r:
;!!add x,1
inc [x] ;лучше так

jmp e
o:
;!!add y,1
inc [y] ;лучше так

e:
pop cx
loop Lebel_1
mov al,x
mov bl,y
int 20h
x db 0
y db 0


Ответ отправлен: 20.07.2003, 22:33
Отправитель: Евгений Иванов


 Вопрос № 3741

Доброго времени суток господа Эксперты.
У меня есть вопрос которыЙ надеюсь вы мне поможете прояснить.
Вознаграждение - моя безграничная признательность и БОЛЬШОЕ уважение.
Мне нужна программка которая зажигает светодиод NumLock'a.
Под DOS я ее написал без больших проблем, но дело в том что мне она нужна под Win32. Написал под Win32 но основной код взял из Dos'овской, я считал, что никаких прерываний и фунций Dos не использую дожно работать. Но не тут то было
Программа вроде компилируеся, но не работает, вылетает с ошибкой программа выполнила не ту операцию и т.д.
Насколько я разобрался она пытается писать не в ту облать памяти, надо в 0040:0017 а она пишет например в 0187:00401003 (из информации об ошибке).
Вроде бы Api функций включающих Numlock нету, как же быть?
Обе проги в приложении.
Буду очень благодарен, за обьяснение проблеммы.


Приложение:


Вопрос отправлен: 20.07.2003, 15:26
Отправитель: Евгений

[Следующий вопрос >>] [Список вопросов]

Отвечает _vt

Добрый день, Евгений!
> я считал, что никаких прерываний и фунций Dos не использую дожно работать
Адресация памяти в Win32 тоже другая, и использовать область данных BIOS нельзя. А API-функции, по-моему, есть, эксперты по Win32 напишут...

---===*** E-Man 1.4 - waiting for 1.5...***===---


Ответ отправлен: 23.07.2003, 11:12
Отправитель: _vt


Отвечает Теоретик

Доброе время суток, Евгений!
0187:00401003 - это не то, куда она пишет, а адрес инструкции, в которой произошла ошибка.
0187 - это значение регистра CS.
В своей программе вы нарушили множество принципов работы с полской моделью памяти.
Во-первых, сами меняете значение сегментного регистра.
Прикладные программы этого делать НЕ ДОЛЖНЫ!
Во-вторых, в адресном пространстве Windows-приложений нет никаких переменных BIOS.
Ваша программа обращается к адресу 00000417h, а что там находится - зависит
от конкретной разновидности Windows, но в любом случае писать туда нельзя.
Наконец, пожурив немного, открою секрет, как сделать то, что вы хотите -
поиграть с NumLock. Существует процедура keybd_event, которая эмулирует
нажатие или отжатие клавиши.
Для того, чтобы "мигнуть" NumLock'ом, достаточно его только "нажать",
но чтобы небыло глюков, его нужно ещё и отпустить.
Делается это так:
invoke keybd_event,144,0,0,0 ; типа как нажимаем
invoke keybd_event,144,0,2,0 ; типа как отпускаем
144 - это виртуальный код клавиши NumLock.
Вам остаётся только дописать заголовки и выход из программы.
Процедура keybd_event принадлежит библиотеке user32.dll

Ответ отправлен: 20.07.2003, 20:15
Отправитель: Теоретик


Отвечает Hangatyr

Добрый день, Евгений!
Тут все зависит от того, под какую версию винды вы пишите:
1. NT:
call keybd_event, VK_NUMLOCK, 45h, KEYEVENTF_EXTENDEDKEY, 0
call keybd_event, VK_NUMLOCK, 45h, KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP, 0
Т.е. просто нажали и отпустили.
2. Win9x:
Используйте GetKeyboardState/SetKeyboardState. Им в качестве параметра передается адрес массива, в котором хранятся статусы кнопок.
call GetKeyboardState, offset keys
mov byte ptr keys[VK_NUMLOCK], 1
call SetKeyboardState


Ответ отправлен: 20.07.2003, 16:44
Отправитель: Hangatyr


Отвечает Tigran K. Kalaidjian

Приветствую Вас, Евгений!
Вы пробовали работать с памятью, находясь на 3-м кольце защиты. WIN32 такого не терпит от простых смертных =)
Так что переходите на нулевое кольцо и там уже работайте напрямую с памятью. Не гарантирую, что будет работать, но попробовать можно. О том, как сесть на 0-е кольцо читайте в ближайших выпусках рассылки (вопрос N3724).

Ответ отправлен: 21.07.2003, 16:20
Отправитель: Tigran K. Kalaidjian


Отвечает Евгений Иванов

Здравствуйте, Евгений!
В защищённом режиме нет сегментов, там переключатели (селекторы).
То есть, процессор сам берёт число из сегментного регистра и смотрит таблицу
и находит соответствие этому номеру нужный адрес, понятно?
Попробуй зажечь лампочку NumLock'a с помощью портов.
Вроде в win9x можно в порты писать, а в NT можно использовать библиотеку
HWIODRV.DLL
или
NTHWIO.SYS
и
HWIO95.VXD.
Ищи их на tuner.ixbt.com
программа FMRadio.
tuner.ixbt.com/soft/soft_tv_fm_001.html
Эти DLL внутри архива с программой
или драйвер:
www.hg.pp.ru/downloads/giveio.zip
Посылай эту команду в порт 64h:
0edH Turn LED 'lock key' lights on or off. First send 0edH, then send byte:
¤7€6€5€4€3€2€1€0§
Ў not usedЃcЃnЃsЎ
ЄЂ‰Ђ‰Ђ‰Ђ‰Ђ‰·‰·‰·­
Ў Ў «  ScrollLock light 01H=turn on
Ў «    NumLock light 02H=turn on
«      CapsLock light 04H=turn on
The bit positions 0-3 correspond to bits 4-6 of the keyboard flags
variable in the BIOS Data Area. You should make an effort to keep the
flags in sync with the lights. For instance, if you do a big favor for
the user and set his ten-key pad into NumLock mode (by setting bit 5 of
0:0417) then be sure to turn on the corresponding LED (e.g., bit 1).
Только сначала проверяй, что можно посылать!


Ответ отправлен: 20.07.2003, 22:33
Отправитель: Евгений Иванов


Отвечает Bob Johnson

Здравствуйте, Евгений!
Читай как ты про защищенный режим... Нельзя в нем менять сегмент вот так просто.
По вопросу: кажется еще был один метод, основанный на выводе данных в порт - используй его, только для этого перейди вначале на нулевое кольцо, т.к. из третьего с портами работать нельзя.

* EMan1.5: ---===*** The hell we've created ourselves ***===---


Ответ отправлен: 21.07.2003, 11:59
Отправитель: Bob Johnson



Форма отправки вопроса

Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

(C) 2002-2003 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (33)
C / C++ (23)
Perl (4)
Builder / Delphi (20)
Pascal (22)
Basic / VBA (11)
Java / JavaScript (11)
PHP (8)
Криптография (8)
WinAPI (12)
Пользователю
Windows 95/98/Me (44)
Windows NT/2000/XP (40)
"Железо" (33)
Поиск информации (23)
Администратору
Windows NT/2000/XP (23)
Linux / Unix (9)
Юристу
Гражданское право (11)
Семейное право (6)
Трудовое право (9)
КоАП (5)

Отправить вопрос всем экспертам выбранной рассылки.




Задать вопрос | Регистрация эксперта | Поиск в базе | Чат | Форумы | Новости
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
Профессиональная WEB-Студия B.I.T.


Яндекс цитирования
© 2001-2003 Россия, Москва. Авторское право: Калашников О.А.


http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное