0

このファイルをアセンブリ言語で書いていますが、64,000 バイトの長さのファイルを読み取ります。RAMに保存したくないので、1バイトを読み取り、データを操作してから、次のバイトを同じアドレスに保存するようにする必要があります。

何か案は?

Windows XP ハードウェアで MS-DOS ブート ディスクを実行しています (仕様はわかりません)。

4

1 に答える 1

3

DOS int 21h function 48h を使用して、 64000 バイトのメモリを割り当てることができます。メモリは 16 バイトの倍数で割り当てられるため、 で 64000/16=4000 を渡しますBX

その関数から戻ると、割り当てられたブロックのセグメントが含まれます。これは、そのブロックにアクセスする前にAX、セグメント レジスタ ( DSESFSまたは) にロードする必要があります。GS以外のセグメント レジスタにロードする場合はDS、次のように、ブロックにアクセスする命令の前にセグメント オーバーライド プレフィックスを付ける必要があります。

mov [es:0], al-- ブロックの最初のバイトに格納ALされます (ブロックのセグメントは にありますES)。

割り当てられたメモリを使い終わったら、関数 49hを使用してメモリを解放します。

于 2012-09-24T06:06:54.497 に答える