我从NASM文档pdf第46页复制粘贴了以下代码:
%substr mychar ’xyzw’ 1 ; equivalent to %define mychar ’x’
组装后我收到以下错误:
`%substr` requires string as second parameter
但是我知道我将'xyzw'更改为'xyzw'或“xyzw”它会变得很好。那么我在这里失踪了什么?
答案 0 :(得分:1)
正确的语法显示在online documentation
中%substr mychar 'xyzw' 1 ; equivalent to %define mychar 'x'
一般来说,对于预处理程序字符串函数,它会讨论字符串和字符串文字,这些文字解释为here,可以用单引号,双引号和反引号括起来:
字符串常量是在某些伪指令的上下文中使用的字符串,即DB系列和INCBIN(它表示文件名。)它们也用于某些预处理程序指令。
字符串常量看起来像一个字符常量,只有更长。
关于character constants(实际解释分隔符的地方):
字符串最多由八个字符组成,用单引号(
'...'
),双引号("..."
)或反引号(`...`
)括起来。单引号或双引号等同于NASM(当然,用单引号围绕常量允许双引号出现在其中,反之亦然);这些内容逐字表示。反引号中包含的字符串支持特殊字符的C风格-escapes。
正如在评论中所说的那样,很可能PDF文字被一个文字处理器搞砸了,因为它太渴望排版好的字符而不是正确的字符。