Microsoft Assembler - MASM
鑑於 8086/8088 用於 IBM PC,而作業系統通常來自微軟,微軟的彙編程式 MASM 多年來一直是事實上的標準。它嚴格遵循英特爾的語法,但允許一些方便但鬆散的語法(事後看來)只會導致程式碼中的混淆和錯誤。
一個完美的例子如下:
MaxSize EQU 16 ; Define a constant
Symbol DW 0x1234 ; Define a 16-bit WORD called Symbol to hold 0x1234
MOV AX, 10 ; AX now holds 10
MOV BX, MaxSize ; BX now holds 16
MOV CX, Symbol ; ????
最後的 MOV
指令是否將 Symbol
的內容放入 CX
,或將 Symbol
的地址放入 CX
?CX
最終是以 0x1234
還是 0x0102
(或其他什麼)?事實證明,CX
以 0x1234
結束 - 如果你想要地址,你需要使用 OFFSET
說明符
MOV AX, [Symbol] ; Contents of Symbol
MOV CX, OFFSET Symbol ; Address of Symbol