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

📄 dp2.asm

📁 列磁盘目录的程序
💻 ASM
字号:
stack     segment    
       tak   db    256 dup(0)      
stack    ends                                          ;初始化堆栈段      
;*****************************************************************
data       segment    
      enter	db   0dh,0ah,'$' 
      newmem    db    ?
      file      db   '    design  numbers:',  '$' 
      diskrec   db   7680  dup(0) 
      buff      db   10 dup  (?),'$'
      count     db   0 
      count1    dw   ?
      count2    dw   ?
      count3    dw   ?
      err       db   'disk access error!!!','$'             
data      ends                                           ;初始化数据段
;*****************************************************************
code     segment                                        ;定义代码段

         assume  cs:code, ds:data,  ss:stack              
main:

               mov   ax, data    
               mov   ds,  ax    
               mov   es,  ax
               call  disload      
exit:          
               mov  ah,  4ch				;主程序返回
               int  21h
               ret
 ;*************************************************  ;列磁盘目录子程序
disload     proc  near 
     		mov   cx,  3				      
retry:			
     		push    cx     
     		mov     bx,  offset  diskrec
     		mov     ax,  020eh                          ;02 中断号14 扇区 数     
     		mov     dx,  0                              ;DH磁头号,DL磁盘号
     		mov     cx,  15                            ;CH 磁道号,CL 起始扇区号
     		int     13h                                  ;
      		pop   	cx  
                jnb     readok
     		loop    retry     
error:
      		lea     bx, err         
      		call    display1      
      		ret      
readok:             
           	mov     count ,0                                                                    
next:        	mov     al, byte ptr[bx]
      		cmp     al, 0e5h                            ;与标志比较       
      		jz      empty   
      		cmp     byte ptr[bx], 0
      		jz      empty    
      		push    bx    		                       
      		mov     dl,3      
blank1:         
                mov     al,' '                              ;显示空格
                call    dispchar
                dec     dl
                jnz     blank1  
      		mov     dl, 8                             
pname:
      		mov     al,[bx] 
      		call    dispchar                            ;显示文件名 
     		inc     bx            
      		dec     dl      
      		jnz     pname
                mov     dl,3
blank2:         mov     al,' '
      		call    dispchar 
                dec     dl
                jnz     blank2
      		mov     dl,  3      
ename:
      		mov     al,[bx]      
      		call    dispchar                            ;显示扩展名   
      		inc     bx     
      		dec     dl      
      		jnz     ename
      		mov    dl, 6     
blank:
      		mov    al,  ' '                             ;显示空格
      		call   dispchar      
      		dec    dl            
      		jnz    blank           
     
plen:       
                add    bx,11h                               ;显示长度
                mov    di,offset buff
                mov    cx,7
p0:             mov    byte ptr [di],' '
                inc    di
                loop   p0
                mov    di,offset buff +9
                mov    ax,[bx]
                mov    dx,[bx+2]
                call   chang
      		mov    dx,offset enter
      		mov    ah,09h
      		int    21h 
      		inc    count3
      		pop    bx    
      	
empty:     	add    bx,32 
                inc    count
                cmp    count,240
                je     t1
                jmp    next
 
t1:             
                mov    di,offset buff
                mov    cx,9
p3:             mov    byte ptr [di],' '
                inc    di
                loop   p3 
                mov    dx,offset enter
                mov    ah,09h
                int    21h            
                mov    dx,offset  file
                mov    ah,09h
                int    21h
                mov    ax,count3
                mov    dx,0
                mov    di,offset buff+9
                call   chang
                      	
        ;        mov    ah,7h
        ;        int    21
        ;        cmp   al,'u'
        ;        jne   t2
        ;        sub   bx,800
        ;        jmp   next
t2:     ;        cmp   al,'d'
        ;        jne   t3
        ;        add   bx,768
t3:     ;        jmp   next
      		ret
disload       endp 
;**********************************************  
chang         proc     near

p1:             cmp    dx,0
                jne    p6
                cmp    ax,10
                jb     p2
p6:             sub    ax,10
                sbb    dx,0
                add    count1,1
                adc    count2,0
                cmp    dx,0
                jne    p1
                cmp    ax,10
                jae    p1
                add    al,30h
                mov    byte ptr [di],al
                dec    di
                mov    ax,count1
                mov    count1,0
                mov    dx,count2
                mov    count2,0
                cmp    dx,0
                jne    p1
                cmp    ax,10
                jnb    p1
        
p2:             add    al,30h
                mov    byte ptr [di],al
                mov    bx,offset  buff
                mov    cx,10
p5:             mov    dl,byte ptr [bx]
                cmp    dl,' '
                je     p4
                mov    ah,2h
                int    21h  
p4:             inc    bx
                loop   p5
                ret
chang          endp
;**************************************** 
display1       proc     near    
              mov    cx,  30     
disp:
              mov    al,  [bx]      
              call   dispchar
              inc    bx      
              loop   disp     
              mov    al,  0dh      
              call   dispchar     
              mov    al,  0ah      
              call   dispchar     
              ret      
display1     endp
;****************************************** 
dispchar      proc     near     
             push   bx       
             mov    ah,  14		                
             int    10h      
             pop    bx      
             ret      
dispchar     endp                                   
;*************************************** 
code      ends
          end   main                                                                                                                                                                                                                                   

⌨️ 快捷键说明

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