欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

这段代码主程序部分够简练吧,还可以优化? (1千字)

这段代码主程序部分够简练吧,还可以优化? (1千字)

;发声部分不在优化之列
.586
.model flat, stdcall
option casemap :none  ; case sensitive
include c:\hd\hd.h
include c:\hd\mac.h
int_num  equ    5
;;--------------
    .DATA
sztit  db "By hume,2002",0
errmsg  db "Error Ocurred!",0
msg    db "Ring0 Succ!",0
;;-----------------------------------------
    .CODE
__Start:
  assume fs:nothing
        call    set_seh
        lea    eax,errmsg
        jmp    ExitP
set_seh:
        push    dword ptr fs:[0]
        mov    fs:[0],esp
       
        push    0
        sidt    [esp-2]
        pop    ebx
        add    ebx,int_num*8+4
        mov    ecx,[ebx]
        mov    cx,[ebx-4]        ;ecx=int Des offset
        lea    esi,my_int
        mov    [ebx-4],si
        shr    esi,16
        mov    [ebx+2],si
        int    int_num
        mov    [ebx-4],cx
        shr    ecx,16
        mov    [ebx+2],cx
        pop    dword ptr fs:[0]
        mov    dword ptr [esp],offset  msg
        pop    eax
ExitP:
        invoke    MessageBox,0,eax,addr sztit,40h+MB_SYSTEMMODAL
        invoke    ExitProcess,0
my_int:  ; now in Ring-0 
  mov  ecx,50
@lop1:
  push  ecx
  call  beeps
  pop  ecx
  loop  @lop1
  iretd    ; return to caller       
beeps:     
pushad
        mov ax, 1000
        mov bx, 800
        mov cx, ax
        mov al, 0b6h
        out 43h, al
        mov dx, 0012h
        mov ax, 34dch
        div cx
        out 42h, al
        mov al, ah
        out 42h, al
        in al, 61h
        mov ah, al
        or al, 03h
        out 61h, al
        l1:
                mov ecx, 4680
        l2:
                loop l2
                dec bx
                jnz l1
        mov al, ah
        out 61h, al
       
popad
ret
END    __Start

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功