⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rdw.asm

📁 查找制定目录下的文件
💻 ASM
字号:
data        segment
namemax      db  32
actlen       db   ?
bufpath        db   32 dup (0),'$'
path     db   128 dup (0),'$'
outpath      db   128 dup (0),'$'
wrongpath    db   'The path is not correct!','$'
prompt1  DB 0ah,0dh,'Please input which catalog to reach:' ,'$',0ah,0dh
prompt2 DB 0ah,0dh,'The file-reach is over!','$' ,0ah,0dh
mydata          db    43 dup (0),'$'
mydatabufsp     dw    0
mydatabuf       db    512 dup (0)
data        ends
;---------------------------------------------------------------------
code    segment
assume  cs: code,ds:data,es:data
start:
       
       mov  ax,data       
       mov  ds,ax
       mov  es,ax
       lea dx,prompt1
       mov ah,09h
       int 21h

       call  INPUT
       mov  ah,1ah
       mov  dx,offset mydata
       int  21h


       mov  si,0
       mov  di,0
  cont: 
       mov  al,bufpath[si]
       cmp  al,0
       jz   next
       mov  path[di],al
       mov  outpath[di],al
       inc  si
       inc  di
       jmp  cont
next:  
       lea  bp,path[di]
       sub  bp,4
       lea  bx,outpath[di]
       sub  bx,4
       mov  [bx],'/'
       mov  [bx+1],'$'
       sub  di,3
       lea  dx, path

       call  scan
     
       jmp  lop_end

;-----------------------------------------------------------------------------------
scan   proc  near
       mov  cx,37h 
       mov  ah, 4eh
       int  21h
       jnc judge
       lea dx,wrongpath
       mov ah,09h
       int 21h
       jmp lop_end

  judge:
        cmp  mydata[1eh],'.'
        jz   nextfile_1

        cmp   mydata[15h],10h
        jnz   disp
        
        mov  cx,43
        mov  si,0
        push di
        mov  di,mydatabufsp
 pdta:
        mov  al,mydata[si]
        mov  mydatabuf[di],al
        inc  si
        inc  di
        loop  pdta
        pop  di
        add  mydatabufsp,43
       
        
        mov  [bp],'\'
        mov  [bx],'\'
        mov  cx,0

        mov  si,1eh
lop:
        mov  al,mydata[si]
        cmp  al,''
        jz   next1
        mov  path[di],al
        mov  outpath[di],al
        inc  cx
        inc  si
        inc  di
        jmp  lop
next1:  
        
        inc   cx
        push  cx
        push  bp
        push  bx
        add   bp,cx
        add   bx,cx
        mov   [bx],'\'
        mov   [bx+1],'$'
        mov   [bp],'\'
        mov   [bp+1],'*'
        mov   [bp+2],'.'   
        mov   [bp+3],'*'
        inc   di

        call  scan         

        pop   bx
        pop   bp
        pop   cx
        sub   di,cx
        call  clean 
       
        jmp   nextfile
nextfile_1:
        jmp nextfile_2
disp:         
         push  dx
         lea   dx,outpath
         mov   ah,09h
         int   21h
         lea   dx,mydata[1eh]        
         mov   ah,09h
         int   21h
         jmp   cr

nextfile_2: 
         jmp   nextfile
judge1:  jmp   judge  
     
cr:      mov   dl,0dh
         mov   ah,02h
         int   21h
         mov   dl,0ah
         mov   ah,02h
         int   21h

         pop   dx
nextfile: 
          mov  cx,37h         
          mov  ah,4fh
          int  21h
          cmp  ax,12h
          jnz  judge1           
          ret
scan      endp
;--------------------------------------------------------------------------
clean    proc   near
                
        mov   cx,13
        mov   si,1
 lop2:
        mov   [bx+si],0
        mov   [bp+si],0
        inc   si
        loop  lop2
        mov   [bp+1],'*'
        mov   [bp+2],'.'
        mov   [bp+3],'*'
        mov   [bx+1],'$'
      
        mov  si,0
        mov  cx,43
        sub  mydatabufsp,43
        push  di
        mov   di,mydatabufsp
 copy2:
        mov  al,mydatabuf[di]
        mov  mydata[si],al
        inc  si
        inc  di
        loop  copy2
        pop  di  
        ret
clean   endp
;----------------------------------------------------------------------------------------------
INPUT   proc  near
         
          lea  dx,namemax
          mov  ah,0ah
          int  21h
          mov  cl,actlen
          mov  si,cx
          mov  bufpath[si],'\'
          mov  bufpath[si+1],'*'
          mov  bufpath[si+2],'.'
          mov  bufpath[si+3],'*'
          ret
INPUT   endp    

;-----------------------------------------------------------------------------------
lop_end:lea dx,prompt2
		mov ah,09h
		int 21h
        mov ax,4c00h
         int 21h

        
code   ends

       end  start

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -