📄 edxiug.asm
字号:
string manu_12
win 0,06h,1,21,1,31
pos_curse 0,1,0
string manu_11
red_chr
cmp ah,48h ;向上
je manu_setting ;setting
cmp ah,4dh ;向右
jz manu_color1 ;color
cmp al,0dh ;按回车键选中
jz manu_color1 ;color//////////////////////////需要调用color二级子菜单
cmp ah,50h ;向下
je manu_setting ;setting
jmp manu_hid
manu_color1:jmp manu_subcolor
manu_setting:
win 0,65h,1,21,1,31
pos_curse 0,1,0
string manu_11
win 0,06h,2,21,2,31
pos_curse 0,2,0
string manu_12
red_chr
cmp ah,48h ;向上
je manu_color11 ;color
cmp al,0dh ;按回车键选中
jz manu_setting ;setting
cmp ah,50h ;向下
je manu_color11 ;color
jmp manu_hid
manu_color11:jmp manu_color
;.....................................
manu_subcolor:
pos_get
push dx
win 0,06h,3,33,6,51 ;建立菜单子窗口
win 0,65h,2,32,5,50
pos_curse 0,2,0
string color_1
string color_2
string color_3
;
win 0,65h,2,21,2,31 ;保留原有菜单
pos_curse 0,2,0
string manu_12
win 0,06h,1,21,1,31
pos_curse 0,1,0
string manu_11
;
pop dx
dec dl
pos_curse 0,dh,dl
red_chr ;从I/O读取字符
cmp ah,50h ;向下
jz manu_subcolor1
cmp ah,4dh
jz manu_subcolor1
jmp manu_hid
manu_subcolor1:
win 0,65h,4,32,4,50
pos_curse 0,4,0
string color_3
win 0,65h,3,32,3,50
pos_curse 0,3,0
string color_2
win 0,06h,2,32,2,50
pos_curse 0,2,0
string color_1
;
win 0,65h,2,21,2,31 ;保留原有菜单
pos_curse 0,2,0
string manu_12
win 0,06h,1,21,1,31
pos_curse 0,1,0
string manu_11
;
red_chr
cmp ah,48h ;向上
je manu_subcolor33 ;
cmp al,0dh ;按回车键选中
jz manu_chcolor1 ;
cmp ah,50h ;向下
je manu_subcolor2 ;
jmp manu_hid
manu_subcolor33:jmp manu_subcolor3
manu_chcolor1:
mov flag,1
; jmp manu_hid
call setcolor ;////////////////////////////////////////////////
manu_subcolor2:
win 0,65h,4,32,4,50
pos_curse 0,4,0
string color_3
win 0,65h,2,32,2,50
pos_curse 0,2,0
string color_1
win 0,06h,3,32,3,50
pos_curse 0,3,0
string color_2
;
win 0,65h,2,21,2,31 ;保留原有菜单
pos_curse 0,2,0
string manu_12
win 0,06h,1,21,1,31
pos_curse 0,1,0
string manu_11
;
red_chr
cmp ah,48h ;向上
je manu_subcolor11 ;
cmp al,0dh ;按回车键选中
jz manu_chcolor2 ;
cmp ah,50h ;向下
je manu_subcolor3 ;
jmp manu_hid
manu_subcolor11:jmp manu_subcolor1
manu_chcolor2:
mov flag,2
; jmp manu_hid
call setcolor
;///////////////////////////////////////////////////
manu_subcolor3:
win 0,65h,3,32,3,50
pos_curse 0,3,0
string color_2
win 0,65h,2,32,2,50
pos_curse 0,2,0
string color_1
win 0,06h,4,32,4,50
pos_curse 0,4,0
string color_3
;
win 0,65h,2,21,2,31 ;保留原有菜单
pos_curse 0,2,0
string manu_12
win 0,06h,1,21,1,31
pos_curse 0,1,0
string manu_11
;
red_chr
cmp ah,48h ;向上
je manu_subcolor22 ;
cmp al,0dh ;按回车键选中
jz manu_chcolor3 ;
cmp ah,50h ;向下
je manu_subcolor111 ;
jmp manu_hid
manu_subcolor22:jmp manu_subcolor2
manu_subcolor111:jmp manu_subcolor1
manu_chcolor3:
mov flag,3
; jmp manu_hid
call setcolor ;///////////////////////////////////////////////////
;.....................................................................
menu_help:
pos_get
push dx
win 0,06h,2,31,3,40 ;建立菜单子窗口
win 0,65h,1,30,2,39
pos_curse 0,1,0
string manu_13
string manu_14
pop dx
dec dl
pos_curse 0,dh,dl
red_chr ;从I/O读取字符
cmp ah,50h ;向下
jz manu_command
jmp manu_hid
manu_command:
win 0,65h,2,30,2,39
pos_curse 0,2,0
string manu_14
win 0,06h,1,30,1,39
pos_curse 0,1,0
string manu_13
red_chr
cmp ah,48h
jz manu_about ;about
cmp al,0dh
jz manu_command0 ;command
cmp ah,50h
jz manu_about ;about
jmp manu_hid
manu_command0:call command ;///////////////////////////////////////调用command子菜单
jmp manu_hid
manu_about:
win 0,65h,1,30,1,39
pos_curse 0,1,0
string manu_13
win 0,06h,2,30,2,39
pos_curse 0,2,0
string manu_14
red_chr
cmp ah,48h
jz manu_command1 ;command
cmp al,0dh
jz manu_about0 ;about
cmp ah,50h
jz manu_command1 ;command
jmp manu_hid
manu_command1:jmp manu_command
manu_about0:call help ;/////////////////////////////////////调用about子菜单
jmp manu_hid
menu_show endp
;---------------------------------------------------------------------
;---------------------------------------------------------------------
com proc near ;定义功能键
pos_get ;根据键盘的输入,确定文本编辑的各种功能
mov row,dh
mov line,dl
first:
pos_curse 0,row,line
j00:
mov ah,0
int 16h ;从键盘读字符 ah=扫描码 al=字符码
push ax
lea dx,buffer
mov buffer[bx],al
inc bx
cmp ah,48h ;上
jz up_1
cmp ah,50h ;下
jz down_1
cmp ah,4bh ;左
jz left
cmp ah,4dh ;右
jz right
cmp ah,1ch ;回车
jz enter_1
call fuc_key ;调用功能子键
mov ah,2
mov dl,al
int 21h
pop ax
call menu_show
jmp j6 ;结束
down_1:
jmp down
enter_1:
jmp enter_2
up_1:
jmp up
left: ;光标左移
pos_get
mov row,dh
mov dl,line
cmp line,0
jnz direct
mov line,79
dec row
cmp row,0
je stop2
jmp first
stop2:
mov row,1
jmp first
direct:
dec line
call win4 ;显示光标位置
jmp first
right: ;光标右移
pos_get
mov row,dh
mov dl,line
cmp line,79
jnz direct2
mov line,0
inc row
cmp row,24
je returns1
jmp first
direct2:
inc line
call win4
jmp first
enter_2:
jmp enter
up: ;上移光标
pos_get
mov row,dh
mov dl,line
dec row
cmp row,0
je stop1
call win4
jmp first
stop1:
mov row,1
jmp first
down: ;下移光标
pos_get
mov row,dh
mov dl,line
inc row
cmp row,24
je stop3
call win4
jmp first
stop3:
mov row,23
jmp first
returns1:
jmp returns
enter: ;回车换行
pos_get
mov row,dh
mov line,dl
inc row
cmp row,24
je returns
mov line,0
call win4
jmp first
returns:
mov row,24
mov line,0
jmp first
j6:
ret
com endp
;---------------------------------------------------------------------
fuc_key proc near ;功能键子程序
next:
cmp ah,01h
jz escape ;esc
cmp ah,47h ;home
jz home
cmp ah,4fh ;end
jz _end
cmp ah,0eh ;backspace
jz bak_sp
cmp ah,53h
jz del ;del
jmp over
escape:jmp quitt ;按ESC键,退出
home: ;home键的功能,回到一行的开始
pos_get
mov row,dh
mov line,0
call win4 ;修改屏幕上行//列的显示值
jmp first
_end: ;end键的功能,回到一行的结尾
pos_get
mov row,dh
mov line,79
call win4
jmp first
bak_sp: ;退格键的功能
pos_get
mov row,dh
mov line,dl
cmp line,0
je stop
dec line
jmp ab
stop:
mov line,0
ab:
pos_get 0,row,line
mov ah,2
mov dl,00
int 21h
call win4
jmp first
del: ;del删除
pos_get
mov row,dh
mov line,dl
dec line
pos_get 0,row,line
mov ah,2
mov dl,00
int 21h
inc line
call win4
jmp first
cm:
cmp line,00
jz pos_cm
pos_cm:
pos_curse 0,0,0
jmp first
over: ret
fuc_key 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
ret
savedisplay endp
;---------------------------------------------------------------------
new proc near ;新建文件
pos_get
push dx
call backdisplay
win 0,07h,15,10,17,61
win 0,24h,14,9,16,60
pos_curse 0,15,9
string mess1
mov bx,0
all:
mov ah,01h
int 21h
cmp al,0dh
je alll
mov path[bx],al
inc bx
jmp all
alll:
win 0,3eh,15,9,17,61
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,14h,1,0,23,79
pos_curse 0,1,0
jmp char_get
ret
new endp
;---------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -