2017-02-18 64 views
0

скопировать-вставить следующий код из документации PDF Страница NASM 46:Использование% зиЬзЬг с NASM ассемблер

%substr mychar ’xyzw’ 1 ; equivalent to %define mychar ’x’ 

И после сборки его я получаю следующее сообщение об ошибке:

`%substr` requires string as second parameter 

Но atfer Я меняю «xyzw» на «xyzw» или «xyzw», он отлично вскакивает. Так что мне здесь не хватает?

+1

Скорее всего, они испортили PDF - возможно, какой-то текстовый процессор попытался быть слишком умным о котировках. –

ответ

1

Правильный синтаксис показан в online documentation

%substr mychar 'xyzw' 1  ; equivalent to %define mychar 'x' 

В общем, для препроцессора строковых функций, которые он говорит о строках и строковых литералов, которые разъясняются here и могут быть заключены в одинарные кавычки, двойные кавычки и обратные кавычки :

String constants are character strings used in the context of some pseudo-instructions, namely the DB family and INCBIN (where it represents a filename.) They are also used in certain preprocessor directives.

A string constant looks like a character constant, only longer.

И о character constants (где разделители фактически объяснены):

A character string consists of up to eight characters enclosed in either single quotes ('...'), double quotes ("...") or backquotes (`...`). Single or double quotes are equivalent to NASM (except of course that surrounding the constant with single quotes allows double quotes to appear within it and vice versa); the contents of those are represented verbatim. Strings enclosed in backquotes support C-style -escapes for special characters.

Как сказано в комментарии, скорее всего, PDF-файл был испорчен текстовым процессором, который слишком стремился набирать красивые символы вместо правильных.

+0

Спасибо, но как это не работает с обратными кавычками? существуют ли какие-либо известные случаи (инструкции), где строка принимается с одним типом кавычек, а не с другими? –

+0

Он работает с обратными цитатами, которые я считаю. Ваш код не работает, использует какие-то симпатичные кавычки, а не из них '', ', '' 'group. Yours' ''. – Ped7g

+0

@MaykelJakson Он работает с backquotes '\' ', но не с символом, который вы вырезать и вставить '' '. –