Win32 匯編工具主要有 MASM 和 TASM; 我選擇前者, 理由是使用范圍廣, 便於交流. 根據介紹, 我先下載了 MASM32(http://w
; Test2_1.asm .386 .model flat, stdcall include Windows.inc include user32.
盡管是學習 Win32 匯編, 也應該先從控制台程序起步; 因為一個基本的 Windows 窗口都需要不少代碼. 為了查看測試結果, 首先需要知道輸出呈現
類型描述類型縮寫位數字節數浮點數有效位數值范圍字節BYTEDB81 0..255有符號字節SBYTEDB81 -128..127字WORDDW162 0..6
聲明數組實例:; Test5_1.asm .386 .model flat, stdcall include msvcrt.inc includelib m
例一; Test6_1.asm .386 .model flat, stdcall include msvcrt.inc includelib msvcrt
算術運算符名稱優先級()圓括號1+,-正、負2*,/乘、除3MOD取模3+,-加、減4算術運算符示例:; Test7_1.asm .386 .model f
定義子過程的偽指令: PROC、ENDP; Test8_1.asm .386 .model flat, stdcall include msvcrt.inc
定義子過程的偽指令: PROC、ENDP; Test9_1.asm .386 .model flat, stdcall include Windows.
TYPE: 獲取類型大小, 對數組是獲取每個元素的大小; Test10_1.asm .386 .model flat, stdcall include W
32 位的寄存器容量是 4 字節, 如果內存中的數據都按 4*n 字節對齊, 肯定會加快吞吐速度; 但事實並非如此, 不同大小的數據可能會讓寄存器別別扭扭
PTR: 指定要操作的數據尺寸; Test12_1.asm .386 .model flat, stdcall include Windows.inc i
=、EQU、TEXTEQU 功能差不多, 它們定義的符號都將在編譯前輩替換成它們指定的常量值. 相比之下 EQU 更好用些. = 舉例; Test13_
[地址] 是取地址指向的內容:; Test14_1.asm .386 .model flat, stdcall include Windows.inc i
Loop 是反復執行; 從哪反復? 這要用到 標號; 反復幾次? 把反復的次數告訴 ECX 寄存器即可. 笨辦法計算 3 * 8 = 24; Test1
通用寄存器EAX累加(Accumulator)寄存器AX(AH、AL)常用於乘、除法和函數返回值EBX基址(Base)寄存器BX(BH、BL)常做內存數據的指
記得剛學多線程的時候, 碰到一個結構://Delphi 的語法描述 PContext = ^TContext; _CONTEXT = record Con
由於 棧 是由高到低使用的, 所以新壓入的數據的位置更低. ESP 中的指針將一直指向這個新位置, 所以 ESP 中的地址數據是動態的. 每次 PUSH