📄 mian1.asm
字号:
extrn begin:far
extrn begi:far
rjg segment
biao db ' file edit bloc help exit '
handle DW ?
filename label byte
a db 0
b db 0
c db 0
d db 0
row db 1
e db 0
f db 0
namelen db ?
errcde db 0
endcde db 0
ioarea db 32 dup(' ')
dan db 'new openclos'
pathnam db 16 dup (' ')
dan1 db 'cut copyshei'
opnmsg DB '***open error***',0dh,0ah
wrtpath db '*please input newname*','$'
wrtmsg db '* * * write error * * *',0dh,0ah
dan2 db 'cut copyshei'
han1 dw ?
han2 dw ?
file1 db 'c:\data.doc',0
file2 db 'c:\data.dat',0
file3 db 'c:\name.dat',0
buf db 256 dup(?),'$'
buff db 256 dup(?),'$'
h1 db '*****************************帮助信息************************************','$'
h2 db ' 本程序所名称是文本编辑器。本程序所完成的功能是建立文件、打开','$'
h3 db ' 文件、插入文件功能,还包括对文件进行添加、删除等编辑功能。能','$'
h4 db ' 实现块操作如剪切、删除粘贴等。开始按F1、F2、F3分别显示不同的','$'
h5 db ' 菜单,基本程序所有的功能。按F5执行帮助功能。按f4进入文件操作模块。','$'
h6 db ' 按f1执行新建文件功能,按f2执行打开、与修改并保存文件功能,按','$'
h7 db ' f3执行文件插入功能。在执行f1、f2、f3操作中,按f4跳出,在文件','$'
h8 db ' f2操作过程中,按f5执行删除功能,按f6执行添加功能按f9执行块操作功能。','$'
h9 db ' *****************************************************************','$'
h10 db ' *****************************************************************','$'
rjg ends
prognam segment
main proc far
assume cs:prognam,ds:prognam
start:
push ds
mov ax,0
push ax
mov ax,rjg
mov ds,ax
call help
call clen
mov ax,0600
mov bh,1eh
mov cx,0
mov dx,184fh
int 10h
mov ah,02h
mov dh,0
mov bx,0
mov dl,0
int 10h
mov ah,09h
mov al,' '
mov bh,0
mov bl,0dah
mov cx,80
int 10h
lea bx,biao
mov cx,53d
repeat:
mov ah,02h
mov dl,[bx] ;17
int 21h
inc bx
loop repeat
mov bh,0h
mov ah,2h
mov dh,2
mov dl,2
int 10h
repea:
mov ah,07h
int 21h
call clen
cmp al,3bh
jne x0
call cai
jmp repea
x0: ;菜单二
cmp al,3ch
jne x00
call cai1
jmp repea
x00: ;菜单三
cmp al,3dh
jne x000
call cai2
jmp repea
x000: ;帮助
cmp al,3fh
jne x0000
call help
jmp repea
x0000:
cmp al,3eh
jne repea
;------------------
en: ;文件操作
mov ah,07h
int 21h
call clen
cmp al,3bh
jne b0
call begin ;新建文件
jmp en
b0:
cmp al,3ch
jne b00
call begi ;打开文件
jmp en
b00:
cmp al,3dh
jne b000
call wen3 ;插入文件
jmp en
b000:
cmp al,3eh
jne en
;------------------------------------
enn:
ret
main endp
;-----------------------------------
cai proc near
push ax
push bx
push cx
push dx
mov ah,2
mov dh,1
mov dl,1
int 10h
mov ah,09h
mov al,' '
mov bh,0 ;xian shi cai dan
mov bl,02ah
mov cx,5
int 10h
mov ah,2
mov dh,2
mov dl,1
int 10h
mov ah,09h
mov al,' '
mov bh,0 ;xian shi cai dan
mov bl,02ah
mov cx,5
int 10h
mov ah,2
mov dh,3
mov dl,1
int 10h
mov ah,09h
mov al,' '
mov bh,0 ;xian shi cai dan
mov bl,02ah
mov cx,5
int 10h
mov ah,2
mov dh,1
mov dl,1
int 10h
mov cx,4
lea si,dan
z1:
mov ah,02h
mov dl,[si] ;17
int 21h
inc si
loop z1
mov ah,2
mov dh,2
mov dl,1
int 10h
int 10h
mov cx,4
z2:
mov ah,02h
mov dl,[si] ;17
int 21h
inc si
loop z2
mov ah,2
mov dh,3
mov dl,1
int 10h
int 10h
mov cx,4
z3:
mov ah,02h
mov dl,[si] ;17
int 21h
inc si
loop z3
mov ax,0600
mov bh,1eh
mov cx,0
mov dx,184fh
int 10h
pop dx
pop cx
pop bx
pop ax
ret
cai endp
;--------------------------------
cai1 proc near
push ax
push bx
push cx
push dx
mov ah,2
mov dh,1
mov dl,12
int 10h
mov ah,09h
mov al,' '
mov bh,0 ;xian shi cai dan
mov bl,02ah
mov cx,5
int 10h
mov ah,2
mov dh,2
mov dl,12
int 10h
mov ah,09h
mov al,' '
mov bh,0 ;xian shi cai dan
mov bl,02ah
mov cx,5
int 10h
mov ah,2
mov dh,3
mov dl,12
int 10h
mov ah,09h
mov al,' '
mov bh,0 ;xian shi cai dan
mov bl,02ah
mov cx,5
int 10h
mov ah,2
mov dh,1
mov dl,12
int 10h
mov cx,4
lea si,dan1
z11:
mov ah,02h
mov dl,[si] ;17
int 21h
inc si
loop z11
;-----------------------------------
mov ah,2
mov dh,2
mov dl,12
int 10h
int 10h
mov cx,4
z22:
mov ah,02h
mov dl,[si] ;17
int 21h
inc si
loop z22
mov ah,2
mov dh,3
mov dl,12
int 10h
int 10h
mov cx,4
z33:
mov ah,02h
mov dl,[si] ;17
int 21h
inc si
loop z33
mov ax,0600
mov bh,1eh
mov cx,0
mov dx,184fh
int 10h
pop dx
pop cx
pop bx
pop ax
ret
cai1 endp
;----------------------------------
cai2 proc near
push ax
push bx
push cx
push dx
mov ah,2
mov dh,1
mov dl,25
int 10h
mov ah,09h
mov al,' '
mov bh,0 ;xian shi cai dan
mov bl,02ah
mov cx,5
int 10h
mov ah,2
mov dh,2
mov dl,25
int 10h
mov ah,09h
mov al,' '
mov bh,0 ;xian shi cai dan
mov bl,02ah
mov cx,5
int 10h
mov ah,2
mov dh,3
mov dl,25
int 10h
mov ah,09h
mov al,' '
mov bh,0 ;xian shi cai dan
mov bl,02ah
mov cx,5
int 10h
mov ah,2
mov dh,1
mov dl,25
int 10h
mov cx,4
lea si,dan2
a11:
mov ah,02h
mov dl,[si] ;17
int 21h
inc si
loop a11
mov ah,2
mov dh,2
mov dl,25
int 10h
int 10h
mov cx,4
a22:
mov ah,02h
mov dl,[si] ;17
int 21h
inc si
loop a22
mov ah,2
mov dh,3
mov dl,25
int 10h
int 10h
mov cx,4
a33:
mov ah,02h
mov dl,[si] ;17
int 21h
inc si
loop a33
mov ax,0600
mov bh,1eh
mov cx,0
mov dx,184fh
int 10h
pop dx
pop cx
pop bx
pop ax
ret
cai2 endp
;-------------------------------------------
clen proc near
push ax
push bx
push cx
push dx
mov ah,02h
mov dh,1
mov han1,25d
cle:
mov ah,2h
mov dl,0
int 10h
mov ah,09h
mov al,' '
mov bl,90h
mov bh,0
mov cx,80
int 10h
inc dh
dec han1
cmp han1,01h
jne cle
pop dx
pop cx
pop bx
pop ax
ret
clen endp
;------------------------------------------
;********************************************************
wen3 proc near
mov ah,3ch
mov cx,0
mov dx,offset file1
int 21h
mov han1,ax
;建立文件
mov ax,3d02h
mov dx,offset file2
int 21h
;打开文件
mov bx,ax
mov han2,ax
mov ah,3fh
mov cx,256
mov dx,offset buf
int 21h
;将文件f2钟的前256个字母放到buf中
mov ah,40h
mov bx,han1
mov cx,256
mov dx,offset buf
int 21h
mov ax,3d02h
mov dx,offset file3
int 21h
mov bx,ax
mov ah,3fh
mov cx,256
mov dx,offset buf
int 21h
mov ah,3eh
int 21h
mov ah,40h
mov bx,han1
mov cx,256
mov dx,offset buf
int 21h
main1:
mov ah,3fh
mov bx,han2
mov cx,256
mov dx,offset buf
int 21h
or ax,ax
jz main2
mov ah,40h
mov bx,han1
mov cx,256
mov dx,offset buf
int 21h
jmp main1
main2:
mov ah,3eh ;关闭文件
int 21h
mov ah,41h ;删除文件
mov dx,offset file2
int 21h
mov ah,3eh ;关闭文件
mov bx,han1
int 21h
mov ax,ds
mov es,ax
mov ah,56h
mov dx,offset file1
mov di,offset file2
int 21h
ret
wen3 endp
;------------------------------------------
errm PROC NEAR
MOV AH,40h
MOV BX,01
MOV CX,21 ;138
INT 21h
MOV errcde,01
RET
errm ENDP
;*************************************************************
y1 proc near ;光标移动
push ax
push bx
push dx
mov ah,3
int 10h
mov ah,2 ;行减一
dec dh
int 10h
pop dx
pop bx
pop ax
ret
y1 endp
;----------------------------------------
y2 proc near
push ax
push bx
push dx
mov ah,3
int 10h
mov ah,2
dec dl ;列减一
int 10h ;83
pop dx
pop bx
pop ax
ret
y2 endp
;--------------------------------------
y3 proc near
push ax
push bx
push dx
mov ah,3
int 10h
mov ah,2
inc dh ;行加一
int 10h
pop dx
pop bx
pop ax
ret
y3 endp
;--------------------------------------------
y4 proc near
push ax
push bx
push dx
mov ah,3
int 10h
mov ah,2
inc dl ;列加一
int 10h
pop dx
pop bx
pop ax
ret
y4 endp
;----------------------------------------
;******************************************************
help proc near
call clen
mov ah,2
mov dh,3
mov dl,1
int 10h
lea dx,h1
mov ah,09h
int 21h
mov ah,2
mov dh,5
mov dl,1
int 10h
lea dx,h2
mov ah,09
int 21h
mov ah,2
mov dh,6
mov dl,1
int 10h
lea dx,h3
mov ah,09
int 21h
mov ah,2
mov dh,7
mov dl,1
int 10h
lea dx,h4
mov ah,09
int 21h
mov ah,2
mov dh,8
mov dl,1
int 10h
lea dx,h5
mov ah,09
int 21h
mov ah,2
mov dh,9
mov dl,1
int 10h
lea dx,h6
mov ah,09
int 21h
mov ah,2
mov dh,10
mov dl,1
int 10h
lea dx,h7
mov ah,09
int 21h
mov ah,2
mov dh,11
mov dl,1
int 10h
lea dx,h8
mov ah,09
int 21h
mov ah,2
mov dh,12
mov dl,1
int 10h
lea dx,h9
mov ah,09
int 21h
mov ah,2
mov dh,13
mov dl,1
int 10h
lea dx,h10
mov ah,09
int 21h
mov ah,07h
int 21h
call clen
ret
help endp
curs proc near
mov ah,02
mov bh,0
mov dl,0
mov dh,row
int 10h
ret
curs endp
;-----------------------------------------
prognam ends
end start
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -