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

📄 list.asm

📁 DOS下基于28f512的小型文件系统 format.asm/list.asm/erasetes.asm/readfl.asm/start.asm/writefl.asm
💻 ASM
字号:
port_a  equ 0c800h
port_b  equ 0c801h
port_d  equ 0c803h
port_ce equ 0c810h
DATA     SEGMENT
BUFFER   DB 400H DUP(?)
STRING1  DB  01h,       ' COPYRITHT:  ','$'
STRING2  DB 0DH,0AH,01h,' CAPACITY:   FC00H  ','$'
STRING3  DB 01h,' FREE SPACE:','$'
STRING4  DB 0DH,0AH,'FILE LIST: ','$'
NUM      DW 3031H
FILELEN  DB 0
DATA     ENDS

CODE     SEGMENT
         ASSUME CS:CODE,DS:DATA
start:  mov ax,data
        mov ds,ax
        mov dx,port_d   ;control word
        mov al,80h
        out dx,al
        mov dx,port_ce   ;read cmd
        mov al,00h
        out dx,al
        CALL LOAD
        CALL SHOW
        CALL DISPLAY
        mov ah,4ch      ;return dos
        int 21h
        
LOAD    PROC           ;READ DATA FROM FLASH TO BUFFER
        mov bX,0h
        mov cx,400h
        lea di,buffer
next_r: mov dx,port_b   ;addressh
        mov al,bh
        out dx,al
        mov dx,port_a   ;addressl
        mov al,bl
        out dx,al
        mov dx,port_ce   ;read
        in al,dx
        mov [di],al
        inc bX
        INC DI
        LOOP NEXT_R
        RET
LOAD    ENDP

SHOW    PROC            ;SHOW COPYRIGHT AND CAPACITY
        LEA DX,STRING1
        MOV AH,9
        INT 21H
        LEA DI,BUFFER
        MOV CX,10H
NEXT_S: MOV DL,[DI]
        MOV AH,2
        INT 21H
        INC DI
        LOOP NEXT_S
        LEA DX,STRING2
        MOV AH,9
        INT 21H
        LEA DX,STRING3
        MOV AH,9
        INT 21H
        LEA DI,BUFFER
        ADD DI,80H
CIRC_S: CMP BYTE PTR [DI],0FFH
        JZ  GO_S
        MOV AL,[DI]
        MOV FILELEN,AL
        INC DI
        JMP CIRC_S
GO_S:   LEA DI,BUFFER
        MOV AL,FILELEN
        MOV BL,FILELEN
        ADD AL,BL
        ADD AL,10H
        MOV AH,0
        ADD DI,AX
        MOV BX,[DI]
        MOV AX,0Ff00H
        SUB AX,BX
        MOV BX,AX
        add bx,100h
        CALL LIST
        RET
SHOW    ENDP

LIST    PROC        ;LIST A WORD WITH HEX FORM
        PUSH CX
        MOV DL,' '
        MOV AH,2
        INT 21H
        MOV CX,404H
NEXT_L: ROL BX,CL
        MOV DL,BL
        AND DL,0FH
        ADD DL,30H
        CMP DL,39H
        JLE PRINT_L
        ADD DL,7
PRINT_L:MOV AH,2
        INT 21H
        DEC CH
        JNZ NEXT_L
        POP CX
        RET
LIST    ENDP

DISPLAY PROC
        MOV CH,FILELEN
        CMP CH,0
        JZ  EXIT_D
        LEA DI,BUFFER
        ADD DI,100H
        LEA DX,STRING4
        MOV AH,9
        INT 21H
AGAIN_D:MOV DL,0dh
        MOV AH,2
        INT 21H
        mov dl,0ah
        mov ah,2
        int 21h
        MOV AX,NUM                  ;SHOW FILE SERIERS
        MOV DL,AH
        MOV AH,2
        INT 21H
        MOV AX,NUM
        MOV DL,AL
        MOV AH,2
        INT 21H
        MOV DL,' '
        MOV AH,2
        INT 21H
        MOV CL,10H                  ;SHOW FILE NAME
NEXT_D: MOV DL,[DI]
        MOV AH,2
        INT 21H
        INC DI
        DEC CL
        JNZ NEXT_D
        ADD DI,8
        MOV BX,[DI]
        CALL LIST
        MOV AX,NUM
        INC AL
        CMP AL,3AH
        JNZ CONTI_D
        INC AH
        MOV AL,30H
CONTI_D:MOV NUM,AX
        ADD DI,8
        DEC CH
        JNZ AGAIN_D
EXIT_D: RET
DISPLAY ENDP

code    ends
        end start

⌨️ 快捷键说明

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