我对在FreeDOS上使用C语言编程感兴趣,同时学习了一些基本的FreeDOS,使用FreeDOS是否允许我的程序访问超过标准内存640 K的内存?
其次,关于FreeDOS,我知道在现代处理器上,由于CPU体系结构的复杂性,很难在汇编上编程,但是使用是否将我限制在大概更简单的16位指令集上呢?
发布于 2013-12-03 08:17:07
没有任何扩展程序,程序可以使用最大640 in的低内存在DOS。但每种结构都将限制在一个段的大小,即64 or。这意味着您可以有10个大小为64 10的大数组。当然,在一个段中可以有多个数组,但是它们的总大小不能超过段大小。一些编译器还会自动处理跨越多个段的地址,这样就可以无缝地使用大于64 if的对象,或者在程序集中编写时也可以这样做。
要访问更多内存,您需要像环管或XMS这样的扩展程序。但请注意,地址空间仍然是20位宽。扩展程序只将高内存区域映射到可寻址空间中的某些段中,这样每次只能看到数据的一个小窗口。
关于程序集,您可以在16位模式下使用32位寄存器.有66h和67h前缀来更改操作数大小。然而,这并不意味着编写16位代码更容易。事实上,它有很多需要记住的特性,比如内存寻址中有限的寄存器使用。32位x86指令集更干净,有更清晰的寻址模式,也有一个平坦的地址空间,使用起来更容易。
发布于 2013-12-03 16:07:36
MS和FreeDOS使用"HIMEM“区域:
以这种方式存档的最大内存大小约为800 K。
使用XMS和EMS,您最多可以使用64米:
https://stackoverflow.com/questions/20343282
复制相似问题