表达式语法错误:如何定义数组?

问题描述:

我使用DosBox在程序集中。表达式语法错误:如何定义数组?

我在定义一个整数向量时遇到问题;我使用:

vect: db ‐10, ‐8, ‐3 

当汇编程序与NASM时,汇编程序告诉我'表达式语法错误'。 我不明白为什么,当我使用emu8086效果很好,甚至在网上阅读时,我看到一家承运商宣称这种方式。它会是什么?

+0

什么是“屁股”?这是否是Gnu汇编程序自动修正的错字,“as”?或者你是否像使用标签所建议的那样使用NASM? –

+0

另外,为什么你用'nasm'标记呢?无论如何,也许你的汇编程序希望每个数据库有一个值,以便将它们分成多行。也可能它不喜欢有符号的数字,所以也许转换为无符号的等价物。如果一切都失败了,请参考你的汇编程序手册...... – Jester

+0

看来问题在于你的复制和粘贴(或者你传送的代码)在每个数字前面都加上了不可打印的字符。我注意到,当我复制并粘贴从你的问题的行,我最终与输入流中的不可打印字符,我不得不在我的文本编辑器中手动删除。那些额外的不可打印字符正在导致NASM窒息。 –

从标签中删除冒号。
许多汇编程序只有在标签出现在实际指令之前或者自己在一行时才接受冒号。
db不是一条指令,而是一条指令。

vect db ‐10, ‐8, ‐3 

定义数据时不识别冒号。

+3

这里的问题是他的例子中的负号(每个值之前)似乎不是ASCII为'-'。似乎是一个UTF编码形式。如果您将实际示例复制并粘贴到_nano_等编辑器中,您可以看到额外的不可打印字符。他们正在导致_NASM_窒息。对于此用法,冒号在_NASM_中完全可以接受。 –