The MASM Forum

64 bit assembler => UASM Assembler Development => Topic started by: morgot on March 10, 2025, 12:05:33 AM

Title: How define unicode string in Uasm?
Post by: morgot on March 10, 2025, 12:05:33 AM
Hello.

In nasm I can:
WndFont dw __utf16__'Tahoma',0
I fasm I can:
WndFont du 'Tahoma',0
What can I do in uasm? Except for perversions like db 'T',0,'A'...
Title: Re: How define unicode string in Uasm?
Post by: zedd151 on March 10, 2025, 01:49:24 AM
Not that I use uasm or Unicode at all, but maybe this will help? This post from jj2007...

https://masm32.com/board/index.php?msg=124589
Title: Re: How define unicode string in Uasm?
Post by: zedd151 on March 10, 2025, 03:27:34 AM
Upon further investigations into using UNICODE... but with masm32 SDK and ml.exe    :biggrin:
For masm32, this is valid and produces UNICODE strings via "UCC" macro (which is a synonmym for the UCCSTR macro - @hutch lol), and uses the "W" version of the api called via  "__UNICOE__ equ 1", specified before all of the includes+libs.

Format = UCC  varname, "the string", 0 where UCC indicates unicode text, it seems.

__UNICODE__ equ 1  ; use "W" version of api's

include \masm32\include\masm32rt.inc

.data

    UCC  msg_str,"Hello World!", 0 ; produces a unicode string
    UCC  ttl_str, "The Title", 0  ; produces a unicode string
   
.code
 
start:

  invoke MessageBox, 0, addr msg_str, addr ttl_str, MB_OK
  exit

end start
Its not a perfect system, but appears to work (for ml.exe and masm32 SDK)
Not what you asked for I know, but I wanted to try this for myself. Sorry for the tangent.

Unicode Message box example using Masm32 SDK attached
Title: Re: How define unicode string in Uasm?
Post by: morgot on March 10, 2025, 03:48:57 AM
Quote from: zedd151 on March 10, 2025, 01:49:24 AMNot that I use uasm or Unicode at all, but maybe this will help? This post from jj2007...

https://masm32.com/board/index.php?msg=124589
I have error A2008:syntax error : LITERALS

 zedd151,your code works, but how to use ansi string?) If I want use them  too.
Title: Re: How define unicode string in Uasm?
Post by: zedd151 on March 10, 2025, 03:53:05 AM
Quote from: morgot on March 10, 2025, 03:48:57 AM
Quote from: zedd151 on March 10, 2025, 01:49:24 AMNot that I use uasm or Unicode at all, but maybe this will help? This post from jj2007...

https://masm32.com/board/index.php?msg=124589 (https://masm32.com/board/index.php?msg=124589)
I have error A2008:syntax error : LITERALS

 zedd151,your code works, but how to use ansi string?) If I want use them  too.

Not really my code but borrowed bits and pieces from hutchs unicode examples, and played with it 'til it worked as expected.
Not sure if unicode and ANSI ascii can be used together in a __UNICODE__ defined program.

I was just playing around to see what works in Masm32 for unicode.  :smiley:
Maybe someone else with more experience using both unicode and ascii in the same program can help you better.

If you are referring to jj2007's code that I posted a link to, you'd have to ask him.
Title: Re: How define unicode string in Uasm?
Post by: six_L on March 10, 2025, 04:02:17 AM
Hi, morgot
Ascii => Unicode
.data
    W_WndFont    db 32 dup (0)
    WndFont     db 'Tahoma',0
.code
    invoke    MultiByteToWideChar,CP_ACP,0,addr WndFont,-1,addr W_WndFont,32   
    invoke    MessageW,0,addr W_WndFont,0,MB_OK
Title: Re: How define unicode string in Uasm?
Post by: Vortex on March 10, 2025, 06:48:57 AM
Hi morgot,

You can use Hutch's WSTR macro to define UNICODE strings. Here is a quick example :

.386
.model flat,stdcall
option casemap:none

include UniCodeMacros.inc

MessageBoxW PROTO :DWORD,:DWORD,:DWORD,:DWORD
MessageBox TEXTEQU <MessageBoxW>

ExitProcess PROTO :DWORD

.data


WSTR    msg,"This is a UNICODE sample."
WSTR    capt,"Hello"

.code

start:

    invoke  MessageBox,0,\
            ADDR msg,ADDR capt,0

    invoke  ExitProcess,0

END start
Title: Re: How define unicode string in Uasm?
Post by: johnsa on March 13, 2025, 02:14:18 AM
In UASM you can declare a unicode string with DW.

aString dw "Hello, World!", 0