首页
社区
课程
招聘
[求助]为什么可以用字节声明中文字符串?
发表于: 2008-9-1 10:40 4346

[求助]为什么可以用字节声明中文字符串?

2008-9-1 10:40
4346
请问下在Win32汇编里,中文不是需要两个字节吗?
为什么可以用字节声明中文字符串然后直接被ANSI函数调用呢?

.data
szString db '你好,这是一个测试!',0
.code
start:
invoke MessageBoxA,NULL,offset szString,NULL,MB_OK
invoke ExitProcess,NULL
end start
像这样可以正确显示呢?

[招生]科锐逆向工程师培训(2025年3月11日实地,远程教学同时开班, 第52期)!

收藏
免费
支持
分享
最新回复 (5)
雪    币: 503
活跃值: (80)
能力值: (RANK:280 )
在线值:
发帖
回帖
粉丝
2
你的中文字符串就是两个两个字节编译连接的,反汇编一下就清楚了
ANSI函数实际上是用CP_ACP转换成UNICODE后再调用UNICODE函数显示的,所以你这样编译的程序如果在繁体中文系统或英语系统就显示不正常了
2008-9-1 10:48
0
雪    币: 190
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
哦,原来是这样,谢谢啊
那既然'中文字符串就是两个两个字节编译连接',为什么不能直接用dw来定义中文字符串呢?
2008-9-1 11:50
0
雪    币: 209
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
用DB定义的是DBCD,中文是两个字节,但英文数字类的就是一个字节

而DW定义的都是两个字节,包括英文数字类
2008-9-1 13:43
0
雪    币: 305
活跃值: (36)
能力值: ( LV12,RANK:250 )
在线值:
发帖
回帖
粉丝
5
用 DW,那么,在 Intel 机器上,字节位置是 颠倒的。
2008-9-2 11:48
0
雪    币: 190
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
大致明白了点,谢谢你们啊
那么有什么办法可以直接定义unicode的中文字符串吗?
2008-9-4 20:59
0
游客
登录 | 注册 方可回帖
返回

账号登录
验证码登录

忘记密码?
没有账号?立即免费注册