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

📄 5-delblank.asm

📁 删除文件中的空格
💻 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 + -