0
我在emu8086中編寫了這段代碼,它在模擬器中很好,但是當我試圖用NASM編譯時,它會拋出錯誤:「操作大小未指定」,幫助某人?NASM沒有編譯我的彙編代碼
add bx,[3565]
sub bx,0xcc
mov [bx],0CCh
我在emu8086中編寫了這段代碼,它在模擬器中很好,但是當我試圖用NASM編譯時,它會拋出錯誤:「操作大小未指定」,幫助某人?NASM沒有編譯我的彙編代碼
add bx,[3565]
sub bx,0xcc
mov [bx],0CCh
NASM無法弄清楚你的意思是像mov [bx],0CCh
這樣的行。顯然, 這個設置爲0CCh。但是,你是否希望bx指向單個字節 ,短,長,...?這將在NASM中表現爲相當不言自明的 error: operation size not specified
。你能避免錯誤指定類型,如下圖所示:
SECTION .text
global start
start:
add bx,[3565]
sub bx,0xcc
mov byte [bx],0CCh
那會組裝就OK了......當然,不要嘗試運行它,因爲它是,它會產生EXCEPTION_ACCESS_VIOLATION
。只需用調試器打開它,你就會明白爲什麼。
當然,NASM也告訴你哪一行代碼發現了錯誤? 'mov [bx],0CCh'需要大小說明符,例如, 'mov byte [bx],0CCh'。另外,'add bx,[3565]'看起來很奇怪。爲什麼你會嘗試從偏移量3565的內存中讀取數據? – Michael