2012-09-24 102 views
0

我正在用汇编语言编写此文件,并且它读取长度为64,000字节的文件。我不想将它存储在RAM中,所以我需要使它读取一个字节,处理数据,然后将下一个字节存储在相同的地址。读取文件汇编语言

任何想法?

我运行在Windows XP硬件上的MS-DOS启动盘(我不知道规格),当我运行它时,我存储64,000我得到一个EMM错误,告诉我我需要重新启动。

+3

你能发布相关的程序集吗? – alex

+0

我在猜你在realmode x86?没有理由任何“现代”汇编语言程序不能处理超过64k的数据,特别是现在的保护模式64位是事实上的标准......另外,除非你指定你正在运行哪个OS + CPU,并且什么模式,你的问题是无法回答的。 –

+0

虐待编辑然后 – user1624667

回答

3

您可以使用DOS int 21h function 48h to allocate 64000字节的内存。它以16字节的倍数分配内存,所以你在BX中通过64000/16 = 4000。

在从该函数返回AX将包含所分配的块,你将有访问该块之前要装入段寄存器(DSESFSGS)的链段。如果你把它加载到比DS其他段寄存器,你将需要访问前缀块与段覆盖前缀的指令,像这样:

mov [es:0], al - 商店AL到块的第一个字节(块的段在ES)。

当您完成使用分配的内存时,您可以使用function 49h释放它。