编程论坛
注册
登录
编程论坛
→
汇编论坛
汇编语言中的标号为什么只有前31位字符有效啊???
BC2010_
发布于 2011-04-17 21:18, 896 次点击
菜鸟求救!!!
10 回复
#2
ansic
2011-04-17 22:11
标号,在汇编里标注的是一个地址,在386以上的汇编里,地址用32位表示。
#3
xiaomarn
2011-04-18 09:28
跟你的汇编器有关,看它支持多长了
汇编会有符号表吧,在那里面有符号和对应的地址,符号表如同一个字符串数组,每个字符串有固定长度,可能就如你的32位长
在学习中,我的一点体会,错了,高手别骂
#4
zklhp
2011-04-18 18:38
以下是引用
ansic
在2011-4-17 22:11:19的发言:
标号,在汇编里标注的是一个地址,在386以上的汇编里,地址用32位表示。
。。。
#5
zklhp
2011-04-18 18:38
abcdefghijklmnopqrstuvwxyz01234
这是31位 够长么。。
#6
ansic
2011-04-18 23:10
以下是引用
zklhp
在2011-4-18 18:38:52的发言:
abcdefghijklmnopqrstuvwxyz01234
这是31位 够长么。。
我想, 这是31个character,而不是31bit address。
在实模式下, 地址宽度是16位,在保护模式下,地址宽度是32位。
#7
zklhp
2011-04-19 09:00
以下是引用
ansic
在2011-4-18 23:10:02的发言:
我想, 这是31个character,而不是31bit address。
在实模式下, 地址宽度是16位,在保护模式下,地址宽度是32位。
楼主原话是
标号为什么只有前31位字符有效
嘛是标号???
#8
zklhp
2011-04-19 09:05
在汇编语言中,标号、内存变量名、子程序名和宏名等都是标识符,它一般最多由31个字母、数字及规定的特殊字符(?、@、_、$)等组成,并且不能用数字开头。通常情况下,汇编语言不区分标识符中字母的大小写。
我认为楼主的疑惑来自这里 难道这个16位的东西也和32位CPU有关 那时候可不知道有什么32位CPU啊
就是一种编译器的硬性规定罢了 你查C编译器的文档 变量或者函数的长度也不是无限的
况且 从我给的例子可看出来了 31字符是很长的一串 肯定是够用的了 不信你自己用排列组合算算有多少种组合。。
#9
zklhp
2011-04-19 22:38
有点偏离我的问题意图!
为嘛偏离呢 因为你的描述是错误的 这个不赖我。。
#10
Alar30
2011-04-20 20:29
呵呵
z版依旧耐心。。
佩服佩服
#11
xuzejia_love
2011-04-21 00:10
回复 9楼 zklhp
z版,我用at&t汇编时候碰到了一个难题,快来帮菜鸟救救火。
1