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地址放入 CXCX 最終是以 0x1234 還是 0x0102(或其他什麼)?事實證明,CX0x1234 結束 - 如果你想要地址,你需要使用 OFFSET 說明符

             MOV     AX, [Symbol]      ; Contents of Symbol
             MOV     CX, OFFSET Symbol ; Address of Symbol