使用FreeDOS是否允许我的程序访问超过64K的内存? [英] Does using FreeDOS allow my program to access more than 64 K of memory?

查看:0
本文介绍了使用FreeDOS是否允许我的程序访问超过64K的内存?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我对在FreeDOS上用C编程感兴趣,同时在这个过程中学习了一些基本的ASM,使用FreeDOS会允许我的程序访问超过标准640K的内存吗?

其次,关于ASM,我知道在现代处理器上,由于CPU体系结构的复杂性,很难在汇编语言上编程,但使用FreeDOS是否会限制我使用可能更简单的16位指令集?

推荐答案

在没有任何扩展器的情况下,程序在DOS下最多可以使用640KB的低内存。但每个结构将被限制为一个数据段的大小,即64KB。这意味着您可以拥有10个64KB大小的大型数组。当然,一个段中可以有多个数组,但它们的总大小不能超过段大小。一些编译器还自动处理跨越多个段的地址,以便您可以无缝使用大于64KB的对象,或者如果您正在用汇编语言编写,也可以执行相同的操作

要访问更多内存,您需要像EMSXMS这样的扩展器。但请注意,地址空间仍然是20位宽。扩展器只是将高内存区映射到可寻址空间中的一些段中,因此您一次只能看到数据的一个小窗口

关于汇编,您可以在16位模式下使用32位寄存器。有66h和67h前缀用于更改操作数大小。然而,这并不意味着编写16位代码更容易。事实上,它有很多需要记住的特性,比如内存寻址中有限的寄存器使用。32位x86指令集更简洁,具有更合理的寻址模式以及更易于使用的平面地址空间。

这篇关于使用FreeDOS是否允许我的程序访问超过64K的内存?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