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

📄 edit.asm

📁 汇编语言课程设计
💻 ASM
📖 第 1 页 / 共 2 页
字号:
        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 + -