📄 q.asm
字号:
CODE SEGMENT PUBLIC
ASSUME CS:CODE,DS:CODE
ORG 100H
START: JMP BEGIN
MSG1 DB 'FAT id byte=','$'
MSG2 DB 'Number of cluster=','$'
MSG3 DB 'Sectors per clusters','$'
MSG4 DB 'Sector size=','$'
STRING DB 6 DUP(?),0DH,0AH,'$'
FATID DB 0
CLUST DW 0
SECT DB 0
SECSIZE DW 0
;
;conver
;
NUMASC PROC
MOV CX,6
MOV BX,OFFSET STRING
BLANK: MOV BYTE PTR[BX],' '
INC BX
LOOP BLANK
MOV SI,10
NEXT: XOR DX,DX
DIV SI
ADD DX,'0'
DEC BX
MOV [BX],DL
OR AX,AX
JNZ NEXT
RET
NUMASC ENDP
;
;main pro
;
BEGIN: MOV AX,CS
MOV DS,AX
PUSH DS
MOV DL,03H
MOV AH,1CH
INT 21H
MOV AH,[BX]
POP DS
MOV BYTE PTR FATID,AH
MOV WORD PTR CLUST,DX
MOV DX,OFFSET MSG1
MOV AH,09H
INT 21H
XOR AX,AX
MOV AL,BYTE PTR FATID
CALL NUMASC
MOV DX,OFFSET STRING
MOV AH,09H
INT 21H
XOR AX,AX
MOV AX,WORD PTR CLUST
CALL NUMASC
MOV DX,OFFSET STRING
MOV AH,09H
INT 21H
MOV AH,09H
INT 21H
XOR AX,AX
MOV AL,BYTE PTR FATID
CALL NUMASC
MOV DX,OFFSET STRING
MOV AH,09H
INT 21H
MOV DX,OFFSET MSG2
MOV AH,09H
INT 21H
XOR AX,AX
MOV AX,WORD PTR CLUST
CALL NUMASC
MOV DX,OFFSET STRING
MOV AH,09H
INT 21H
MOV DX,OFFSET MSG3
MOV AH,09H
INT 21H
XOR AX,AX
MOV AL,BYTE PTR SECT
CALL NUMASC
MOV DX,OFFSET STRING
MOV AH,09H
INT 21H
MOV DX,OFFSET MSG4
MOV AH,09H
INT 21H
XOR AX,AX
MOV AX,WORD PTR SECSIZE
CALL NUMASC
MOV DX,OFFSET STRING
MOV AH,09H
INT 21H
DONE: MOV AH,01H
INT 21H
CODE ENDS
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -