Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Драйвер, обьясните как работает. Win32, FASM 
:(
    Опции темы
fAL
Дата 12.3.2005, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Код


format PE native 4.0 at 10000h
entry DriverEntry

include "D:\assembler\FASM\INCLUDE\win32a.inc"
include "D:\assembler\FASM\INCLUDE\macro\if.inc"

STATUS_DEVICE_CONFIGURATION_ERROR        equ 00C0000182h

TIMER_FREQUENCY        equ 1193167             ; 1,193,167 Гц
OCTAVE               equ 2                 ; множитель октавы

PITCH_C           equ 523                 ; До        -  523,25 Гц
PITCH_Cs           equ 554                 ; До диез   -  554,37 Гц
PITCH_D           equ 587                 ; Ре        -  587,33 Гц
PITCH_Ds           equ 622                 ; Ре диез   -  622,25 Гц
PITCH_E           equ 659                 ; Ми        -  659,25 Гц
PITCH_F           equ 698                 ; Фа        -  698,46 Гц
PITCH_Fs           equ 740                 ; Фа диез   -  739,99 Гц
PITCH_G           equ 784                 ; Соль      -  783,99 Гц
PITCH_Gs           equ 831                 ; Соль диез -  830,61 Гц
PITCH_A           equ 880                 ; Ля        -  880,00 Гц
PITCH_As           equ 988                 ; Ля диез   -  987,77 Гц
PITCH_H           equ 1047             ; Си        - 1046,50 Гц

; Нам нужны три звука для до-мажорного арпеджио (до, ми, соль)

TONE_1               equ TIMER_FREQUENCY/(PITCH_C*OCTAVE)
TONE_2               equ TIMER_FREQUENCY/(PITCH_E*OCTAVE)
TONE_3               equ (PITCH_G*OCTAVE)          ; для HalMakeBeep

DELAY               equ 3000000h              ; для моей ~800mHz машины

section '.text' code readable executable notpageable

proc MakeBeep1,dwPitch
    enter
    ; Прямой доступ к оборудованию через порты ввода-вывода

    cli

    mov al, 10110110b
    out 43h, al

    mov eax, [dwPitch]
    out 42h, al

    mov al, ah
    out 42h, al

    ; включить динамик

    in al, 61h
    or  al, 11b
    out 61h, al

    sti
    mov eax, DELAY
    .while eax
           dec eax
    .endw
    cli

    ; выключить динамик

    in al, 61h
    and al, 11111100b
    out 61h, al

    sti
    return
endp

proc MakeBeep2,dwPitch
    enter
    ; Прямой доступ к оборудованию используя функции
    ; WRITE_PORT_UCHAR и READ_PORT_UCHAR из модуля hal.dll

    cli

    invoke    WRITE_PORT_UCHAR, 43h, 10110110b

    mov    eax, [dwPitch]
    push    0
    movzx    ax,al
    push    ax
    push    42h
    call    [WRITE_PORT_UCHAR]
    mov    eax, [dwPitch]
    mov    al,ah
    push    0
    movzx    ax,al
    push    ax
    push    42h
    call    [WRITE_PORT_UCHAR]

    ; включить динамик

    invoke    READ_PORT_UCHAR, 61h
    or    al,11b
    push    0
    movzx    ax,al
    push    ax
    push    61h
    call    [WRITE_PORT_UCHAR]

    sti
    mov eax, DELAY
    .while eax
           dec eax
    .endw
    cli

    ; выключить динамик

    invoke READ_PORT_UCHAR, 61h
    and    al, 11111100b
    push   0
    movzx  ax,al
    push   ax
    push   61h
    call   [WRITE_PORT_UCHAR]

    sti
    return
endp

proc DriverEntry,pDriverObject,pusRegistryPath
    enter
    stdcall MakeBeep1,TONE_1
    stdcall MakeBeep2,TONE_2

    ; Прямой доступ к оборудованию используя функцию HalMakeBeep из модуля hal.dll

    invoke HalMakeBeep,TONE_3
    mov eax, DELAY
    .while eax
           dec eax
    .endw
    invoke HalMakeBeep, 0

    mov eax, STATUS_DEVICE_CONFIGURATION_ERROR
    return
endp

section '.rdata' import readable notpageable
    library hal,"hal.dll"
    import hal,HalMakeBeep,"HalMakeBeep",\
           READ_PORT_UCHAR,'READ_PORT_UCHAR',\
           WRITE_PORT_UCHAR,'WRITE_PORT_UCHAR'

section '.reloc' data fixups readable discardable




Воть, исходничек нарыл, а как работает не знаю, мне бы описание hal.dll, и что нибуть типа MSDN по этому делу smile
PM MAIL   Вверх
Chingachguk
Дата 12.3.2005, 22:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Попробуй почитать статьи Four-F на wasm.ru, например: http://www.wasm.ru/print.php?article=drvw2k01


--------------------
I don't like the drugs (but the drugs like me). M.Manson.
PM MAIL ICQ   Вверх
fAL
Дата 14.3.2005, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(Chingachguk @ 12.3.2005, 22:55)
Попробуй почитать статьи Four-F на wasm.ru, например: http://www.wasm.ru/print.php?article=drvw2k01

Именно их я и пытаюсь изучать, но проблема в том, что там написано на MASM32, а у меня FASM
PM MAIL   Вверх
oleg1973
Дата 14.3.2005, 23:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


asm fanat
****


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

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



fAL
а какая разница?


--------------------
SST 465555
icq 200-512-712
PM MAIL WWW ICQ   Вверх
TDil
Дата 15.3.2005, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



А может спросить в http://flatassembler.net

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

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

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


 




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


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

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