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

📄 text.asm

📁 用汇编语言写的简易文本编辑器,特别之处在巧妙使用宏,可学习系统功能调用,能模仿记事本大部分功能.
💻 ASM
📖 第 1 页 / 共 2 页
字号:
        CALL BACK_DISP 
        JMP GET_CHAR 
MENU_N:     ;定义各个菜单项 
        NEW_W 0,65H,5,1,5,8 
        LOCAL_C 0,5,0 
        OUTPUT_S FILE5 
        NEW_W 0,15H,1,1,1,8 
        LOCAL_C 0,1,0 
        OUTPUT_S FILE1 
        READ_C 
        CMP AH,48H 
        JE  MENU_N 
        CMP AL,0DH 
        JE  NEW_1 
        CMP AH,50H 
        JE  MENU_O 
        JMP MENU_HIDE 
MENU_N1:JMP MENU_N 
MENU_O: 
        NEW_W 0,65H,1,1,1,8 
        LOCAL_C 0,1,0 
        OUTPUT_S FILE1 
        NEW_W 0,15H,2,1,2,8 
        LOCAL_C 0,2,0 
        OUTPUT_S FILE2 
        READ_C 
        CMP AH,48H 
        JE  MENU_O 
        CMP AL,0DH 
        JE OPEN_1 
        CMP AH,50H 
        JE  MENU_S 
        JMP MENU_HIDE 
NEW_1:  JMP NEW_2 
MENU_S: 
        NEW_W 0,65H,2,1,2,8 
        LOCAL_C 0,2,0 
        OUTPUT_S FILE2 
        NEW_W 0,15H,3,1,3,8 
        LOCAL_C 0,3,0 
        OUTPUT_S FILE3 
        READ_C 
        CMP AL,0DH 
        JE  SAVE_1 
        CMP AH,48H 
        JE  MENU_S 
        CMP AH,50H 
        JE  MENU_A 
        JMP MENU_HIDE 
OPEN_1: JMP OPEN_2 
MENU_N2:JMP MENU_N 
MENU_A: 
        NEW_W 0,65H,3,1,3,8 
        LOCAL_C 0,3,0 
        OUTPUT_S FILE3 
        NEW_W 0,15H,4,1,4,8 
        LOCAL_C 0,4,0 
        OUTPUT_S FILE4 
        READ_C 
        CMP AH,1CH 
        JE  SAVE_2 
        CMP AH,48H 
        JE  MENU_A 
        CMP AH,50H 
        JE  MENU_E 
        JMP MENU_HIDE 
manu_n2:JMP MENU_N2 
NEW_2:  JMP NEW 
SAVE_1: CALL SAVE 
SAVE_2: CALL SAVE_AS 
MENU_E: 
        NEW_W 0,65H,4,1,4,8 
        LOCAL_C 0,4,0 
        OUTPUT_S FILE4 
        NEW_W 0,15H,5,1,5,8 
        LOCAL_C 0,5,0 
        OUTPUT_S FILE5 
        READ_C 
        CMP AH,50H 
        JE  manu_n2 
        CMP AH,48H 
        JE  MENU_E 
        CMP AH,1CH 
        JE  EXIT 
        JMP MENU_HIDE 
EXIT: 
        CALL BACK_DISP 
        NEW_W 0,54H,15,10,17,61 
        NEW_W 0,24H,14,9,16,60 
        LOCAL_C 0,15,9 
        OUTPUT_S INFO4 
        INPUT_C 
        CMP AL,79H                                     
        JNZ QQ 
        CALL QUIT1 
QQ:      CMP AL,6EH 
        JE  QUIT 
QUIT:   NEW_W 0,54H,0,0,24,79 
        LOCAL_C 0,0,0 
        END_P 
        RET 
MENU_SHOW ENDP 
NEW PROC NEAR                        ;新建文件 
        GET_C 
        PUSH DX 
        CALL BACK_DISP 
        NEW_W 0,54H,15,10,17,61 
        NEW_W 0,24H,14,9,16,60, 
        LOCAL_C 0,15,9 
        OUTPUT_S INFO1 
        CMP AL,0DH 
        MOV BX,0 
A1: 
        INPUT_C 
        CMP AL,0DH 
        JE  A2 
        MOV PPA[BX],AL 
        INC BX 
        JMP A1 
A2: 
        NEW_W 0,3EH,15,9,17,61 
        POP DX 
        LOCAL_C 0,DH,DL 
        NEW_F PPA,00 
        MOV HAND,AX 
        CLOSE_F AX 
        NEW_W 0,3EH,1,0,23,79 
        LOCAL_C 0,1,0 
        JMP GET_CHAR 
NEW     ENDP 
OPEN_2: JMP OPEN 
OPEN PROC NEAR                            ;打开文件 
        CALL BACK_DISP 
        NEW_W 0,54H,15,10,17,61     
        NEW_W 0,24H,14,9,16,60 
        LOCAL_C 0,15,9 
        OUTPUT_S INFO3 
        MOV BX,0 
A5: 
        INPUT_C 
        CMP AL,13 
        JE  A6 
        MOV PPA[BX],AL 
        INC BX 
        JMP A5 
