标题: 请问有否DOS上的支持实模式且可使用32位寄存器和大内存的C
[打印本页]
作者: marchsnow
时间: 2005-4-20 00:00
标题: 请问有否DOS上的支持实模式且可使用32位寄存器和大内存的C
因开发底层软件,一直使用DOS环境下的BORLANDC3.1,但这个软件可能太老些了吧,不但不能使用大内存,而且连32位寄存器也无法使用,据说DGJPP比较好,但只支持保护模式,本人开发的程序必须运行在实模式下(要进行直接I/O操作和中断调用),请问各位老师,有否DOS上的支持实模式且可使用32位寄存器和大内存的类似BC语言集成调试环境?谢谢!dhwang@163.com
作者: 郭恒
时间: 2005-4-21 00:00
不能怪“BC31”,看到您这个问题,颇有同感,它也困扰了我好几年,我始终相
信Borland公司不是傻蛋。您提出这个问题后,刺激我去试一试。“天啊”,我自己都
不敢相信自己的眼睛:OK了!!! 我高兴,我欢呼,我好激动......在菜单------选中->
或者是
选中->32位寄存器从此解决了。谢谢您,亲爱的Marchsnow!您让我改变了对Bc31的态度!
例如:void main(){ asm mov ax, 0 asm mov eax, 0 asm{ mov ax, 0 mov eax, ebx };}
作者: marchsnow
时间: 2005-4-22 00:00
亲爱的郭先生:您好!
首先,非常感谢您的帮助指教!
您说的通过assemble进行编译的办法,前一段时间我也曾试过,不过BC31默认的汇编语言编译器是TASM1.0,它好像也不认识32位寄存器,所以曾尝试用MASM6.11替代TASM1.0进行编译,但不知是否操作问题,没成功,就没再试验。一会再试一下。谢谢您!还有,打开和使用高端内存有什么好的方法吗?请赐教!谢谢您!
作者: 郭恒
时间: 2005-4-22 00:00
关于32位寄存器,我的BC31的Tasm.exe版本是V3.1,编译链接通过。
“打开和使用高端内存”可调用XMS扩展内存管理程序分配获得。由于高位内存大约只有64K不到(65520字节),不知您为什么要使用它,并且它是全局唯一分配的,所
以它可能被其它程序占有,很难分配成功!例如您在Config.Sys中有如下语句
DOS=HIGH,UMB
如果您是直接访问高位内存的话,可以直接打开A20地址线(可查相关x86书籍获得),在实模式下就可以用“Seg:Offset”访问到.。
如果您需要大内存来保存数据,建议用XMS扩展内存来存贮。它在DOS下有4GB,Win9x有4M空间,
在Win2000有2M空间,在WinXp有2M空间.所以“直接访问常规内存”之外的内存是相当危险的,并
且不兼容其它操作系统。
作者: marchsnow
时间: 2005-4-22 00:00
不好意思,我刚才试了一下,通过了,我的版本号也是TASM3.1,上次估计可能是忘了修改CPU为80386了!非常感谢您!至于大内存问题吧,我现在做一个系统的安装程序,需要在DOS下,加载尽可能少的驻留程序的情况下,完成NTFS分区的格式化工作和类似碎片整理的工作,BC好像最大只能分配不到64K内存,所以要频繁读盘,可现在的硬盘动辄几十G,速度很慢,需等待的时间很难容忍,所以有可能的情况下想通过尽可能多的内存来缓解运行速度。不知是否有方便的方法?
作者: jawbin
时间: 2005-4-25 00:00
啊....都是高手啊...
作者: bigboy2050
时间: 2005-8-11 18:41
大侠啊!!!!!!!
作者: boblhh9999
时间: 2005-8-11 19:11
这个问题很经典,希望高手门多多发表见解。