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

📄 edxiug.asm

📁 文本方式下的字编辑处理程序按F1键激活菜单FILE
💻 ASM
📖 第 1 页 / 共 3 页
字号:
  	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 + -