打印

TC2.0编译下,数组过大问题

[复制链接]
3377|21
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jdwang001|  楼主 | 2012-6-8 19:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
tyw| | 2012-6-8 19:29 | 只看该作者
板凳
highgear| | 2012-6-8 22:54 | 只看该作者
DOS 下就别指望了, 这是硬件的限制导致编译器作出了限制。 要么用 vc, bc, 要么使用分段。

使用特权

评论回复
地板
jdwang001|  楼主 | 2012-6-10 12:36 | 只看该作者
也考虑过不过VC和BC不支持interrupt关键字啊。
是在DOS下运行的程序,想使用串口接收中断。
我试下DJGPP看看怎么用。

使用特权

评论回复
5
mohanwei| | 2012-6-10 15:33 | 只看该作者
就串口那龟爬速度……如果只是为了用interrupt来处理串口,用VC,随便下载个基于对话框的串口助手程序,在上面改改用吧

使用特权

评论回复
6
jdwang001|  楼主 | 2012-6-10 16:29 | 只看该作者
我用的PC\104装的是DOS6.22,现在需要用DOS下程序。。。。。。

使用特权

评论回复
7
Periodic| | 2012-6-10 19:54 | 只看该作者
复古了

使用特权

评论回复
8
李冬发| | 2012-6-10 23:41 | 只看该作者
VC可以编写中断服务程序的。其实这个不是由VC来实现,是WINDOWS本身已经实现的。

使用特权

评论回复
9
李冬发| | 2012-6-10 23:42 | 只看该作者
windows的串口本身就是基于中断服务程序实现的,你在windows下的查询,是查串口缓冲的数据,不影响串口的响应。

使用特权

评论回复
10
jdwang001|  楼主 | 2012-6-11 10:14 | 只看该作者
9# 李冬发
我能把这句话理解成,在VC下可以编写DOS下的串口中断程序不?若可以的话,希望东发大哥提供点资料吧。。。。

使用特权

评论回复
11
李冬发| | 2012-6-11 11:57 | 只看该作者
不可以

使用特权

评论回复
12
李冬发| | 2012-6-11 12:03 | 只看该作者
倒是你可以TC写的代码运行在保护模式下,这时内存就不用限制在64k了,缺点是内存管理得自己来做。
也可以使用DPMI编程。

使用特权

评论回复
13
jdwang001|  楼主 | 2012-6-11 13:10 | 只看该作者
12# 李冬发
这个的确是不懂了,我查了查说是DJGPP没有64K的限制,现在打算用这个来进行编译,可是这个编译器的语法有点不一样,东发大哥用过没?能指点下不?我用的串口中断程序实在网上找的那个是用interrupt关键字的。现在就剩下将磁盘数据读入内存了。就是这个数组问题。

使用特权

评论回复
14
jdwang001|  楼主 | 2012-6-11 15:56 | 只看该作者
需要帮助啊。。。。。。

使用特权

评论回复
15
李冬发| | 2012-6-11 17:27 | 只看该作者
为什么不用win32/linux平台,而非要DOS平台。dos运行在保护模式,就是裸奔!代价高昂。

使用特权

评论回复
16
jdwang001|  楼主 | 2012-6-11 18:55 | 只看该作者
开始定方案的时候,也注意到了TC是16位的问题,现在才发现挺难解决的。

使用特权

评论回复
17
highgear| | 2012-6-11 22:22 | 只看该作者
还在纠结这个问题?

DOS使用了实地址模式, 索引寄存器是 16 bit, 所以数组访问一般不会超过 64 K, 除非编译器降低效率特别处理, 基本上没有编译器会这么干, 因为程序员总是有方法不使用大数组。 你可以使用farmalloc() 分配一个大堆, 然后使用 far 指针处理。 far 指针(segment:offset)可以访问任何内存地址。
  
另外, Borland C++ 支持interrupt.

使用特权

评论回复
18
jdwang001|  楼主 | 2012-6-12 09:12 | 只看该作者
17# highgear
是啊,可是使用far指针的话,也不熟悉, Borland c++支持interrupt 可是它一样不支持大数组啊。。。现在尝试使用DJGPP吧,希望能搞定。

使用特权

评论回复
19
McuPlayer| | 2012-6-12 10:54 | 只看该作者
即使是VC或者C++Builder,都不建议使用大数组

使用特权

评论回复
20
jdwang001|  楼主 | 2012-6-12 11:02 | 只看该作者
19# McuPlayer
没办法啊,现在想解决这个问题,可是在DJGPP中对中断进行改写时又遇见问题了,都不知道该怎么改写了。。。。。。。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

316

帖子

1

粉丝