| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3253 人关注过本帖
标题:汇编中db与dw的区别(2) 。。。
只看楼主 加入收藏
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
0B68:0000  23 01 56 04 D6 D0 B9 FA-00 00 00 00 00 00 00 00   #.V.............
0B68:0010  00 00 00 00 00 00 68 0B-00 00 0D 00 6A 0B 6A 05   ......h.....j.j.

我这里是能编译进去的 编译器masm

data segment
    dw 0123h,0456h
    db '中国'
data ends


2012-07-11 21:02
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用lonmaor在2012-7-11 20:43:21的发言:

用emu8086调试的,如果是db '中国'


如果是db 'china'



emu8086默认exe模板的data segment定义
data segment
    ; add your data here!
    db    '中国'       ;这里为什么db是对的,dw是错的。 一个汉字不是占两个字节么...
 
    dw    0
 
    pkey db "press any key...$"
ends下面press any key...就忽略了吧

这个应该是跟编译器有关罢 你用的啥编译器咧
2012-07-11 21:05
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用zklhp在2012-7-11 20:57:02的发言:

有没有关系我也不知道

定义字符串 就是用db 编译器自动转成

db 12,13,14

这样的形式

对于中文 一样 只不过是根据编码转换成相应的数罢了

以前我以为这个能定义中文 也就是能把中文转成数 现在看上面的测试 是不能的

为啥中文不能这么定义呢 我觉得原因有以下几个

和英文的字符串对应
实现容易


补充一点

db 12,34
dw 1234

是不一样的 为啥不一样看大尾和小尾模式 我觉得这个也是一个可能的原因
2012-07-11 21:07
lonmaor
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:郑州
等 级:版主
威 望:75
帖 子:2637
专家分:6423
注 册:2007-11-27
收藏
得分:0 
回复 11楼 zklhp
我也用masmplus调试了一下,发现是可以编译进去,但是即使把中文翻译为ascii码再输出,仍然输出为ascii码而不是中文


[ 本帖最后由 lonmaor 于 2012-7-11 21:16 编辑 ]

从不知道到知道,到知道自己不知道,成长的道路上脚步深深浅浅
2012-07-11 21:15
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用lonmaor在2012-7-11 21:15:25的发言:

我也用masmplus调试了一下,发现是可以编译进去,但是即使把中文翻译为ascii码再输出,仍然显示不出来
能不能进去是编译器是事 能不能显示是程序和操作系统的事

这个属于DOS程序 由于DOS操作系统默认没有显示中文的功能 所以显示不了

显示中文 要么用汉卡等 要么用程序提供一个显示接口 貌似叫什么中断 要么 自己带字库显示
2012-07-11 21:17
admin_xyz
Rank: 2
等 级:论坛游民
帖 子:195
专家分:77
注 册:2012-6-24
收藏
得分:0 
唉...为什么发明电脑的不是中国人呢.. 真想一天能这样写代码...

定义 字符串 = “你好,世界!"

= =#  yy下...
大致懂了...debug和编译器里面不支持中文...

总有人比你努力,可怕的是比你牛的人比你还努力。
2012-07-11 21:23
lonmaor
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:郑州
等 级:版主
威 望:75
帖 子:2637
专家分:6423
注 册:2007-11-27
收藏
得分:3 
以下是引用zklhp在2012-7-11 21:17:12的发言:

能不能进去是编译器是事 能不能显示是程序和操作系统的事

这个属于DOS程序 由于DOS操作系统默认没有显示中文的功能 所以显示不了

显示中文 要么用汉卡等 要么用程序提供一个显示接口 貌似叫什么中断 要么 自己带字库显示
现在的win7/xp自带的终端窗口不是能正常显示中文么?
实环境的dos需要中文字库+直接写屏,我以为现在不需要了的
有点奇怪的是,虚拟机装xp,进入cmd后打debug回车,明显看到系统自动切换成另一个dos窗口了,而这个新的dos窗口貌似是不可以显示中文的吧

从不知道到知道,到知道自己不知道,成长的道路上脚步深深浅浅
2012-07-11 21:23
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:3 
cmd.exe



上面那个是自带的终端 支持中文

下面那个是用于兼容16位程序的 自然不支持中文 会自动切换的
2012-07-11 21:28
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用admin_xyz在2012-7-11 21:23:23的发言:

唉...为什么发明电脑的不是中国人呢.. 真想一天能这样写代码...

定义 字符串 = “你好,世界!"

= =#  yy下...
大致懂了...debug和编译器里面不支持中文...
百度易语言 就和你这个是一样的

而且 现在的编译器对于unicode支持的比较好 对于unicode来说 所有的字符都是一样的 大家都是unicode嘛 所以 像C语言那样的语言也可以用中文作为变量名 函数等 再加上宏啦 重载啦 实现一个中文的编程环境不难

问题是

1 兼容性
2 程序写作的复杂性
3 性能

2012-07-11 21:30
admin_xyz
Rank: 2
等 级:论坛游民
帖 子:195
专家分:77
注 册:2012-6-24
收藏
得分:0 
易语言编译器的作者肯定是大牛...

总有人比你努力,可怕的是比你牛的人比你还努力。
2012-07-11 22:57
快速回复:汇编中db与dw的区别(2) 。。。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018219 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved