首页
社区
课程
招聘
[原创]Win32Asm 驱动学习笔记<4> 最简单的驱动程序
发表于: 2013-8-11 18:03 11637

[原创]Win32Asm 驱动学习笔记<4> 最简单的驱动程序

2013-8-11 18:03
11637
     .386
.model flat, stdcall
option casemap:none
include test.inc
.code
DriverEntry proc pDriverObject:PDRIVER_OBJECT,pusRegistryPath:PUNICODE_STRING
    invoke DbgPrint, $CTA0("Hello world! ")
   mov eax,STATUS_DEVICE_CONFIGURATION_ERROR
    ret

DriverEntry endp

end DriverEntry
 


   ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;  beeper - Kernel Mode Drive
;  Makes beep thorough computer speaker
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
.386
.model flat, stdcall
option casemap:none
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;                              I N C L U D E   F I L E S
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::


include w2k\ntstatus.inc
include w2k\ntddk.inc


;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;                                     E Q U A T E S
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
TIMER_FREQUENCY        equ 1193167                   ; 1,193,167 Hz
OCTAVE                 equ 2                         ; octave multiplier
PITCH_C                equ 523                       ; C        -  523,25 Hz
PITCH_Cs               equ 554                       ; C#       -  554,37 Hz
PITCH_D                equ 587                       ; D        -  587,33 Hz
PITCH_Ds               equ 622                       ; D#       -  622,25 Hz
PITCH_E                equ 659                       ; E        -  659,25 Hz
PITCH_F                equ 698                       ; F        -  698,46 Hz
PITCH_Fs               equ 740                       ; F#       -  739,99 Hz
PITCH_G                equ 784                       ; G        -  783,99 Hz
PITCH_Gs               equ 831                       ; G#       -  830,61 Hz
PITCH_A                equ 880                       ; A        -  880,00 Hz
PITCH_As               equ 988                       ; B        -  987,77 Hz
PITCH_H                equ 1047                      ; H        - 1046,50 Hz
; We are going to play c-major chord


TONE_C                 equ TIMER_FREQUENCY/(PITCH_C*OCTAVE)
TONE_E                 equ TIMER_FREQUENCY/(PITCH_E*OCTAVE)
DELAY                  equ 1800000h          ; for my ~800mHz box


;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;                                         M A C R O S
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
DO_DELAY MACRO
    mov eax, DELAY
    .while eax
        dec eax
    .endw
ENDM
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;                                            C O D E
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
.code
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;                                            MakeBeep
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
MakeBeep  proc dwPitch:DWORD
    ; Direct hardware access
    ;设置定时器的控制寄存器
    cli
    mov al, 10110110y
    out 43h, al
    
    ;操作将初始值的低位字节和高位字节送到42h端口
    mov eax, dwPitch
    out 42h, al
    mov al, ah
    out 42h, al
    ; 打开扬声器
    in al, 61h
    or  al, 11y
    out 61h, al
    sti
    DO_DELAY
    cli
    ; 关闭扬声器
    in al, 61h
    and al, 11111100y
    out 61h, al


    sti
    ret


MakeBeep endp


;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;                                       DriverEntry
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
DriverEntry proc pDriverObject:PDRIVER_OBJECT, pusRegistryPath:PUNICODE_STRING




  invoke MakeBeep, TONE_C
  DO_DELAY
  invoke MakeBeep, TONE_E
   
    mov eax, STATUS_DEVICE_CONFIGURATION_ERROR
    ret


DriverEntry endp
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
end DriverEntry

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 5
支持
分享
最新回复 (14)
雪    币: 45
活跃值: (55)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
2
跟lz学下驱动!
喜欢有图的文章。。
2013-8-11 18:08
0
雪    币: 6704
活跃值: (4682)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
3
继续来学习,非常感谢
2013-8-11 18:10
0
雪    币: 98745
活跃值: (201039)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
4
+1
2013-8-11 18:14
0
雪    币: 50161
活跃值: (20625)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
5
非安全系列学习笔记很不错
2013-8-11 18:40
0
雪    币: 750
活跃值: (228)
能力值: ( LV9,RANK:780 )
在线值:
发帖
回帖
粉丝
6
呵呵 ,谢谢老大的鼓励
2013-8-11 18:58
0
雪    币: 167
活跃值: (190)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
7
保持关注ing
2013-8-11 19:41
0
雪    币: 218
活跃值: (62)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
大牛能推荐汇编语言的学习流程吗?
2013-8-11 21:00
0
雪    币: 9771
活跃值: (2596)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
写的很长很详细,不错~
2013-8-11 23:37
0
雪    币: 9
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
必须支持一个啊
2013-8-11 23:48
0
雪    币: 750
活跃值: (228)
能力值: ( LV9,RANK:780 )
在线值:
发帖
回帖
粉丝
11
我不是大牛 ,我也很菜
我学汇编是先看的王爽的8086汇编教程,然后是IczeLion的W32汇编教程,安装我第二章提到的RadASM汉化增强版 里面就附带了这些文档
2013-8-12 08:18
0
雪    币: 219
活跃值: (848)
能力值: (RANK:290 )
在线值:
发帖
回帖
粉丝
12
顶~ 我昨天那个OBECJT_type地址多移位了一次导致整篇文章错误 已经修正~
2013-8-12 10:51
0
雪    币: 750
活跃值: (228)
能力值: ( LV9,RANK:780 )
在线值:
发帖
回帖
粉丝
13
额 ,我现在还没时间研究OBECJT ,等我的学习笔记同步了可能会引用你的内容
2013-8-12 17:16
0
雪    币: 707
活跃值: (1301)
能力值: ( LV9,RANK:190 )
在线值:
发帖
回帖
粉丝
14
我是来吸精的!学习
2013-8-12 17:30
0
雪    币: 93
活跃值: (40)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
15
支持非安全大大分享学习经验!!!
2013-8-12 21:31
0
游客
登录 | 注册 方可回帖
返回
//