¿Literal de cadena de caracteres anchos en MASM?
-
28-10-2019 - |
Pregunta
Usas
name DB "Foo",0
para declarar name
como la cadena de bytes "Foo"
.
¿Cómo declaras que es una cadena de palabras?(es decir, 16 bits por carácter)
Editar:
Estoy buscando un método que funcione bien dentro de macros, por ejemplo:
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
Solución
Podrías hacerlo con:
align 2
name DB "F", 0, "o", 0, "o", 0, 0, 0
dependiendo de la codificación que necesite.
Dentro de una macro, es posible que pueda automatizar esto con la macro forc
, algo como:
NAME:
&Name&_Name
forc chr,<&Name&>
byte chr, 0
endm
byte 0
No he probado esto porque no tengo acceso a MASM en mi caja actual, por lo que puede que no funcione.
Otros consejos
O use una palabra, ...
name DW "F","o","o",0
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow