1

現在の作業ディレクトリとその内容を印刷したい。プログラムは、x86、16ビットIntel構文、割り込みを使用したDOSアセンブリで実行されます。使用するアセンブラーはTurboアセンブラーになります。これまでの私のコードは次のとおりです(それほど多くはありません):

ASSUME  cs:code,    ds:data
data segment
buffer  db  64  dup  (0) ; buffer for the current directory name
data ends
code segment
start:
mov     ax,     data ;
mov     ds,     ax   ; move data segment into ds, es registers
mov     es,     ax   ;

mov     dl,     0             ; default drive 
mov     si,     offset buffer ; put current directory in buffer
mov     ah,     47h  ; GET CURRENT DIRECTORY
int     21h                  

; appending '$' to buffer end
    ; search until 0 found
mov     cx,     64  ; search over all buffer 
cld                                 ; starting from the beginning  
    end_string:                         
lodsb                               ; get current byte in al register
cmp     al,     0   ; compare it with 0
jne     continue                    ; if not equal jump to continue label
mov     al,     36  ; if equal copy 36('$' - ASCII) in al
mov     di,     si  ; set destination index to source index
sub     di,     1           ; decrement di 
stosb                               ; store in es:di the value contained in al
mov     cx,     1   ; stop looping by setting cx to 1
    continue: 
    loop end_string
    ; print string obtained 
mov     dx,     offset buffer  ; ds:dx - string start
mov     ah,     09h            ; WRITE STRING TO STANDARD OUTPUT
int     21h

mov     ax,     4c00h          ; end program with exit code 0
int     21h
    code ends
    end start   

なんとか実行して、現在の作業ディレクトリを表示することができました。しかし今、私は彼の子ディレクトリとそのディレクトリに含まれるファイルを取得する方法がわかりません。だから私の質問は:どうやってそれらを手に入れるのですか?

4

2 に答える 2

1

DOSサービスFindFirst0x4e)およびFindNext0x4f)を使用して、指定されたディレクトリ内のエントリのリストを取得します。次に、返された属性に基づいてサブディレクトリとファイルを区別できます。

于 2012-12-09T13:37:29.070 に答える