MASMアセンブラでテキストファイル(後でお読みください)を開こうとしています。これは、割り込みがint 21h, AH = 3Dh
で行われなければなりません。私は0
をAL
レジスタにプッシュし(ファイルを "読み取り専用"として開く)、ASCIIファイル名をDX
にプッシュしました。通常、ファイルハンドルはAX
にプッシュされますが、そうではありません。私は2
をALに戻しています(これはファイルハンドルではなく、C = 1
なのでエラーです)。これは(インターネットで検索した後に)テキストファイルが存在しないことを意味します。私が紛失しているものがありますか?ファイルは存在し、私のASMファイルと同じフォルダにあります。(MASM)アセンブラでテキストファイルを開こうとしているときにエラーが発生しました
start:
sti
cld
push ds
pop es
code:
; Opening a file with file = ASCII path
mov ah, 3Dh
mov al, 0
lea dx, [file]
int 21h
; Save AX as our file handle
mov [handle], ax
; Put the handle in BX
mov bx, [handle]
; Close the file
mov ah, 3Eh
int 21h
; Stop the program
mov eax, 4c00h
int 21h
DATASEG
handle dw 0
file db 'abcd.txt', 0
「現在の」ディレクトリに「abcd.txt」はありますか?あなたは(明らかに)デバッガを介してこれをトレースしているので、割り込みを実行する前にds:dxをダンプして、それがあなたの考えであることを確認することもできます。 –
_Pushed_は何かをスタックに置いたことを説明するのに使うものです。値はレジスタに_moving_しています。とにかく、.asmファイルは実行されたものではないため、テキストファイルが.asmファイルと同じディレクトリにあるかどうかは関係ありません。生成されたexe/comファイルはどこから実行されていますか? – Michael
@Michael専門用語を訂正していただきありがとうございます。すべてのファイルは同じフォルダにあります:My txtファイル、生成されたexeファイル、makefile、および.asmファイル。 – pvdsp