📄 5-delblank.asm
字号:
.MODEL SMALL
.CODE
ORG 100H
START: JMP MAIN
READ_FROM DB 'DELBLANK.ASM',0
WRITE_TO DB 'OUTFILE.TXT',0
RHANDLE DW ?
WHANDLE DW ?
BYTES DW ?
ERROR DB 0DH,0AH,'Disk operation error !$'
ON_SCREEN EQU 02H
PRINT_SCREEN EQU 09H
CREATE_FILE EQU 3CH
OPEN_FILE EQU 3DH
CLOSE_FILE EQU 3EH
READ_FILE EQU 3FH
WRITE_FILE EQU 40H
DOS MACRO $AH
MOV AH,$AH
INT 21H
ENDM
GO_OUT: MOV DX,OFFSET ERROR
DOS PRINT_SCREEN
INT 20H
MAIN: MOV AL,00H
MOV DX,OFFSET READ_FROM
DOS OPEN_FILE ;打开文件
JC GO_OUT ;出错则退出
MOV RHANDLE,AX
MOV CX,20H ;文档文件
MOV DX,OFFSET WRITE_TO
DOS CREATE_FILE ;创建文件
JC GO_OUT
MOV WHANDLE,AX
NEXT: MOV BX,RHANDLE
MOV CX,BUF_SIZE
MOV DX,BUF_START
DOS READ_FILE ;读文件
JC GO_OUT
MOV BYTES,AX
MOV CX,AX
JCXZ STOP ;文件尾
MOV SI,BUF_START
MOV DI,SI ;读一个字节写回到原来的地方
MOV CX,BYTES
MOV BX,0 ;BX存放真正写入的字节数(大于' ')
LOAD_ONE: LODSB
CMP AL,' '
JBE BLANK ;如果大于空格则存起来
STOSB
MOV DL,AL
DOS ON_SCREEN ;显示
INC BX
BLANK: LOOP LOAD_ONE
MOV AX,BX ;临时放在AX中
MOV BX,WHANDLE
MOV CX,AX
MOV DX,BUF_START
DOS WRITE_FILE ;写文件
JC GO_OUT ;出错
CMP BYTES,BUF_SIZE
JC NEXT
STOP: MOV BX,RHANDLE
DOS CLOSE_FILE
MOV BX,WHANDLE
DOS CLOSE_FILE
INT 20H
BUF_START EQU 800H ;define the buffer
BUF_SIZE EQU 800H
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -