我在第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
答案 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