📄 list.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 + -