2016-11-20 101 views
0

我在emu8086中編寫了這段代碼,它在模擬器中很好,但是當我試圖用NASM編譯時,它會拋出錯誤:「操作大小未指定」,幫助某人?NASM沒有編譯我的彙編代碼

add bx,[3565] 
sub bx,0xcc 
mov [bx],0CCh 
+4

當然,NASM也告訴你哪一行代碼發現了錯誤? 'mov [bx],0CCh'需要大小說明符,例如, 'mov byte [bx],0CCh'。另外,'add bx,[3565]'看起來很奇怪。爲什麼你會嘗試從偏移量3565的內存中讀取數據? – Michael

回答

0

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。只需用調試器打開它,你就會明白爲什麼。