九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
【新提醒】獲取并顯示當(dāng)前內(nèi)存使用情況(支持4G以上內(nèi)存),Win32匯編語(yǔ)言案例解析,典型案例解析(VIP免費(fèi)),魚(yú)C論壇
該系列案例解析按級(jí)別類(lèi)別排列,如:

  • [基礎(chǔ)知識(shí)]: 類(lèi)別為基礎(chǔ)知識(shí)
  • 1.2: 級(jí)別,第一個(gè)1表示屬于最簡(jiǎn)單級(jí)別,后邊的2僅為案例的序數(shù)(不代表難度增加(⊙o⊙)哦)


要求:獲取并顯示當(dāng)前內(nèi)存使用情況(支持4G以上內(nèi)存)

演示截圖:


代碼及詳細(xì)注釋?zhuān)?/font>

本帖隱藏的內(nèi)容

  1. ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  2. ; by 小甲魚(yú), http://www.fishc.com
  3. ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  4. ; MemInfo.asm
  5. ; 獲取并顯示當(dāng)前內(nèi)存使用情況(支持4G以上內(nèi)存)
  6. ; 對(duì)于4G以上的內(nèi)存獲取,使用 GlobalMemoryStatus 會(huì)有很多問(wèn)題出現(xiàn)
  7. ; 這時(shí)候我們要用 GlobalMemoryStatusEx
  8. ; 注意,GlobalMemoryStatusEx 需要的 MEMORYSTATUSEX 結(jié)構(gòu)我們要自己定義
  9. ; ullTotalPhys 等成員是64位的,我們要自己定義
  10. ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  11. ; 使用 nmake 或下列命令進(jìn)行編譯和鏈接:
  12. ; ml /c /coff MemInfo.asm
  13. ; rc MemInfo.rc
  14. ; Link /subsystem:windows MemInfo.obj MemInfo.res
  15. ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  16.                 .386
  17.                 .model flat, stdcall
  18.                 option casemap :none
  19. ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  20. ; Include 文件定義
  21. ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  22. include                windows.inc
  23. include                user32.inc
  24. includelib        user32.lib
  25. include                kernel32.inc
  26. includelib        kernel32.lib
  27. ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  28. ; Equ 等值定義
  29. ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  30. ICO_MAIN        equ            1000
  31. DLG_MAIN        equ            100
  32. IDC_INFO        equ         101
  33. ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  34. ; 數(shù)據(jù)段
  35. ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  36.                 .data?

  37. hInstance        dd        ?
  38. hWinMain        dd        ?

  39.                 .const
  40. szInfo  db        '物理內(nèi)存總數(shù)     %I64d KB',0dh,0ah
  41.                 db        '空閑物理內(nèi)存     %I64d KB',0dh,0ah
  42.                 db        '虛擬內(nèi)存總數(shù)     %I64d KB',0dh,0ah
  43.                 db        '空閑虛擬內(nèi)存     %I64d KB',0dh,0ah
  44.                 db        '已用內(nèi)存比例     %d%%',0dh,0ah
  45.                 db        '———————————————',0dh,0ah
  46.                 db        '用戶地址空間總數(shù) %I64d KB',0dh,0ah
  47.                 db        '用戶可用地址空間 %I64d KB',0dh,0ah,0
  48.         
  49. DWORDDWORD STRUCT
  50.     lowDWORD    DWORD ?
  51.     highDWORD   DWORD ?
  52. DWORDDWORD ENDS

  53. MEMORYSTATUSEX STRUCT
  54.     dwLength           DWORD ?
  55.     dwMemoryLoad       DWORD ?
  56.     ullTotalPhys       DWORDDWORD <>
  57.     ullAvailPhys       DWORDDWORD <>
  58.     ullTotalPageFile   DWORDDWORD <>
  59.     ullAvailPageFile   DWORDDWORD <>
  60.     ullTotalVirtual    DWORDDWORD <>
  61.     ullAvailVirtual    DWORDDWORD <>
  62.     ullAvailExtendedVirtual  DWORDDWORD <>
  63. MEMORYSTATUSEX ENDS

  64. ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  65. ; 代碼段
  66. ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  67.                 .code
  68. ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  69. ; _Div1024這個(gè)函數(shù)干嘛呢?就是將大數(shù)除以1024,相當(dāng)于右移10位
  70. ; 兩個(gè)參數(shù)通過(guò)傳址調(diào)用,醬紫省下了多余的變量
  71. ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  72. _Div1024 proc   uses esi edi    _lowDWORD:DWORD, _highDWORD:DWORD
  73.         mov esi, _lowDWORD
  74.         mov edi, _highDWORD
  75.         mov eax, DWORD ptr [esi]
  76.         mov edx, DWORD ptr [edi]
  77.         shr eax, 10
  78.         mov ecx, edx
  79.         shl ecx, 22
  80.         or eax, ecx
  81.         mov DWORD ptr [esi], eax
  82.         shr edx, 10
  83.         mov DWORD ptr [edi], edx
  84.         
  85.         xor eax, eax
  86.         
  87.         ret
  88. _Div1024 endp
  89. ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  90. _GetMemInfo        proc
  91.                 local        @stMemInfo:MEMORYSTATUSEX  ; GlobalMemoryStatusEx需要
  92.                 local        @szBuffer[1024]:byte

  93.                 mov        @stMemInfo.dwLength,sizeof @stMemInfo
  94.                
  95.         invoke        GlobalMemoryStatusEx,addr @stMemInfo
  96.         
  97.         invoke  _Div1024, addr @stMemInfo.ullTotalPhys.lowDWORD, addr @stMemInfo.ullTotalPhys.highDWORD
  98.         invoke  _Div1024, addr @stMemInfo.ullAvailPhys.lowDWORD, addr @stMemInfo.ullAvailPhys.highDWORD
  99.         invoke  _Div1024, addr @stMemInfo.ullTotalPageFile.lowDWORD, addr @stMemInfo.ullTotalPageFile.highDWORD
  100.         invoke  _Div1024, addr @stMemInfo.ullAvailPageFile.lowDWORD, addr @stMemInfo.ullAvailPageFile.highDWORD
  101.         invoke  _Div1024, addr @stMemInfo.ullTotalVirtual.lowDWORD, addr @stMemInfo.ullTotalVirtual.highDWORD
  102.         invoke  _Div1024, addr @stMemInfo.ullAvailVirtual.lowDWORD, addr @stMemInfo.ullAvailVirtual.highDWORD
  103.         
  104.         invoke        wsprintf,addr @szBuffer,addr szInfo,\
  105.                         @stMemInfo.ullTotalPhys,@stMemInfo.ullAvailPhys,\
  106.                         @stMemInfo.ullTotalPageFile,@stMemInfo.ullAvailPageFile,\
  107.                         @stMemInfo.dwMemoryLoad,\
  108.                         @stMemInfo.ullTotalVirtual,@stMemInfo.ullAvailVirtual
  109.                
  110.         invoke        SetDlgItemText,hWinMain,IDC_INFO,addr @szBuffer
  111.                
  112.         ret

  113. _GetMemInfo        endp
  114. ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  115. _ProcDlgMain        proc        uses ebx edi esi hWnd,wMsg,wParam,lParam

  116.                 mov        eax,wMsg
  117.                 .if        eax ==        WM_TIMER
  118.                         call        _GetMemInfo
  119.                 .elseif        eax ==        WM_CLOSE
  120.                         invoke        KillTimer,hWnd,1
  121.                         invoke        EndDialog,hWnd,NULL
  122. ;********************************************************************
  123.                 .elseif        eax ==        WM_INITDIALOG
  124.                         push        hWnd
  125.                         pop        hWinMain
  126.                         invoke        LoadIcon,hInstance,ICO_MAIN
  127.                         invoke        SendMessage,hWnd,WM_SETICON,ICON_BIG,eax
  128.                         invoke        SetTimer,hWnd,1,1000,NULL
  129.                         call        _GetMemInfo
  130. ;********************************************************************
  131.                 .else
  132.                         mov        eax,FALSE
  133.                         ret
  134.                 .endif
  135.                 mov        eax,TRUE
  136.                 ret

  137. _ProcDlgMain        endp
  138. ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  139. start:
  140.                 invoke        GetModuleHandle,NULL
  141.                 mov        hInstance,eax
  142.                 invoke        DialogBoxParam,hInstance,DLG_MAIN,NULL,offset _ProcDlgMain,NULL
  143.                 invoke        ExitProcess,NULL
  144. ;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
  145.                 end        start
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服