A6: 
        NEW_W 0,3EH,1,0,23,79 
        MOV AH,3DH      ;打开文件       
        LEA DX,PPA     ;DX=ASCII码串首地址 
        MOV AL,0        ;AL=0读、1写、2读/写 
        INT 21H                               
        MOV HAND,AX 
        MOV AH,3FH        ;读文件 
        LEA DX,BUF      ;DX=数据缓冲区首地址 
        MOV BX,HAND      ;BX=文件句柄号 
        MOV CX,2000        ;CX=读字节数 
        INT 21H                               
        NEW_W 0,3EH,1,23,1,79 
        LOCAL_C 0,1,0 
        MOV CX,2000 
        SUB BX,BX 
REP: 
        OUTPUT_C BUF[BX] 
        INC BX 
        LOOP REP 
        CLOSE_F HAND 
        LOCAL_C 0,1,0 
        MOV CX,10 
        MOV BX,0 
C3: 
        MOV BL,0 
        MOV PPA[BX],BL 
        LOOP C3 
        JMP GET_CHAR 
OPEN    ENDP 
SAVE PROC NEAR                               ;保存文件 
        GET_C 
        PUSH DX 
        NEW_W 0,3EH,1,0,6,10 
        CALL BACK_DISP 
        MOV AH,PPA 
        CMP AH,21H 
        JL B1 
        JMP B2 
B1: 
        NEW_W 0,54H,15,10,17,61 
        NEW_W 0,24H,14,9,16,60, 
        LOCAL_C 0,15,9 
        OUTPUT_S INFO2 
        MOV BX,0 
C1: 
        INPUT_C 
        CMP AL,0DH 
        JE C2 
        MOV PPA[BX],AL 
        INC BX 
        JMP C1 
C2: 
        NEW_W 0,3EH,1,0,23,79 
        POP DX 
        LOCAL_C 0,DH,DL 
B2:    NEW_F PPA,00 
        MOV HAND,AX 
        WRITE_F BUF,HAND,2000 
        CLOSE_F HAND 
        CALL BACK_DISP 
        JMP GET_CHAR 
SAVE ENDP 
SAVE_AS  PROC NEAR                       ;另存为文件                                                 
        NEW_W 0,3EH,1,0,6,10 
        CALL BACK_DISP 
        NEW_W 0,54H,15,10,17,61 
        NEW_W 0,24H,14,9,16,60, 
        LOCAL_C 0,15,9 
        OUTPUT_S INFO2 
        MOV BX,0 
A3: 
        INPUT_C 
        CMP AL,0DH 
        JE A4 
        MOV PPA[BX],AL 
        INC BX 
        JMP A3 
A4: 
        GET_C 
        PUSH DX 
        NEW_W 0,3EH,1,0,23,79 
        CALL BACK_DISP 
        POP DX 
        LOCAL_C 0,DH,DL 
        NEW_F PPA,00 
        MOV HAND,AX 
        WRITE_F BUF,HAND,2000 
        CLOSE_F HAND 
        CALL BACK_DISP 
        JMP GET_CHAR 
SAVE_AS  ENDP 
SAVE_DISP PROC NEAR 
        PUSH AX 
        PUSH BX 
        PUSH CX 
        PUSH DX 
        PUSH DS 
        MOV AX,0002H ;鼠标功能调用,光标消隐 
        INT 33H   
        MOV BX,0D 
        MOV CX,2800D 
LOOP1: 
        MOV AX,0B800H 
        MOV DS,AX 
        MOV DL,DS:[BX] 
        MOV AX,DATA 
        MOV DS,AX 
        MOV BAKE[BX],DL 
        INC BX 
        LOOP LOOP1 
        MOV AX,0001H  ;鼠标功能调用,显示鼠标 
        INT 33H 
        POP DS 
        POP DX 
        POP CX 
        POP BX 
        POP AX 
SAVE_DISP ENDP 
BACK_DISP PROC NEAR 
        PUSH AX 
        PUSH BX 
        PUSH CX 
        PUSH DX 
        PUSH DS 
        MOV BX,0D 
        MOV CX,2800D 
LOOP2: 
        MOV AX,DATA 
        MOV DS,AX 
        MOV DL,BAKE[BX] 
        MOV AX,0B800H 
        MOV DS,AX 
        MOV DS:[BX],DL 
        INC BX 
        LOOP LOOP2 
        POP DS 
        POP DX 
        POP CX 
        POP BX 
        POP AX 
        RET 
BACK_DISP ENDP 
QUIT1   PROC NEAR                     ;退出 
        CALL BACK_DISP 
        NEW_W 0,54H,15,10,17,61 
        NEW_W 0,24H,14,9,16,60, 
        LOCAL_C 0,15,9 
        OUTPUT_S INFO2 
        MOV BX,0 
D1: 
        INPUT_C 
        CMP AL,0DH 
        JE  D2 
        MOV PPA[BX],AL 
        INC BX 
        JMP D1 
D2: 
        NEW_W 0,54H,15,10,17,61 
        NEW_W 0,24H,14,9,16,60 
        CALL BACK_DISP 
        NEW_F PPA,00 
        MOV HAND,AX 
        WRITE_F BUF,HAND,2000 
        CLOSE_F HAND 
        CALL BACK_DISP 
        NEW_W 0,54H,0,0,24,79 
        END_P 
        RET 
QUIT1   ENDP 
EDIT    ENDP   
CODE    ENDS                           
        END BEGIN                          ;结束 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -