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

📄 readfl.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 0fC00h dup(?)
STRING1  DB 'NUMBER OF FILE TO READ:','$'
STRING2  DB 0DH,0AH,'PATH&NAME TO SAVE:','$'
STRING3  DB 0DH,0AH,'CAN  NOT MAKE FILE ON DISK!!','$'
PATH     DB 50 DUP(0)
HANDLE  DW ?
FILELEN  DW ?
CHOICE   DB ?
FILESTA   DW ?
DATA     ENDS

CODE     SEGMENT
         ASSUME CS:CODE,DS:DATA
START:   MOV AX,DATA   ;PROMPT
         MOV DS,AX
         LEA DX,STRING1
         MOV AH,9
         INT 21H
         MOV AH,1       ;GET NUMBER
         INT 21H
         AND AL,0FH
         MOV BL,AL
         MOV AH,1
         INT 21H
         CMP AL,0DH
         JZ GOON
         AND AL,0FH
         ADD BL,AL
goon:    MOV CHOICE,BL 
         LEA DX,STRING2 ;GET FILE PATH
         MOV AH,9
         INT 21H
         LEA SI,PATH
NEXT_I:  MOV AH,1
         INT 21H
         CMP AL,0DH
         JZ GOO
         MOV [SI],AL
         INC SI
         JMP NEXT_I
GOO:   mov dx,port_d   ;control word
        mov al,80h
        out dx,al
        mov dx,port_ce   ;read cmd
        mov al,00h
        out dx,al
        MOV AL,CHOICE
        MOV BL,20H
        MUL BL
        MOV BX,AX
        ADD BX,0e0H
        CALL READ
        CMP AL,0FFH    ;CHECK FILE NAME
        JZ START
        ADD BX,10H     ;READ FILE BEGIN
        CALL READ
        MOV CL,AL
        INC BX
        CALL READ
        MOV CH,AL
        MOV FILESTA,CX
        ADD BX,7       ;READ FILE LENGTH
        CALL READ
        MOV CL,AL
        INC BX
        CALL READ
        MOV CH,AL
        MOV FILELEN,CX
        MOV BX,FILESTA ; READ FILE TO BUFFER
        LEA SI,BUFFER
NEXT_R:CALL READ
        MOV [SI],AL
        INC SI
        INC BX
        LOOP NEXT_R
        CALL MAKE     ;MAKE FILE ON DISK
        CMP CX,1
        JZ EXIT
        CALL WRITE    ; WRITE BUFFER TO FILE
EXIT:   MOV AH,4CH
        INT 21H

READ   PROC           ;READ A BYTE FROM FLASH
        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
        RET
READ   ENDP

MAKE   PROC         ;MAKE FILE ON DISK
        MOV AH,3CH
        MOV CX,0
        LEA DX,PATH
        INT 21H
        JC ERR_M
        MOV HANDLE,AX ;SAVE FILE HANDLE
        RET
ERR_M: LEA DX, STRING3
        MOV AH,9
        INT 21H
        MOV CX,1
        RET
MAKE   ENDP

WRITE   PROC        ;WRITE BUFFER TO FILE
         MOV AH,40H
         MOV BX,HANDLE
         LEA DX,BUFFER
         MOV CX,FILELEN
         INT 21H
         JNC EXIT_W
        LEA DX, STRING3
        MOV AH,9
        INT 21H
EXIT_W:MOV AH,3EH
        MOV BX,HANDLE
        INT 21H
        RET
WRITE  ENDP
         
CODE   ENDS
       END START
        

⌨️ 快捷键说明

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