2014-03-27 77 views
1

我已經聲明的變量:初始化變量的.bss裝配

section .bss 
var resb 1 

我想在我的程序初始化這價值255

mov [var], 255 ;error on this line 

當編譯我得到的錯誤如下:

program.asm:123: error: invalid size for operand 1 

我在做什麼錯在這裏?

+2

怎麼樣'MOV字節[VAR],255'? – Michael

+0

沒有那個人的運氣@Michael – ojhawkins

+0

在'nasm'(你已經標記了你的問題)中工作正常。你使用了哪一個精確的彙編器,以及你傳遞給它的選項? – Michael

回答

-1

是這樣工作的,你必須使用一個寄存器數據分配給由符號[myVar的]尋址地址:

mov eax,255 
mov [myVar],eax 

PRINT_DEC 2,myVar 
+0

我知道問題的日期...... –

+0

您可以在不通過寄存器的情況下將立即值(如255)分配給內存位置。 OPCODE信息'C6/0 MOV r/m8,imm8'| '把imm8移到r/m8.'。請參閱x86 [指令集引用](http://x86.renejeschke.de/html/file_module_x86_id_176.html)。將一個8位值移動到內存中的一個8位對象可以用'mov byte [myVar],255'來完成。 'byte'表示'myVar'指向的內存對象的大小。原始的海報想要將一個8位的值移動到'myvar',你的代碼不正確地嘗試將32位移動到一個聲明爲1個字節的變量。 –