2

アセンブリ 8086 アーキテクチャを使用して、「.lnk」拡張子を持つファイルを削除しようとしています。「mov si, dx」の後に「jmp DELETE」と書き、内側の back1、back2、back3 の部分をスキップすると、コードはすべてのファイルを削除しますが、拡張子が .lnk かどうかを文字ごとにチェックすると、削除されません。拡張子が .lnk のファイルであっても削除しないでください。なぜそれが起こっているのですか?

.MODEL SMALL
.STACK 100H
.DATA
FILE DB "*", 0
DTA DB 128H DUP(?)   
FILENAME DB 50 DUP(?)
.CODE

MAIN PROC  

    MOV AX,@DATA
    MOV DS,AX

    ;SET DTA
    MOV DX,OFFSET DTA
    MOV AH,1AH
    INT 21H

    ;FIRST SEARCH
    MOV DX,OFFSET FILE 
    MOV CX,0
    MOV AH,4EH
    INT 21H
    JC QUIT

OUTER_LOOP:


    ;DELETE
    LEA DX,DTA+30 
    mov si, dx 

    inner:
    cmp [si], 0
    je back1
    inc si
    jmp inner

    back1:
    dec si
    cmp [si],'K'
    je back2
    jmp NEXT

    back2:
    dec si
    cmp [si],'N'
    je back3
    jmp NEXT

    back3:

    dec si
    cmp [si], 'L'


    delete:
    LEA DX,DTA+30 
    MOV AH,41H
    INT 21H


    ;INITIATE NEXT SEARCH
    NEXT:
    MOV DX,OFFSET FILE 
    MOV CX,0
    MOV AH,4FH
    INT 21H
    JC QUIT

    JMP OUTER_LOOP



QUIT:
    MOV AX,4C00H
    INT 21H

MAIN ENDP
    END MAIN
4

1 に答える 1