注册 登录
编程论坛 汇编论坛

一个查看系统信息的汇编小程序

tigerdown 发布于 2020-08-13 16:02, 5177 次点击
这程序用了GetSystemInfo.inc文件来实现的,我把源码贴在这儿,并附上了在WinXP,Win10的运行结果,有兴趣者可试一下。

ASM file
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
        .386
        .model flat, stdcall
        option casemap :none
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Include Îļt¶¨òå
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
include        windows.inc
include        user32.inc
includelib    user32.lib
include        kernel32.inc
includelib    kernel32.lib
include        gdi32.inc
includelib    gdi32.lib
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Equ μèÖ춨òå
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
ICO_MAIN    equ        1000h    ;í¼±ê
DLG_MAIN    equ        1
IDC_INFO    equ        101
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; êy¾Y¶Î
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
        .data?

hInstance    dd        ?
szBuffer    db    4096 dup (?)
dqFreq        dq        ? ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; ′úÂë¶Î
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
        .code

include        GetSystemInfo.inc
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
_ProcDlgMain    proc    uses ebx edi esi hWnd,wMsg,wParam,lParam

        mov    eax,wMsg
        .if    eax == WM_CLOSE
            invoke    EndDialog,hWnd,NULL
        .elseif    eax == WM_INITDIALOG
            invoke    LoadIcon,hInstance,ICO_MAIN
            invoke    SendMessage,hWnd,WM_SETICON,ICON_BIG,eax

            invoke    _MySystemInfo, addr szBuffer ;;;;;;;;;;;;;;;
            invoke    SetDlgItemText,hWnd,IDC_INFO,addr szBuffer  ;;
        .elseif    eax == WM_COMMAND
            mov    eax,wParam
            .if    ax == IDOK
                invoke    EndDialog,hWnd,NULL
            .endif
        .else
            mov    eax,FALSE
            ret
        .endif
        mov    eax,TRUE
        ret

_ProcDlgMain    endp
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
start:
        invoke    GetModuleHandle,NULL
        mov    hInstance,eax
        invoke    DialogBoxParam,hInstance,DLG_MAIN,NULL,offset _ProcDlgMain,NULL
        invoke    ExitProcess,NULL
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
        end    start



RC file

//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
#include        <resource.h>
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
#define    ICO_MAIN        0x1000   
#define    DLG_MAIN        1
#define IDC_INFO        101
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
ICO_MAIN    ICON        "ap.ico"
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
DLG_MAIN DIALOG 138, 123, 231, 139
STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Computer System Info"
FONT 9, "ËÎìå"
{
 EDITTEXT IDC_INFO, 5, 5, 220, 110, ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_READONLY | WS_BORDER | WS_VSCROLL | WS_TABSTOP
 DEFPUSHBUTTON "Close", IDOK, 175, 120, 50, 14

}
//>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>




[此贴子已经被作者于2020-8-13 18:12编辑过]

6 回复
#2
tigerdown2020-08-13 16:14
ico file[附件]1[/附件
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录
#3
tigerdown2020-08-13 16:16
ico file

只有本站会员才能查看附件,请 登录
#4
Valenciax2020-08-13 18:59
很好,现在写win32汇编的很少了,记得楼主之前也发过几个贴,能够维持写程式的爱好,挺难得的。

win32汇编我写得不多,只写了几个小游戏,这是其中一个,flappy bird,挖出来勉怀一下。

只有本站会员才能查看附件,请 登录
#5
tigerdown2020-08-13 20:30
很不错,要用很多行源码来写的吧,不容易啊!不知道在64位下能运行吗。
#6
Valenciax2020-08-13 22:01
回复 5楼 tigerdown
源码大约2000多行,可以下载主程式回去试一下
链接:https://pan.baidu.com/s/1bhOg6wv6gK_RuYNFMU2L1Q
提取码:invs

上下左右:方向飞
空白:开始游戏,小爬升
F1:音效开关
F2,F3:极限飞行,可穿过柱
#7
tigerdown2020-08-14 09:19
谢谢版主分享。
1