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

📄 file.asm

📁 用汇编语言实现的
💻 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 + -