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

📄 aaa.asm

📁 文本编辑器
💻 ASM
📖 第 1 页 / 共 2 页
字号:
   op:    mov ah,00h
       int 16h
       cmp ah,1ch				;是Enter功能键吗?
       jnz	op

        pop bx
        ret
open	endp
save		proc	near			;保存文件功能实现
       mov ah,40h
       mov bx,handle1
       mov cx,1830
       lea dx,buffer+160
       int 21h    
       ret
save	endp
save_as	proc	near			;文件另存为功能实现
   clear
   win
   push bx 
   
   window 0,9,18,13,68,6fh
   postc  0,11,18
   mov ah,09h
   lea dx,wrtpath
   int 21h
   mov  di,offset mypath
   
op1:mov ah,00h
    int 16h
    cmp ah,1ch				;是Enter功能键吗?
   jz	exit5
   mov dl,al
   mov ah,02   
   int 21h
   mov  [di],al
   inc  di
   jmp  op1
exit6: 
        mov ah,3ch
       mov cx,00
        lea dx,mypath
        int 21h 
       mov handle1,ax
       mov ah,40h
       mov bx,handle1
       mov cx,1830
       lea dx,buffer+160
       int 21h    
        pop  bx
        ret
save_as	endp
exit		proc	near			;退出功能实现
       clear
       mov ah,4ch
       int  21h
       ret
exit	endp
		
crlf	proc	near				;回车换行子程序
	mov	ah,02h
	mov	dl,0dh
	int	21h
	mov	ah,02h
	mov	dl,0ah
	int	21h
	ret
crlf	endp

edi_mess		proc	near			;显示EDIT菜单的子菜单
	push	dx
	window	0,2,7,6,13,06h
	window	0,1,6,5,12,2fh
	postc	0,1,6
	xianshi	edimes_1
	xianshi	edimes_2
	xianshi	edimes_3
	postc	0,1,6
	pop	dx
	call	compar1
	;call backdisp
	ret
edi_mess		endp

compar1		proc	near
      push cx
 yy:  getc
      mov  cl,dh
      mov	ah,0
	int	16h
	cmp	ah,50h
	jz	y1
	cmp   ah,48h
	jz    y2
	cmp   ah,3ch
	jz    y3
	cmp   al,0dh
	jz    y4
	jmp   ext2
;---------------
  y1: cmp cl,3
      jnz y11
      postc 0,1,6
      jmp yy
 y11:  inc cl
       postc 0,cl,6
      jmp  yy
  y2: cmp cl,1
      jnz y22
      postc 0,3,6
      jmp yy
 y22: dec cl
      postc 0,cl,6
      jmp  yy
  y3: jmp  yy
;---------------  
  y4: cmp cl,1
      jz  decele
      cmp cl,2
      jz  inse
      cmp cl,3
      jz  rew 
  decele:
      call delet
      call  backdisp
      jmp ext2
 inse:
      call insert
      jmp ext2
 rew:
     call rewrit
    ; call backdisp
     ;jmp  ext2
 ext2: 
       pop cx
       call backdisp
       ret

compar1	endp
       
delet	 proc	near			;edit菜单中delete的实现
     call	 backdisp
 e:
     ;postc 0,y,x
     mov ah,0h
      int 16h
      cmp al,0dh  		     ;回车
      jz  en
      cmp ah,48h				;上
      jz  e1
      cmp ah,50h				;下
      jz  e2
      cmp ah,4bh				;左
      jz  e3
      cmp ah,4dh				;右
      jz   e4
      cmp ah,0eh
      jz   ch1				;删除
e1:   cmp y,2
      jz e
      dec y
	postc 0,y,x 
	call row_line
	jmp e      
e2:   cmp y,23
      jz e       
	inc y
	postc 0,y,x 
	call row_line
	jmp e      
e3:   cmp x,0
      jz e
      dec x
	postc 0,y,x 
	call row_line
	jmp e      
e4:  cmp x,79
      jz e
      inc  x
	postc 0,y,x 
	call row_line
	jmp e      
ch1:
        push ax
        mov bx,80
        sub ax,ax
        mov al,y
        mul bx
        mov bx,ax
        mov al,x
        mov si,ax
        pop  ax
       lea  bx,buffer[bx][si]
	  mov  si,bx
	  inc  bx
i1:	  mov  ax,[bx]
	  mov  [si],ax
	  inc  si
	  inc  bx
	  cmp bx,1600
        jz  i        
        jmp i1 
  i:    dec x
        cmp x,0
        jz  e      
        call row_line
        call backdisp
        jmp e
en:    
        ret
delet	endp
insert		proc	near			;edit菜单中insert的实现
        call	 backdisp
   
    ; push  cx
     getc
    ; mov   cl,x
     ;mov  ch,y
 ii:
      postc 0,y,x
      mov ah,0h
      int 16h
      cmp al,0dh  		     ;回车
      jz  iin
      cmp ah,48h				;上
      jz  ii1
      cmp ah,50h				;下
      jz  ii2
      cmp ah,4bh				;左
      jz  ii3
      cmp ah,4dh				;右
      jz   ii4
      jmp  iii1
 ii1:   cmp y,2
      jz ii
      dec y
	postc 0,y,x 
	call row_line
	jmp ii1     
