«Ожидаемая запятая после операнда 1» при определении последовательности байтов в NASM?

#assembly #nasm #x86-16

#сборка #nasm #x86-16

Вопрос:

Согласно документации NASM, следующее позволяет мне определить 64 000 неинициализированных байтов на метке Vid :

 Vid resb 64000
  

Согласно последующей документации, это должно позволить мне вместо этого инициализировать эти байты в 0xFF:

 Vid db 64000 dup (FFh)
  

Это, однако, приводит к ошибке error: comma expected after operand 1 .

Я также пытался:

  • Добавление двоеточия после имени символа Vid
  • Использование 0 или вопросительный знак для значения по умолчанию вместо FF (хотя FF — мое предполагаемое значение)
  • Использование меньшего количества байтов, например 64
  • Корректировка заглавных букв
  • Переставляю мой исходный файл так, чтобы эта директива отображалась в разных разделах и т. Д.
  • Добавление запятых между 64000, dup и (FFh) — что, очевидно, не работает

Я не могу найти в Интернете ничего, что указывало бы на то, что этот синтаксис изменился или что есть какие-либо случаи, когда он не должен работать.

В качестве важного фона я компилирую в bin файл и имею cpu 8086 директиву в своем исходном коде.

Комментарии:

1. Понятия не имею, что вы нашли dup в документации nasm. Это синтаксис masm. nasm использует times

2. @Jester раздел 3.2.1 здесь . Я предполагаю, что ошибка «начинается с NASM 2.15», поскольку этой версии, похоже, меньше года.

3. Мило! Это то, что я получаю за то, что браузер кэширует ссылку на старое руководство. Итак, возникает вопрос, использует ли Итан достаточно новую версию nasm?

4. Это то же сообщение об ошибке, которое я получаю от nasm 2.14.02. Так что действительно, ответ, по-видимому, звучит так: «обновите или используйте синтаксис TIMES».

5. @hobbs Это документация, на которую я смотрел, действительно, я должен был использовать TIMES в своей версии!

Ответ №1:

Преобразование комментария в ответ: DUP был добавлен в NASM только с версией 2.15 (выпущен в июне 2020 года). Для совместимости со старыми версиями используйте ВРЕМЯ, например times 64000 db 0xff .