📄 p29.asm
字号:
.model small
.stack 100
TITLE FILE SIZE
.data
BUFFER DB 30
ACTUAL DB 06
FILE DB 30 DUP (0)
HANDLE DW 0
M1 DB 10,13,'ENTER THE FILE NAME : $'
M2 DB 10,13,'FILE OPEN ERROR $'
M3 DB 10,13,'FILE CLOSE ERROR $'
M4 DB 10,13,'FILE POINTER ERROR$'
M5 DB 10,13,'FILE SIZE IS $'
SIZE1 DW 0
SIZE2 DW 0
.code
START: MOV AX,@data
MOV DS,AX ; Display message M1
MOV AH,09H
LEA DX,M1
INT 21H
MOV AH,0AH ; I/P the file name
LEA DX,BUFFER
INT 21H
LEA BX,ACTUAL ; Load no. of character in file
MOV CL,[BX] ; Name in CX
MOV CH,0
INC BX
ADD BX,CX
MOV BYTE PTR [BX],0 ; Convert file name to ASCII
MOV AH,3DH ; By putting 0 at it's end string
MOV AL,0
LEA DX,FILE ; Open file
INT 21H
JC ERROR2 ; If error display error
; Message else
MOV HANDLE,AX ; Save file handle
MOV AH,42H
MOV BX,HANDLE ; MOV file pointer to the end
; Of file
MOV AL,2
MOV CX,0
MOV DX,0
INT 21H
JC ERROR3
MOV SIZE1,DX ; DX:AX gives new offset of file
; Pointer
MOV SIZE2,AX
MOV AH,9
LEA DX,M5
INT 21H
MOV DX,SIZE1
MOV AX,SIZE2
MOV BX,10
MOV CX,5
BACK1: DIV BX ; Convert hex to BCD
PUSH DX
XOR DX,DX
LOOP BACK1
MOV CX,5
BACK2: POP DX ; Display file size
ADD DL,30H
MOV AH,2
INT 21H
LOOP BACK2
JMP EXIT
ERROR2: MOV AH,9 ; Display file open error
LEA DX,M2
INT 21H
JMP EXIT
ERROR3: MOV AH,9
LEA DX,M3 ; Display file close error
INT 21H
JMP EXIT
ERROR4: MOV AH,9 ; Display file pointer error
LEA DX,M4
INT 21H
JMP TERMIN
EXIT : MOV AH,3EH ; Close the file
MOV BX,HANDLE
INT 21H
JC ERROR4
TERMIN: MOV AH,4CH ; Terminate & exit to DOS
INT 21H
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -