2017-10-13 3 views
0

私は、どのようなキーを押すかによって、さまざまな機能を含むプログラムを作成しました。私のプログラムはそのフォルダの中に.txtファイルを作成します。私は、フォルダ内に.txtファイルの更新されたリストを表示し、さらに追加して確認したいと思います。アセンブリ:4ehと4fhを使用してディレクトリ内のファイルを含むリストを印刷する

ただし、プログラムを実行すると、作成された最新の.txtファイルのみが表示されます。これを解決し、すべての.txtファイルの一覧を表示するにはどうすればよいですか?

宣言された変数:

file_spec db "*.*", 0 
DTA db 128h dup(0) 

dirlist proc near 
     mov dx,offset DTA 
     mov ah,1ah 
     int 21h 
     mov dx,offset file_spec 
     xor cx, cx 
     mov ah,4eh 
     int 21h 
     call print_name 
     call next_char 
     ret 
    dirlist endp 

    print_name proc near 
     mov dx,10 
     lea si, DTA + 1eh 
     ret 
    print_name endp 

    next_char proc near 
     lodsb 
     int 29h 
     test al, al 
     jnz next_char 
     mov al, 13 
     int 29h 
     mov al, 10 
     int 29h 
     mov dx, offset file_spec 
     xor cx, cx 
     mov ah, 4fh 
     int 21h 
     jnc print_name 
     ret 
    next_char endp 
+1

"file_spec"はどのように見えますか? 'db" * .txt "、0'を試してみましたか? – Tommylee2k

+0

コードフローが間違っているようです。 'jnc print_name'は' print_name'に行き、 'dx'と' si'をセットして 'dirlist'に戻ります。あなたはファイルをループしません。 – Jester

+0

@Jesterどのようにファイルをループするのですか?申し訳ありませんが、私はまだすべての機能に慣れていません。 –

答えて

0

あなたのコードの流れが間違っているようです。 jnc print_nameprint_nameになり、dxsiに設定し、dirlistに戻り、終了します。あなたはファイルをループしません。

next_charは、スタンドアロン手順の代わりにprint_nameの中の単純なラベルに変えてください。また、find_nextprint_nameの内部に入れることは、コーディングの練習が悪いことです。このようなものが動作する可能性があります:

file_spec db "*.*", 0 
DTA db 128h dup(0) 

dirlist proc near 
    mov dx,offset DTA 
    mov ah,1ah 
    int 21h 
    mov dx,offset file_spec 
    xor cx, cx 
    mov ah,4eh 
    int 21h 
    jc done 
next_name: 
    call print_name 
    call find_next 
    jnc next_name 
done: 
    ret 
dirlist endp 

print_name proc near 
    mov dx,10 
    lea si, DTA + 1eh 

next_char: 
    lodsb 
    int 29h 
    test al, al 
    jnz next_char 
    mov al, 13 
    int 29h 
    mov al, 10 
    int 29h 
    ret 
print_name endp 

find_next proc near 
    mov dx, offset file_spec 
    xor cx, cx 
    mov ah, 4fh 
    int 21h 
    ret 
find_next endp 
関連する問題