2016-01-26 4 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

Смежные вопросы