MASM中的宽字符字符串文字?

时间:2012-02-22 01:51:29

标签: visual-c++ assembly masm unicode-string widechar

您使用

name DB "Foo",0

name声明为字节字符串"Foo"

您如何将其声明为单词字符串? (即每个字符16位)

编辑:

我正在寻找一种在宏内部运行良好的方法,例如:

GenerateThunk macro Name
    .code
    &Name& proc public
        push    offset NAME
        jmp     &Name&__actual
    NAME:                               ;          I need something like this,
        &Name&_Name dw "&Name&", 0      ;     <--- but `dw' doesn't work!
    &Name& endp
endm

2 个答案:

答案 0 :(得分:3)

你可以用:

align 2
name DB "F", 0, "o", 0, "o", 0, 0, 0

取决于您需要的编码。

在宏中,您可以使用forc宏自动执行此操作,例如:

NAME:
    &Name&_Name
        forc chr,<&Name&>
            byte chr, 0
        endm
        byte 0

我没有尝试过这个,因为我在当前的盒子上无法访问MASM,所以它可能无效。

答案 1 :(得分:1)

或者用一个词,......

name DW "F","o","o",0