ii2:   cmp y,23
      jz ii       
	inc y
	postc 0,y,x 
	call row_line
	jmp ii     
ii3:   cmp x,0
      jz ii
      dec x
	postc 0,y,x 
	call row_line
	jmp ii    
ii4:  cmp x,79
      jz ii
      inc  x
	postc 0,y,x 
	call row_line
	jmp ii     
iii1:
        push ax
        mov bx,80
        sub ax,ax
        mov al,y
        mul bx
        mov bx,ax
        mov al,x
        mov si,ax
        pop  ax
        mov  inse1,al
        lea  bp, buffer[bx][si]
        ;jmp ii      
        ;mov  buffer[bx][si],al                               
       ; call row_line
        ;call backdisp
        ;mov ah,01h
        ;mov dl,al
        ;int 21h
         lea di,buffer+500
         mov  si,di
        dec  si 
p1:	  mov  ah,[si]
	  mov  [di],ah
	 
	 dec  si
	 dec  di
	  cmp si,bp
        jz  p        
        jmp p1 
  p:    mov ah,inse1
        mov [bp],ah
        
          inc x
       call backdisp

       cmp x,79
       jz  cc 
       jmp ii    
  cc:  mov x,0
       inc y
       jmp ii           
  iin:    mov y,dh
	  mov x,dl
	  postc 0,y,x 
        ret
insert	endp

rewrit		proc	near			;;edit菜单中rewrite的实现
    call	 backdisp
   
    ; push  cx
     getc
    ; mov   cl,x
     ;mov  ch,y
 r:
     postc 0,y,x
     mov ah,0h
      int 16h
      cmp al,0dh  		     ;回车
      jz  rn
      cmp ah,48h				;上
      jz  rw1
      cmp ah,50h				;下
      jz  rw2
      cmp ah,4bh				;左
      jz  rw3
      cmp ah,4dh				;右
      jz   rw4
      jmp  rr1
 rw1:   cmp y,2
      jz r
      dec y
	postc 0,y,x 
	call row_line
	jmp rr1     
rw2:   cmp y,23
      jz r       
	inc y
	postc 0,y,x 
	call row_line
	jmp r     
rw3:   cmp x,0
      jz r
      dec x
	postc 0,y,x 
	call row_line
	jmp r     
rw4:  cmp x,79
      jz r
      inc  x
	postc 0,y,x 
	call row_line
	jmp r      
rr1:
        push ax
        mov bx,80
        sub ax,ax
        mov al,y
        mul bx
        mov bx,ax
        mov al,x
        mov si,ax
        pop  ax      
        mov  buffer[bx][si],al                               
        call row_line
        call backdisp
        ;mov ah,01h
        ;mov dl,al
        ;int 21h
        jmp r
rn:    mov y,dh
	  mov x,dl
	  postc 0,y,x
        ; pop cx
        ;call backdisp 
         ret
rewrit  endp  
backdisp proc near
 ;f1:  mov	ah,0				;从键盘读取字符
	;int	16h
     ; cmp	ah,01				;是Escape功能键吗?
      ;jz    f
      ;jmp   f1
f:    clear
	window	1,0,0,0,79,5fh
	window	0,1,0,23,79,3fh
	window	0,24,0,24,79,5fh
	postc	0,0,1
	xianshi	menu
	xianshi	painl
	postc	0,24,0
	xianshi	message1
      call   row_line
      postc 0,2,0
      lea  dx,buffer+160
      mov ah,09h
	int 21h
      ret    
backdisp endp
;过程row_line 动态显示行列 
row_line proc near 
     
       sub ax,ax
       
       lea  di,row
       mov al,x
       call place
       
       lea  di,line
       mov  al,y
       call place
       
       postc 0,0,60
       mov ah,09h
       lea dx,r_l
       int 21h
      
       postc 0,y,x
      
       ret
row_line endp 
;过程PLACE将ax中数转换成十进制ASCII码
 ;并存入由ds:dI寻址的内存单元
 ;输入参数
 ;ax=将要转换得数
 ;DS:DI=数据存放地址
place    proc     near
   mov    cx,0                        ;清计数值
   mov    bx,10                       ;除数为10 
place1:
   mov    dx,0                        ;清DX
   div    bx                           ;除以10
   push   dx
   inc    cx
   cmp    ax,0
   jne    place1                        ;循环直到商为0
place2:
   mov    bx,5
   sub    bx,cx
place3:
   pop    dx
   add    dl,30h                        ;转换为ASCII码  
   mov    [di],dl                        ;存储数据 
   inc    di
   loop   place3
   cmp    bx,0
   je     place5
   mov    cx,bx
place4:
   mov   byte  ptr [di],20h
   inc   di
   loop  place4
place5:
   ret
place  endp   
code	ends
end	start

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -