主题:谁能告诉我?
kxzyf
[专家分:0] 发布于 2006-12-23 16:38:00
谁能告诉我,源代码都是文本文件,汇编之前怎么确定段没有超过64KB?
标号的near 和 far 是如何确定的?
最后更新于:2008-04-07 19:01:00
回复列表 (共8个回复)
沙发
tld5yj [专家分:1310] 发布于 2006-12-25 20:34:00
near和far是指地址的远近,那是在汇编以后的,现在你存储格式不是和汇编的一样,等改变了汇编的连接了以后就行了。
板凳
kxzyf [专家分:0] 发布于 2006-12-26 11:04:00
near和far不是编源代码时就要由编程者确定的吗?我的意思是根据什么原则确定何时用“”远,何时用“近”?
3 楼
tld5yj [专家分:1310] 发布于 2006-12-26 18:05:00
near和far平时用得不算太多吧,只是在子程序调用里用得多,如果主程序和子程序不在同一个段,那么一般用far,如果在同一个段里的话就用near,这里的段可以是代码段和数据段之间,也可以是数据段数据段之间,或是和附加段之间什么的,如果是两个数据段什么的也算不同的段,我也讲不太明白,你最好再等等其它人的回复。
4 楼
kxzyf [专家分:0] 发布于 2006-12-28 07:20:00
谢谢!我觉得有道理,要是再有人支持一下就好了,我不明白为什么要这样规定,让系统来识别并不是一见很难的事。
5 楼
yclz [专家分:1520] 发布于 2007-01-02 00:15:00
如果程序很大,就会有很多段,这些段中标号或者过程名字一样是在所难免的,那样编译器怎么来区分是远调用还是近调用?
6 楼
kxzyf [专家分:0] 发布于 2007-01-05 10:03:00
这倒不成问题,转移或调用时由near和far就指明了,问题是你怎么知道一个段是否冒顶了(>64KB)?程序短或模块单一,可以先汇编试试,多模块时有很多外部引用,单独汇编一个模块好象不接受。
7 楼
tanchuhan [专家分:15140] 发布于 2007-01-05 13:54:00
怎么那么多人讨论DOS汇编的,都是做作业的吗?反而Win32汇编很少人问,奇怪?
8 楼
kxzyf [专家分:0] 发布于 2007-01-06 16:56:00
是跟主板有关的,必须在DOS下运行,有些驱动程序最好也用汇编语言。
我来回复