指定汇编程序识别新指令

MASM在默认情况下只汇编16位8086处理器的指令;如果需要使用80186及以后处理器新增的指令,必须使用处理器选择伪指令,如下表所示。
例如,当源程序中使用了80286新增的指令时,应该在程序中加上.286或.286P伪指令;若想利用32位寄存器完成32位操作,则必须加上.386及以上处理器的选择伪指令。

处理器选择伪指令
伪指令
功能
.8086
仅接受8086指令(默认状态)
.186
接受80186指令
.286
接受除特权指令外的80286指令
.286P
接受全部80286指令,包括特权指令
.386
接受除特权指令外的80386指令
.386P
接受全部80386指令,包括特权指令
.486
接受除特权指令外的80486指令,包括浮点指令
.486P
接受全部80486指令,包括特权指令和浮点指令|注:
.8087
接受8087数学协处理器指令
.287
接受80287数学协处理器指令
.387
接受80387数学协处理器指令
.No87
取消使用协处理器指令
.586
接受除特权指令外的Pentium指令
.586P
接受全部Pentium指令
.686
接受除特权指令外的Pentium Pro指令
.686P
接受全部Pentium Pro指令
.MMX
接受MMX指令
.K3D
接受AMD处理器的3D指令
.XMM
接受SSE,SSE2和SSE3指令
注:.586 / .586P由MASM6.11引入;
.686 / .686P / .MMX由MASM6.12引入;
.K3D由MASM6.13引入;
.XMM由MASM6.14引入,MASM6.15支持SSE2指令,MASM8.0支持SSE3指令。
另外,书写.386及以后的处理器选择伪指令需要留心其位置,如果书写在存储模型 MODEL指令之后,该程序将默认采用实方式和虚拟方式使用的16位段(默认是16位地址 和操作数长度);如果书写在存储模型MODEL指令之前,该程序将默认采用保护方式使用 的32位段(默认是32位地址和操作数长度)。