首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 请问在汇编里如何编写纯Unicode的程序?
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Tomorrow0
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 结帖率:
    发表于:2008-08-24 10:42:17 楼主
    请问在汇编里如何编写纯Unicode的程序,如何按Unicode方式编译呢? 我在网上找了下,都是VC里编译Unicode,都没有提到汇编的. MASM默认是用ANSI方式编译的吧,我在ML和LINK的参数里也找不到和Unicode有关的东西.

    我自己试了下,字符串用byte定义的话会乱码,但是用word定义编译又会出错

    .386
    .model flat,stdcall
    option casemap:none

    include windows.inc
    include kernel32.inc
    includelib kernel32.lib
    include user32.inc
    includelib user32.lib

    UNICODE=1

    if UNICODE
    MessageBox equ <MessageBoxW>
    else
    MessageBox equ <MessageBoxA>
    endif

    .data
    szText db 'Hello,Windows 98!',0
    szCap db 'HelloMsg',0

    .data?
    hInstance dd ?

    .code
    start:
    invoke MessageBoxW,NULL,offset szText,offset szCap,MB_OK
    invoke ExitProcess,NULL
    end start
    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jxc25
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-24 11:48:501楼 得分:0
    win98(vc6)只能编美国标准,win2k(vc.net)能编美国标准.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • BAYNPU
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 2

    发表于:2008-08-24 12:21:242楼 得分:0
    .....
    .code
    start:
    invoke MessageBoxW,NULL,offset szText,offset szCap,MB_OK ;把条指令稍改动一下就不会出就不会乱码invoke MessageBoxA,NULL,offset szText,offset szCap,MB_OK
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • gzgzlxg
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-24 21:36:293楼 得分:0
    看看F4关于驱动的那个宏库,UNICODE的支持和编译开关完全没有关系,你喜欢使用就直接使用,函数定义上边倒是需要主义,不知你用的是那个INCLUDE的文件,多少Include的文件只要不加W参数,就按Ansi处理,函数名加了W后按Unicode处理,这个和编译器完全没有关系,只是函数入口参数的要求。
    F4 的那个宏库非常不错,建议学汇编的朋友们花几分钟时间熟悉一下那个宏库,对应字符串引用上有独到之处,是我目前见到的最好的宏。
    另外看雪某个大侠曾经写过一个FastCall的宏,也相当不错,弥补了Masm32不支持FastCall的缺陷,这几个东西都应该作为手边的常用工具,在开发中会节约许多时间。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Eunyoo
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-25 08:59:094楼 得分:0
    引用 1 楼 jxc25 的回复:
    win98(vc6)只能编美国标准,win2k(vc.net)能编美国标准.


    你把操作系统跟IDE联系起来讲,这就是你的错了。

    vc6编译UNICODE小菜一碟
    vc.net在开发底层程序时显得有些多余(就目前来看)。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • Tomorrow0
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-26 08:56:295楼 得分:0
    引用 3 楼 gzgzlxg 的回复:
    看看F4关于驱动的那个宏库,UNICODE的支持和编译开关完全没有关系,你喜欢使用就直接使用,函数定义上边倒是需要主义,不知你用的是那个INCLUDE的文件,多少Include的文件只要不加W参数,就按Ansi处理,函数名加了W后按Unicode处理,这个和编译器完全没有关系,只是函数入口参数的要求。
    F4 的那个宏库非常不错,建议学汇编的朋友们花几分钟时间熟悉一下那个宏库,对应字符串引用上有独到之处,是我目前见到的最好的宏。
    另外…


    我用的是MASM32的INCLUDE文件.我还是不太明白,如何操作可以说的具体点吗?
    既然可以直接使用,那为什么我在函数名加了W程序显示的会是乱码呢,字符串的定义还是要用Byte吗?
    另外,你说的F4的驱动宏库哪里可以找到,谢谢
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved