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

📄 keti1.asm

📁 1、汇编课程设计 2、包括如下:(1)、简单文件管理 (2)、学生成绩管理 (3)、简单加法器 3、文档中附有代码
💻 ASM
字号:
;file typy&copy&del YANGZHIJUN
.model small
.stack 100h
.data
	handle	dw	?
	filenampl label	byte
	maxlen	db	30
	namlen	db	?
	filenam	db	30	dup(?)
        nam_end db      '$'
	fileend	db	0
	c_handle	dw	?
	c_filenampl	label	byte
	c_maxlen	db	30
	c_namlen	db	?
	c_filenam	db	30	dup(?)
	filelen		dw	?
	filerow	db	0
	c_row	db	10
	row	db	0
	col	db	0
	onechar	db	?
	menu	db	'                  KETI1(BY 031YZJ)     ',10,13
		db	'           *****************************',10,13
                db      '           *    1. File type           *',10,13
                db      '           *    2. File copy           *',10,13
		db	'           *    3. File del.	       *',10,13
		db	'           *    4. Exit.               *',10,13
		db	'           *****************************',10,13
                db      '              Your choice[1,2,3,4]:','$'
        naminmeg     db      'Input file name:\>','$'
        pausmeg 	db      'Pass (Num.1-20) to change lines,any other key to continue:','$'
        copymeg1      db      'Source file name and path:\>','$'
        copymeg2      db      10,13,'Aim    file name and path:\>','$'
        copyreturn1    db      10,13,10,13,10,13,'File Copy right.Software(031)YangZhiJun@2005.3',10,13,'$'
        copyreturn2    db      ' Byte Has Copyed.','$'
        delmeg         	db      10,13,'Make sure.If you don.t want to del the file press[n\N]:','$'
        delreturn      	db      10,13, '[!] File del success.','$'
        error1        	db      10,13,'File open   error!','$'
        error2          	db      10,13,'File write  error!','$'
        error3          	db      10,13,'File didn.t find!','$'
        error4          	db      10,13,'File del    error!','$'
.code
main	proc	far
	mov	ax,@data
	mov	ds,ax
	mov	es,ax
     	main_loop:
	mov	ax,0600h
	call	scrn
	mov	row,4
	mov	col,0
	call	curs
	lea	dx,menu
	mov	ah,9
	int	21h
	;
	call	getch
	cmp	al,'1'
	jb	main_loop
	cmp	al,'4'
	jg	main_loop
	cmp	al,'4'
        je      m_exit
	cmp	al,'1'
        jne     m_Two
	call	filetype
	jmp	main_loop
        m_Two:
	cmp	al,'2'
        jne     m_Three
	call	filecopy	
	jmp	main_loop
        m_Three:
	call	filedel
	jmp	main_loop
        	m_exit:
	mov	ax,0600h
	mov	bh,7
	mov	ax,4c00h
	int	21h
main	endp
;
filetype	proc	near
      	mov     ax,0600h
	call	scrn
	mov	row,03
	mov	col,00
	call	curs
	mov	fileend,0
	mov	ah,9
	lea	dx,naminmeg
	int	21h
	lea	dx,filenampl
	mov	al,00
	call	nam_in_open
	cmp	ax,0000
	jne	t_nextstep
	lea	dx,error3
	mov	ah,09h
	call	getch
	int	21h
	ret;文件不存在 返回
        t_nextstep:
	mov	handle,ax;保存文件代号
	t_begin:
	;
	mov	filerow,0 
        mov	bh,0e1h
	mov	ah,06h
	mov	al,c_row	
	call	scrn_bx   
        mov	col,0
	mov	ah,25
	sub	ah,c_row
	mov	row,ah
	call	curs
        ;完成上卷和光标定位到新属性的行               
       	t_again:
	lea	dx,onechar
	mov	bx,handle
	mov	cx,1
	mov	ah,3fh
	int	21h    ;读一个字符
	push	ax
	;======               
	;mov	ah,40h
        ;mov    cx,1
	;lea	dx,onechar
	;mov	bx,0
	;int	21h
	lea	bx,onechar
	mov	dl,[bx]
	mov	ah,02
	int	21h    ;显示一个字符
	;======
	pop	ax
	cmp	ax,0          
       	jne   	t_next     
	mov	fileend,1 ;文件已结束  
	jmp	t_return  ; 返回
       	t_next:		
	cmp	onechar,0ah
       	jne    	t_again   ;不是换行字符 再读下一个字符
	inc	filerow   ;记录行数加一
        mov     ah,filerow;
        cmp    	ah,c_row  ;比较是不是到了设定值
       	jb      t_again   ;没到 读下一个字符
	call	pause     ;到了 暂停 看是否改变c_row值
	jmp	t_begin   ;读下一页
;---------------------------------------------------------------------------------
       	t_return:         ;文件已结束
	mov	bx,handle
	call	closefile ;关闭文件
	call	getch
	ret		  ;返回主函数
pause	proc	near  ;==================
	mov	ah,06h
	mov	al,1
	call	scrn
	mov	row,24
	mov	col,0
	call	curs
	lea	dx,pausmeg
	mov	ah,9
	int	21h
	call	scanf
	cmp	ax,23
      	ja      p_return
	cmp	ax,1
      	jb     	p_return
    	mov     c_row,al
    	p_return:
	ret
pause	endp
filetype	endp
;-----------------------------------
;文件拷贝
filecopy	proc	near
	;
	mov	filelen,0000;文件长清零
	mov	fileend,00  ;文件结束标志清零
	;
	mov	ax,0600h
	call	scrn
	mov	row,5
	mov	col,0
	call	curs
	;光标定位 清屏
	lea	dx,copymeg1
	mov	ah,09
	int	21h
	lea	dx,filenampl
	mov	cl,30
	mov	al,00
	call	nam_in_open;打开源文件
	cmp	ax,0000
	jne	c_next_name;打开成功
	lea	dx,error1
	mov	ah,09
	int	21h
	call	getch
	ret;源文件不存在 返回主函数
        c_next_name:;读取下一个文件名
	mov	handle,ax
	lea	dx,copymeg2
	mov	ah,09
	int	21h
	lea	dx,c_filenampl
        call	newfile;新建目标文件
	cmp	ax,0000
       	jne     c_copy_begin;目标文件创建成功
       	;call    getch
	mov	bx,handle
	call	closefile;关闭打开的源文件
       	ret     ;存在同名文件 不覆盖 返回主函数
 	c_copy_begin:
	;
	mov	c_handle,ax;
	mov	cx,1
	lea	dx,onechar
        c_again:
	mov	bx,handle
	mov	ah,3fh
	int	21h   	;从源文件读一个字符
	cmp	ax,0000
        jne     c_next	;没到文件末尾
	mov	fileend,1;已是最后一个字符了
        c_next:
	mov	bx,c_handle
	mov	ah,40h
	int	21h	;写进目标文件
	cmp	fileend,1
        je      c_return
	inc	filelen;文件字节数加一
        jmp     c_again;读下一个字节
        c_return:	;拷贝已完成
	mov	bx,handle
	call	closefile
	mov	bx,c_handle
	call	closefile
	mov	ah,09
	lea	dx,copyreturn1
	int	21h
	mov	bx,0001
	mov	ax,filelen
	call	printf
	lea	dx,copyreturn2
	mov	ah,09
	int	21h
	call	getch
	ret
filecopy	endp

; 文件删除
filedel	proc	near
        mov     ah,06
        mov     al,00
        call    scrn
	mov	row,5
	mov	col,0
	call	curs
	lea	dx,naminmeg
	mov	ah,09
	int	21h
	;mov	ah,0ah
	lea	dx,filenampl
;---------------------------------------------------
	call 	nam_in_open
	cmp	ax,0000
	je	d_return
	lea	dx,filenam
	call	closefile
;---------------------------------------------------
	;int	21h
	;mov	cl,30
	;mov	ch,namlen
	;lea	di,filenam
	;call	nam_clear
	;lea	dx,filenam
	;call	
	lea	dx,delmeg
	mov	ah,09
	int	21h
	call	getch
	cmp	al,'N'
        	jne     	d_next1
	ret
        d_next1:
	cmp	al,'n'
        jne     d_next2
	ret
        d_next2:
	lea	dx,filenam
	mov	ah,41h
	int	21h
        jc      d_return
	lea	dx,delreturn
	mov	ah,09h
	int	21h
	call	getch
	ret
        d_return:
	lea	dx,error4
	mov	ah,9
	int	21h
	call	getch
	ret
filedel	endp
include  asm.sub
end main

	
	
	
	

⌨️ 快捷键说明

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