将%substr与NASM汇编程序一起使用

时间:2017-02-18 17:03:29

标签: assembly x86 nasm

我从NASM文档pdf第46页复制粘贴了以下代码:

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

组装后我收到以下错误:

`%substr` requires string as second parameter

但是我知道我将'xyzw'更改为'xyzw'或“xyzw”它会变得很好。那么我在这里失踪了什么?

1 个答案:

答案 0 :(得分:1)

正确的语法显示在online documentation

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

一般来说,对于预处理程序字符串函数,它会讨论字符串和字符串文字,这些文字解释为here,可以用单引号,双引号和反引号括起来:

  

字符串常量是在某些伪指令的上下文中使用的字符串,即DB系列和INCBIN(它表示文件名。)它们也用于某些预处理程序指令。

     

字符串常量看起来像一个字符常量,只有更长。

关于character constants(实际解释分隔符的地方):

  

字符串最多由八个字符组成,用单引号('...'),双引号("...")或反引号(`...`)括起来。单引号或双引号等同于NASM(当然,用单引号围绕常量允许双引号出现在其中,反之亦然);这些内容逐字表示。反引号中包含的字符串支持特殊字符的C风格-escapes。

正如在评论中所说的那样,很可能PDF文字被一个文字处理器搞砸了,因为它太渴望排版好的字符而不是正确的字符。