预期逗号,冒号或行尾

时间:2017-06-23 08:57:06

标签: assembly x86 nasm x86-16

我在第13行中有错误,叫做"逗号,冒号或行尾预期"。我想写一个程序,它会在X,Y的位置上写下ascii heart。如你所见,我使用模式

  

(Y * 80 + X)* 2

 org 100h

MOV AX,0A000H
MOV ES,AX
MOV AX,poz_y
MOV BX,80
MUL BX
ADD AX,poz_x
MOV BX,2
MUL BX
MOV DI,AX
MOV AL,9825
MOV BYTE PTR ES:[DI],AL
poz_x dw 160 
poz_y dw 100 

现在:

感谢大家的回复:)现在我试图显示ASCII字符,编译但不做任何事情:

 org 100h

MOV AX,0b800h
MOV ES,AX
MOV AX,poz_y
MOV BX,80
MUL BX
ADD AX,poz_x
MOV BX,2
MUL BX
MOV DI,AX
MOV [ES:DI], word 2d04h     

mov ax, 0x4c00
int 21h

poz_x dw 160 
poz_y dw 100 

2 个答案:

答案 0 :(得分:1)

PTR运算符仅用于MASM。

NASM不使用它,因此为了汇编代码,您需要将其删除:

MOV AX,0A000H
MOV ES,AX
MOV AX,poz_y
MOV BX,80
MUL BX
ADD AX,poz_x
MOV BX,2
MUL BX
MOV DI,AX
MOV AL,9825
MOV BYTE [ES:DI],AL      ; ← change this line
poz_x dw 160 
poz_y dw 100 

请注意BYTE isn't actually needed here - 汇编程序可以告诉您存储BYTE大小的值,因为源寄存器是BYTE大小的AL。但是,包括它并没有什么坏处。

答案 1 :(得分:0)

感谢您的帮助:)

 org 100h

MOV AX,0b800h
MOV ES,AX
MOV AX,poz_y
MOV BX,80
MUL BX
ADD AX,poz_x
MOV BX,2
MUL BX
MOV DI,AX
MOV [ES:DI], word 2d04h     

mov ax, 0x4c00
int 21h

poz_x dw 160 
poz_y dw 100