2014-11-24 84 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

相關問題