深入理解 MASM 巨集:從字串常數到編譯器展開
前言 許多組語開發者習慣使用副程式(PROC)而非巨集,擔心巨集會導致程式碼膨脹。然而,巨集在編譯期展開,能產生極精簡的機器碼,甚至優於手寫的資料段定義。本文透
MASM 組語開發環境選擇指南:RedASM vs EditPlus 深度評測與配置
對於 MASM 組語開發者,一個稱手的 IDE/編輯器能顯著提升效率。本文深度對比兩大主流選擇 —— RedASM(專用 IDE)與 EditPlus(通用編輯
Win32 API 實用技巧:讓 TrackPopupMenuEx 支援遞迴彈出子選單
在 Win32 視窗程式設計中,在彈出式選單項目中再次彈出子選單(巢狀彈出選單)是常見需求。許多開發者嘗試自繪選單、模擬視窗或複雜的 Hook 機制,實則 Wi
x86 保護模式控制轉移深度解析:任務內特權級轉換與任務切換(上)
在 x86 保護模式下,控制轉移是系統程式設計的核心。本文系統闡述同一任務內的控制轉移,重點剖析段間轉移的特權級檢查機制,為理解呼叫門、中斷門、任務切換奠定基礎
組語處理 Win32 訊息陷阱:SHR 移位指令與符號位延伸的正確處理
在處理 WM_MOUSEWHEEL 等將多項資訊打包於 wParam/lParam 的 Win32 訊息時,常需用移位指令擷取高/低字。若不當使用 SHR(邏輯
組語小技巧:利用 PTR 操作符實現靈活的資料型別轉換
在 x86 組語中,型別轉換 是頻繁需求。MASM/TASM 提供的 BYTE PTR、WORD PTR、DWORD PTR、QWORD PTR 等操作符,讓我
x86 組語實戰:從實模式切換到保護模式完整範例解析
本文深入剖析兩個經典的 x86 組語範例,詳細說明如何在 80386+ 處理器上實現實模式與保護模式的雙向切換,並展示保護模式下的分段記憶體管理、GDT/LDT
Win32 組語開發:EBX/ESI/EDI 寄存器使用的關鍵注意事項
在 Win32 組語程式設計中,EBX、ESI、EDI 屬於「非易失性」(Non-volatile)或稱「被調用者保存」(Callee-saved)寄存器。根據
x86 保護模式核心架構:控制暫存器 (CR0-CR3) 與系統位址暫存器 (GDTR/IDTR/LDTR/TR) 完整解析
前言 80386 引入的保護模式架構,核心在於四組 32 位元控制暫存器 (CR0-CR3) 與四組系統位址暫存器 (GDTR, IDTR, LDTR, TR)
Win32 API 資源管理:無需釋放的 GDI 物件與字串資源
前言 Win32 程式設計中,GDI 物件、核心物件、記憶體區塊等資源通常需配對釋放 (DeleteObject, CloseHandle, GlobalFre
組合語言結構體存取最佳化:直接型別轉換取代 ASSUME 指令
前言 在處理 Windows 訊息 (如 WM_NOTIFY) 時,lParam 常指向結構體 (如 NMHDR)。傳統寫法使用 ASSUME 指令切換暫存器型
組合語言資料無型別本質解析:BYTE/WORD/DWORD 互轉與緩衝區操作實例
前言 組合語言常被說「資料無型別」,這並非指缺乏 BYTE/WORD/DWORD/QWORD/TBYTE 等定義偽指令,而是指 型別僅存在於組譯期,執行期記憶體
組合語言 LEA 指令進階用法:替代乘法運算與位址計算最佳化
前言 LEA (Load Effective Address) 原本用於計算記憶體操作數的有效位址,但因其能在單指令中完成「基址 + 索引×比例 + 位移」的算
組合語言 XOR 指令妙用:雙重異或還原數值與加密應用
前言 XOR (Exclusive OR) 是組合語言中最基礎也最強大的邏輯指令之一。其核心特性 —— 對同一數值執行兩次 XOR 可還原原值,廣泛應用於數值交
組合語言技巧:利用 CALL/POP 在執行期取得當前指令位址 (EIP)
前言 在組合語言中,有時需要在執行期動態取得當前程式碼的位址 (如位置無關程式碼、Shellcode、動態解密)。x86 沒有直接讀取 EIP 的指令,但巧用
VxD 核心程式設計:Client Register Structure 客戶暫存器結構完整解析與 INT 21h 實戰範例
前言 VxD 作為系統監管者,透過修改被中斷程式的暫存器映像來影響其行為。Client_Reg_Struc 正是 VMM 保存中斷點暫存器狀態的關鍵結構。本文完
Windows 視窗程式設計:在標題列繪製自訂圖形 (WM_NCPAINT 與 GetWindowDC)
前言 在標準視窗標題列上繪製自訂圖形(如公司 Logo、狀態指示燈、動畫),是提升應用程式辨識度的常用技巧。本文說明兩種核心方法:處理 WM_NCPAINT 非