masm Target mov ax bx jmp Target First
標籤(masm範例) 程式碼標籤以: 結束 Target: mov ax, bx jmp Target 資料標籤, 不可加: First BYTE 10 4
MASM之註解 由分號(;)起始。或區段註解, 由COMMENT xx 設定符號 xx 開 始, 至 xx 結束 。如: inc EAX ; EAX=EAX+1 COMMENT $ (此例xx為$) this line is a comment this line also is a comment $ 13
BYTE及SBYTE(定義位元組)及SBYTE( 定義有號位元組) 如: Value 1 BYTE 10 h Value 2 SBYTE -100 變數名稱: 上例之Value 1, Value 2 資料 10 h(16進位) 資料 100(十進位) 17
BYTE及SBYTE早期為DB DB指引: BYTE, SBYTE早期可以DB 取代 Value 1 DB 10 h Value 2 DB -100 18
WORD及SWORD早期版本 DW Word 1 WORD 65535 Word 2 SWORD – 32768 早期版本 DW Word 1 DW 65535 Word 2 DW – 32768 22
字組陳列(Array of Words) my. List WORD 1, 2, 3, 4, 5 位 移 值 數 值 my. List+00 1 2 my. List+02 3 my. List+04 4 my. List+06 23
小印地安排序(例) 如: d 1 DWORD 12345678 h MSB LSB 位 移 值 數 值 d 1+01 78 h 56 h d 1+02 34 h d 1+03 12 h d 1+04 25
大印地安排序(例) 如: d 1 DWORD 12345678 h MSB LSB 位 移 值 數 值 d 1+01 12 h 34 h d 1+02 56 h d 1+03 78 h d 1+04 27
宣告未初始資料(比較). data Smallarray. data ? Bigarray DWORD 10 DUP(0) DWORD 5000 DUP(? ) 下面的程式碼產生的編譯後程式會 比上的程式多 20000位元組. data Smallarray Bigarray DWORD 10 DUP(0) 5000 DUP(? ) 29
重新定義常數 count=6000 array db count DUP(0) Count 0, 0, 0…. count=5 共 6000個0 mov al, count mov al, 5 count=10 mov al, count 42
等號指引(範例) 例: count=500 mov al, count 組譯後產生 mov al, 500 48
EQU範例 Matrix 1 equ Matrix 2 equ. data M 1 WORD M 2 WORD M 1 M 2 10*10 <10*10> Matrix 1 Matrix 2 WORD 運算式(數值 ) 文字<> 100 “ 10*10” 50
SEGMENT、ENDS 指令功能: 定義一個區段,其擁有屬性 align (byte, word, dword, para, Page), combine (PUBLIC, STACK, COMMON, …), use, class。 相關指令 指令格式: Name SEGMENT [[READONLY]] [[align]][[combine]][[use ]][[‘class’]] … Name ENDS 指令範例: Test SEGMENT word //敘述 … Test ENDS . DATA? . STACK SEGMENT ENDS. MODEL 54
- Slides: 64