2014-11-24 82 views
3

我正在学习MASM汇编程序的汇编语言,当我尝试使用此命令组装一个简单文件时,我卡住了:ml /c test.asm 和该test.asm文件看起来像:[MASM]另一个'不能使用32位地址的16位寄存器'错误

.386 
.model flat 
.code 
MOV BP,WORD PTR[BP+4] 
END 

那么问题就来了:

微软(R)宏汇编版本6.14.8444

版权所有(C)百万分之一oft Corp 1981-1997。版权所有。

组装:TEST.ASM

TEST.ASM(4):错误A2155:不能使用的16位与32位地址

问题是寄存器,

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

和我怎样才能让我的代码通过?

+6

是的,你没有。这就是平面模型的含义。 – 2014-11-24 04:00:32

+1

好吧....我修改了我的代码,并将模型更改为小'.MODEL SMALL',并且似乎ml让我的代码通过。 – wangkaibule 2014-11-24 08:36:37

回答

3

我做了一些研究和这里是我所学到

.MODEL指令

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

的语法是:.MODEL memorymodel, options-optional

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

平面模型是在所有代码类似于微小模型和在存储器的 单个32位-addressable块数据去。

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

所以指令.386是可选的,如果我不希望使用平板模式(看here

这里有一些参考

1 .MODEL

2 Logical Segments and Memory Model Directives

相关问题