|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Июл 26, 2004 20:32:29 Увы:-( Оставил сообщение на форуме ФАСМ-а. Может подскажут в чём дело. |
|
|
Дата: Июл 26, 2004 21:45:08 Может быть. Пробовал запускать мой драйвер? |
|
|
Дата: Июл 26, 2004 23:46:33 почему PE DLL native а не просто PE native? |
|
|
Дата: Июл 27, 2004 04:10:48 И так и так работает с этими двумя строчками, и в обоих случаях не работает без этих двух строчек. |
|
|
Дата: Июл 27, 2004 04:14:03 ProgramMan Hal.dll - это что такое? Без неё можно? |
|
|
Дата: Июл 27, 2004 09:35:32 · Поправил: ProgramMan Из hal.dll берётся секция инициализации. |
|
|
Дата: Июл 27, 2004 09:38:05 section 'INIT' code import readable notpageable dd rva szHal_dll times 5 dd 0 szHal_dll db 'HAL.dll',0 |
|
|
Дата: Июл 27, 2004 09:40:20 Без неё тоже работает... странно. Это всёже баг компилятора. |
|
|
Дата: Июл 27, 2004 12:40:56 Возможно я не совсем понял, о чем вы тут говорите, но hal.dll это библиотека Hardware Abstraction Layer. Если надо из неё какие функции тянуть (HalMakeBeep, например), подключаем, если не надо не подключаем. |
|
|
Дата: Июл 27, 2004 13:16:34 > Из hal.dll берётся секция инициализации. Похоже на танцы с бубном ;-) |
|
|
Дата: Июл 27, 2004 16:39:20
;
; Beeper Driver
;
format PE native 4.0 at 10000h
entry DriverEntry
include "%fasminc%/win32a.inc"
include "%fasminc%/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
FASM 1.53 Все работает |
|
|
Дата: Июл 27, 2004 17:12:03 aXe Я и не сомневаюсь. У меня в последнем посте исходник практически аналогичный, только без вызова HalMakeBeep и только с первой процедурой MakeBeep1. Причём если вызов есть, то драйвер работает, а если этого вызова нет, то драйвер не загружается. Мне интересно почему так случается. |
|
|
Дата: Июл 27, 2004 17:13:44 Four-F Я примерно так и думал, но сомнения закрались. |
|
|
Дата: Июл 27, 2004 17:33:04 pas Я скопировал твой пример. У меня работает и закоментированный вызов и разкоментированный! XP prof + SP1 |
|
|
Дата: Июл 27, 2004 18:16:57 Asterix Точно! pas Нужно явно с автором FASM разговаривать. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.075 |