我用汇编语言编写这个文件,它读取的文件长度为64,000字节。我不想将它存储在RAM中,因此我需要将其设置为读取一个字节,操作数据,然后将下一个字节存储在同一地址。
任何想法?
我在Windows XP硬件上运行MS-DOS启动盘(我不知道规格)当我运行它存储64,000时我得到一个EMM错误告诉我需要重新启动。
答案 0 :(得分:3)
您可以使用DOS int 21h function 48h to allocate 64000字节的内存。它以16字节的倍数分配内存,因此你在BX
中传递64000/16 = 4000。
从该函数返回时,AX
将包含已分配块的段,您必须将其加载到段寄存器中DS
,ES
,FS
或访问该块之前的GS
)。如果将其加载到DS
以外的段寄存器中,则需要在访问块的指令前加上段覆盖前缀,如下所示:
mov [es:0], al
- 将AL
存储到块的第一个字节(块的段位于ES
)。
使用分配的内存完成后,可以使用function 49h释放它。