📄 file.asm
字号:
DATA SEGMENT
ERR DB 'error:$'
TXT1 DB '1.txt', 00
BUF1 DB 100 DUP (0)
LEN1 DW $-BUF1
SIZE1 DW 0
TXT2 DB '2.txt', 00
BUF2 DB 100 DUP (0)
DATA ENDS
;================================
STACK SEGMENT PARA STACK 'STACK'
DB 100 DUP (0)
STACK ENDS
;================================
CODE SEGMENT
ASSUME CS:CODE, DS:DATA, SS:STACK
MAIN: MOV AX, DATA
MOV DS, AX
MOV AX, 0
CALL READ
CALL MATCH
MOV AH, 1
INT 21H
MOV AH, 4CH
INT 21H
;================================
;=读文件TXT1进BUF1
;================================
READ PROC NEAR
PUSH AX
PUSH DX
PUSH CX
PUSH BX
PUSH DI
;=Init
MOV SIZE1, 0
;=Open
LEA DX, TXT1
MOV AL, 0
MOV AH, 3DH
INT 21H
JC ERROR
;=Load
MOV BX, AX
MOV CX, LEN1
LEA DX, BUF1
MOV AH, 3FH
INT 21H
JC ERROR
MOV AH, 0
MOV SIZE1, AX
QUIT: POP DI
POP BX
POP CX
POP DX
POP AX
RET
;=output error msg
ERROR: MOV DX, OFFSET ERR
MOV AH, 9
INT 21H
MOV DX, AX
MOV AH, 6
INT 21H
JMP QUIT
READ ENDP
;================================
;================================
;=判断字符是否在BUF1出现,在的话写进缓冲区BUF2
;================================
MATCH PROC NEAR
PUSH AX
PUSH DX
PUSH CX
PUSH BX
PUSH DI
PUSH SI
;=Open
LEA DX, TXT2
MOV AL, 0
MOV AH, 3DH
INT 21H
JC FAIL
;=Read
MOV DI, 0
MOV BX, AX
BEGIN: LEA DX, BUF2 ;read
ADD DX, DI
MOV CX, 1
MOV AH, 3FH
INT 21H
JC FAIL
CMP AX, 1
JL WRITE
MOV SI, 0
NEXT: CMP SI, SIZE1
JGE M
MOV DL, [BUF1+SI]
MOV CL, [BUF2+DI]
CMP DL, CL
JZ BEGIN
INC SI
JMP NEXT
M: INC DI
JMP BEGIN
WRITE: MOV AH, 3EH ;close
INT 21H
LEA DX, TXT2 ;delete
MOV AH, 41H
INT 21H
CMP AX, 0
JNE FAIL
LEA DX, TXT2 ;new
MOV CX, 0
MOV AH, 3CH
INT 21H
JC FAIL
LEA DX, BUF2 ;write
MOV BX, AX
MOV CX, DI
MOV AH, 40H
INT 21H
JC FAIL
FIN: POP SI
POP DI
POP BX
POP CX
POP DX
POP AX
RET
;=output error msg
FAIL: MOV DX, OFFSET ERR
MOV AH, 9
INT 21H
MOV DX, AX
MOV AH, 6
INT 21H
JMP FIN
MATCH ENDP
;================================
CODE ENDS
END MAIN
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -