[MASM]另一个'不能使用带有32位地址的16位寄存器'错误

时间:2014-11-24 03:57:14

标签: assembly masm

我正在使用MASM汇编程序学习汇编语言,当我尝试使用此命令汇编一个简单文件时,我遇到了问题:ml /c test.asm 并且test.asm文件看起来像:

.386
.model flat
.code
MOV BP,WORD PTR[BP+4]
END
然后问题出现了:

  

Microsoft(R)宏汇编程序版本6.14.8444

     

版权所有(C)Microsoft Corp 1981-1997。保留所有权利。

     

组装:test.asm

     

test.asm(4):错误A2155:不能使用带有32位地址的16位寄存器

问题是,

32位地址?我没有告诉汇编器使用32位地址。

如何通过我的代码?

1 个答案:

答案 0 :(得分:3)

我做了一些研究,这是我学到的东西

  

.MODEL指令

     
      
  • 允许使用简化的细分
  •   
  • 控制代码段的名称
  •   
  • 控制程序的默认距离。
  •   
     

语法为:.MODEL memorymodel, options-optional

     

和memorymodel可以是TINY, SMALL, COMPACT, MEDIUM, LARGE, HUGE,or FLAT

     

平面模型类似于微小模型,因为所有代码和数据都在   单个32位可寻址的内存块。

     

要编写平面模型程序,请指定.386或.486指令   之前。

所以如果我不想使用平面模型(看here

,指令.386是可选的

这里有一些参考文献

1 .MODEL

2 Logical Segments and Memory Model Directives