gpt4 book ai didi

assembly - 如何在 DOS 中获得额外的段?

转载 作者:行者123 更新时间:2023-12-02 10:43:27 24 4
gpt4 key购买 nike

我想写一个小DOS程序(我的第一个),我有点缺乏经验。

对于该程序,我需要超过 64 KB 的(常规)内存。我怎样才能获得额外的内存?理想情况下,我希望程序有两个额外的 64k 内存块。我可以开始将数据写入地址空间的某个位置还是需要请求额外的内存?

最佳答案

在 DOS 下,是的,您可以开始使用另一段内存。但是,有一个重要的警告!

查看您正在使用的 DOS 版本的内存映射。您要确保您没有选择实际保留用于其他目的的内存区域。这是来自 Dr. Dobb's 的一个杂志:

Address (Hex)                 Memory Usage

0000:0000 Interupt vector table
0040:0000 ROM BIOS data area
0050:0000 DOS parameter area
0070:0000 IBMBIO.COM / IO.SYS *
mmmm:mmmm BMDOS.COM / MSDOS.SYS *
mmmm:mmmm CONFIG.SYS - specified information
(device drivers and internal buffers
mmmm:mmmm Resident COMMAND.COM
mmmm:mmmm Master environment
mmmm:mmmm Environment block #1
mmmm:mmmm Application program #1
. . . . . .
mmmm.mmmm Environment block #n
mmmm:mmmm Application #n
xxxx:xxxx Transient COMMAND.COM
A000:0000 Video buffers and ROM
FFFF:000F Top of 8086 / 88 address space

“官方”内存分配机制是通过内存控制 block (MCB) 和 DOS 中断 0x21 使用 0x48 分配和 0x49 释放内存。可以在 Microsoft support document 中找到对此的一个很好的讨论。 .

有关中断方法的文档, you might look here.

关于assembly - 如何在 DOS 中获得额外的段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37509294/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com