📄 edit.asm
字号:
mov bx,0
all:
mov ah,1
int 21h
cmp al,0dh
je alll
mov path[bx],al
inc bx
jmp all
alll:
pop dx
pos_curse 0,dh,dl
lea dx,path
mov ah,3ch ; 建立文件
mov cx,00 ;文件属性
int 21h
mov handle,ax
mov bx,ax
mov ah,3eh ;关闭文件
int 21h
win 0,3eh,1,0,23,79
mov dh,1
mov dl,0
mov bh,0
mov ah,2
int 10h
jmp char_get
new endp
open_2: jmp open
saveas proc near ;另存为文件
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
call backdisplay
win 0,07h,15,10,17,61
win 0,24h,14,9,16,60,
mov dh,15
mov dl,9
mov bh,0
mov ah,2
int 10h
lea dx,message2
mov ah,9
int 21h
mov bx,0
bll:
mov ah,1
int 21h
cmp al,0dh
je blll
mov path[bx],al
inc bx
jmp bll
blll:
pos_get
push dx
win 0,3eh,1,0,23,79
call backdisplay
pop dx
pos_curse 0,dh,dl
lea dx,path
mov ah,3ch ; 建立文件
mov cx,00
int 21h
mov handle,ax
lea dx,buffer ; 数据缓冲区地址
mov bx,handle ; 文件代号
mov cx,2000 ; 字节数
mov ah,40h ; 写文件
int 21h
mov bx,handle
mov ah,3eh ; 关闭文件
int 21h
call backdisplay
jmp char_get
saveas endp
open proc near ;打开文件
call backdisplay
win 0,07h,15,10,17,61
win 0,24h,14,9,16,60
mov dh,15
mov dl,9
mov bh,0
mov ah,2 ;置光标位置
int 10h
lea dx,message3
mov ah,9
int 21h
mov bx,0
cll:
mov ah,1
int 21h
cmp al,0dh
je clll
mov path[bx],al
inc bx
jmp cll
clll:
win 0,3eh,1,0,23,79
lea dx,path
mov ah,3dh ;打开文件
mov al,0 ;访问方式 读
int 21h
mov handle,ax
lea dx,buffer
mov bx,handle
mov cx,2000
mov ah,3fh ;读文件
int 21h
win 0,3eh,1,23,1,79
mov dh,1
mov dl,0
mov bh,0
mov ah,2
int 10h
mov cx,1000
sub bx,bx
replay:
mov dl,buffer[bx]
inc bx
mov ah,2
int 21h
loop replay
mov bx,handle
mov ah,3eh ; 关闭文件
int 21h
mov dh,1
mov dl,0
mov bh,0
mov ah,2
int 10h
jmp char_get
open endp
save proc near ;保存文件
pos_get
push dx
win 0,3eh,1,0,6,10
call backdisplay
mov ah,path
cmp ah,21h ; ???
jl j_3
jmp j_4
j_3:
win 0,07h,15,10,17,61
win 0,24h,14,9,16,60,
mov dh,15
mov dl,9
mov bh,0
mov ah,2
int 10h
lea dx,message2
mov ah,9
int 21h
mov bx,0
dll:
mov ah,1
int 21h
cmp al,0dh
je dlll
mov path[bx],al
inc bx
jmp dll
dlll:
win 0,3eh,1,0,23,79
pop dx
pos_curse 0,dh,dl
j_4: lea dx,path
mov ah,3ch ; 建立文件
mov cx,00
int 21h
mov handle,ax
lea dx,buffer
mov bx,handle
mov cx,2000
mov ah,40h ; 写文件
int 21h
mov bx,handle
mov ah,3eh ; 关闭文件
int 21h
call backdisplay
jmp char_get
save endp
menu2_sh proc near
pos_get ;读光标位置
push dx
win 0,06h,2,7,4,17
win 0,65h,1,6,3,16
pos_curse 0,1,6 ;定义光标位置
string manu_6
pos_curse 0,2,6
string manu_7
pos_curse 0,3,6
string manu_8
pop dx
dec dl
pos_curse 0,dh,dl
copmare:
pos_curse 0,1,6
win 0,15h,1,7,1,14
string manu_6
red_chr ;读取字符
cmp ah,1ch
jz manu_n255
cmp ah,50h ;向下
jz manu_c2
cmp ah,48h
jz manu_copy1
jmp manu_hide
manu_hide: ;菜单隐藏
win 0,1eh,1,7,4,17
call backdisplay
jmp char_get
manu_c2:jmp manu_c
manu_n255: ;开始定义各个菜单项
win 0,65h,3,6,3,14
pos_curse 0,3,6
string manu_8
win 0,15h,1,7,1,14
pos_curse 0,1,6
string manu_6
red_chr
cmp ah,48h ;向上
je manu_copy1
cmp al,0dh
jz cut_1
cmp ah,50h
je manu_c
jmp manu_hide
manu_g:
jmp manu_n255
cut_1: jmp cut_2
manu_copy1: win 0,65h,1,6,1,14
pos_curse 0,1,6
string manu_6
jmp manu_copy
manu_cu1:
win 0,65h,2,7,2,14
pos_curse 0,2,6
string manu_7
jmp manu_n255
manu_c: ;第二个子菜单copy
win 0,65h,1,7,1,14
pos_curse 0,1,6
string manu_6
win 0,15h,2,7,2,14
pos_curse 0,2,6
string manu_7
red_chr
cmp ah,48h
je manu_cu1
cmp al,0dh
jz copy_1
cmp ah,50h
je manu_copy
jmp manu_hide
manu_gg:
jmp manu_g
manu_c1:win 0,65h,3,7,3,14
pos_curse 0,3,6
string manu_8
jmp manu_c
copy_1: ret
manu_copy:
win 0,65h,2,7,2,14
pos_curse 0,2,6
string manu_7
win 0,15h,3,7,3,14
pos_curse 0,3,6
string manu_8
red_chr
cmp al,0dh
jz paste
cmp ah,48h
je manu_c1
cmp ah,50h
je manu_gg
jmp manu_hide
paste: ret
cut_2:
ret
menu2_sh endp
savedisplay proc near ;保存窗口
push ax
push bx
push cx
push dx
push ds
mov ax,0002h ;隐藏鼠标光标
int 33h
mov bx,0d
mov cx,3840d
loop1:
mov ax,0b800h
mov ds,ax
mov dl,ds:[bx]
mov ax,data
mov ds,ax
mov bak[bx],dl
inc bx
loop loop1
mov ax,0001h ;显示鼠标光标
int 33h
pop ds
pop dx
pop cx
pop bx
pop ax
savedisplay endp
backdisplay proc near ;还原窗口
push ax
push bx
push cx
push dx
push ds
mov bx,0d
mov cx,3840d
loop11:
mov ax,data
mov ds,ax
mov dl,bak[bx]
mov ax,0b800h
mov ds,ax
mov ds:[bx],dl
inc bx
loop loop11
pop ds
pop dx
pop cx
pop bx
pop ax
ret
backdisplay endp
quitt proc near ;退出
call backdisplay
win 0,07h,15,10,17,61
win 0,24h,14,9,16,60,
mov dh,15
mov dl,9
mov bh,0
mov ah,2
int 10h
lea dx,message2
mov ah,9
int 21h
mov bx,0
qll:
mov ah,1
int 21h
cmp al,0dh
je qlll
mov path[bx],al
inc bx
jmp qll
qlll:
win 0,07h,15,10,17,61
win 0,3eh,14,9,16,60
call backdisplay
lea dx,path
mov ah,3ch ; 建立文件
mov cx,00
int 21h
mov handle,ax
lea dx,buffer
mov bx,handle
mov cx,2000
mov ah,40h ; 写文件
int 21h
mov bx,handle
mov ah,3eh ; 关闭文件
int 21h
call backdisplay
win 0,07h,0,0,24,79
mov ah,4ch
int 21h
ret
quitt endp
edit endp
win3 proc near ;显示日期
mov ah,2ah ;取系统日期
int 21h
mov bl,10d ;DH=月,dl=日
mov ax,0
mov al,dh
div bl
add ax,3030h ;+30h变为字符的ASCII
mov [date+6],al
mov [date+7],ah
mov ax,0
mov al,dl
div bl
add ax,3030h
mov [date+9],al
mov [date+10],ah
win 0,1dh,0,67,0,79
pos_curse 0,0,67
mov dx,offset date
mov ah,09h
int 21h
ret
win3 endp
win4 proc near ;显示行//列
mov ah,03h ;读光标位置
mov bh,0
int 10h
mov bl,100d
mov bh,10d
mov ax,0
mov al,dh
div bl
add al,30h
mov [hanglie+0],al
mov al,ah
mov ah,0
div bh
add ax,3030h
mov [hanglie+1],al
mov [hanglie+2],ah
mov ax,0
mov al,dl
div bl
add al,30h
mov [hanglie+5],al
mov al,ah
mov ah,0
div bh
add ax,3030h
mov [hanglie+6],al
mov [hanglie+7],ah
win 0,1dh,24,60,24,70
pos_curse 0,24,61
mov dx,offset hanglie
mov ah,09h
int 21h
ret
win4 endp
;模块鼠标
;初始化鼠标
mouse proc near
MOV AL,00000010B
OUT 21H,AL ;屏蔽键盘中断
MOV AX,00H ;初始化鼠标
INT 33H
CMP AX,0FFFFH ;当AX不为FFFF时初始化失败结束
JNZ END_PR
MOV AX,01H
INT 33H ;显示鼠标指针
MOV AX,1AH
MOV BX,16D
MOV CX,32D
MOV DX,128D
INT 33H ;设置鼠标灵敏度初值为BX=8,CX=16,DX=64
MOV AX,1CH
MOV BX,2D
INT 33H ;中断速率0-关,1-30,2-50,3-100,4-200
;替换鼠标中断程序
MOV AX,SEG MOUSE1
MOV ES,AX
MOV DX,OFFSET MOUSE1
MOV AX,14H
MOV CX,0000000000001010B
INT 33H
END_LOOP:
CMP END_KEY,00H ;结束程序
JZ END_PR
JMP END_LOOP
END_PR:
MOV AL,00H
OUT 21H,AL
MOV AX,4C00H
INT 21H ;返回DOS
mouse endp
;----------------------------------------------------------------------------------------------------
MOUSE1 PROC NEAR
;保存现场
PUSH AX
PUSH BX
PUSH CX
PUSH DX
;读取鼠标位置
MOV AH,03H ;读取鼠标位置
INT 33H
;恢复现场
POP DX
POP CX
POP BX
POP AX
ret
MOUSE1 endp
code ends
end start ;结束
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -