我已經聲明的變量:初始化變量的.bss裝配
section .bss
var resb 1
我想在我的程序初始化這價值255
。
mov [var], 255 ;error on this line
當編譯我得到的錯誤如下:
program.asm:123: error: invalid size for operand 1
我在做什麼錯在這裏?
我已經聲明的變量:初始化變量的.bss裝配
section .bss
var resb 1
我想在我的程序初始化這價值255
。
mov [var], 255 ;error on this line
當編譯我得到的錯誤如下:
program.asm:123: error: invalid size for operand 1
我在做什麼錯在這裏?
是這樣工作的,你必須使用一個寄存器數據分配給由符號[myVar的]尋址地址:
mov eax,255
mov [myVar],eax
PRINT_DEC 2,myVar
我知道問題的日期...... –
您可以在不通過寄存器的情況下將立即值(如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個字節的變量。 –
怎麼樣'MOV字節[VAR],255'? – Michael
沒有那個人的運氣@Michael – ojhawkins
在'nasm'(你已經標記了你的問題)中工作正常。你使用了哪一個精確的彙編器,以及你傳遞給它的選項? – Michael