2016-01-26 119 views
-2

我嘗試編寫一個程序,詢問用戶名字並用他的名字向用戶致意。錯誤是逗號,冒號或行結束符。我該如何解決這個問題?我無法弄清楚我要糾正的地方。我的代碼在彙編中出了什麼問題?

%include "asm_io.inc" 

segment .data 
MES DB 10,13,'ENTER A STRING:$' 
BUF DB 255,256, DUP, (0) 
MES1 DB 10,13,'HELLO $' 

segment .text 
global _asm_main 
_asm_main: 

enter 0,0 
pusha 

     MOV AX,DATA 
     MOV DS,AX     
     MOV AH,09H     

     LEA DX,MES 
     INT 21H 

     MOV AH,0aH     
     LEA DX,BUF 
     INT 21H 

     MOV AH,09H     
     LEA DX,buf 
     INT 21H 

     LEA SI,BUF    

     MOV AX,0 
     MOV AL,BYTE PTR [SI] 
     ADD SI,AX 
     MOV BYTE PTR [SI+1],'$' 


     MOV AH,09H 
     LEA DX,BUF+2 
     INT 21H 

     MOV AX,4C00H 
     INT 21H 

     popa 

mov ax, 0 
leave 
ret 
+1

正確_what_?您尚未描述當前代碼的問題。 – Michael

+0

錯誤是逗號,冒號或行結尾符合第34行和第36行 – geekangel

+0

可能是'BYTE PTR [SI]'和'BYTE PTR [SI + 1]'中間接尋址的語法問題。你在用什麼彙編語言? – zx485

回答

1

BYTE PTR是MASM/TASM語法。您發佈的代碼看起來(大部分)就像是爲NASM編寫的,因此您應該刪除PTR(即使用MOV AL, BYTE [SI]等)。

+0

我該如何轉換nasm的代碼? @Michael – geekangel

+0

我已經在我的答案中解釋過了。 – Michael

+0

又有很多錯誤。我無法弄清楚正確的代碼。 :( – geekangel

相關問題