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

📄 keti3.asm

📁 1、汇编课程设计 2、包括如下:(1)、简单文件管理 (2)、学生成绩管理 (3)、简单加法器 3、文档中附有代码
💻 ASM
字号:
.model	Medium
.stack	100h
.data
;-----------------------------
handle	dw	?
filenampl	label	byte
	db	30
	db	?
filenam db      30 dup(?)
        db      '$'
;-----------------------------
M_nampl	label	byte
	db	10
	db	?
M_nam   db      10 dup(?)
	db	'$'
;----------------------------
M_telpl	label	byte
	db	12
	db	?
M_tel   db      12 dup(?)
	db	'$'
;---------------------------
M_mobilepl  label        byte
	db	12
	db	?
M_mobile db      12 dup(?)
	db	'$'
;---------------------------
M_Emailpl label	byte
	db	20
	db	?
M_Email db      20 dup(?)
	db	'$'
;---------------------------
M_adresspl label       byte
	db	20
	db	?
M_adress       db      20 dup(?)
	db	'$'
;---------------------------
M_mailpl	label	byte
	db	6
	db	?
M_mail  	db      	6 dup(?)
	db	'$'
;---------------------------
recordpl        db      80 dup(?)
	db	'$'
;---------------------------
pointadd	dw	?
filerecord	dw	?
searchrecord	dw	?
cx_cx	dw	?
si_si	dw	?
fileend	db	?
row	db	?
col	db	?
tenchar 	db      	10 dup(?)
tenchar_cheak	db	'yangzhi070'
;---------------------------

;---------------------------------------------------------------------------
;主菜单
menu	db	'          *********************************',10,13
	db	'                1.  New file_add new inf.  ',10,13
	db	'	 	2.  Serch_rew inf.    	   ',10,13
	db	'	 	3.  Print inf.             ',10,13
	db	'	 	4.  Exit                   ',10,13
	db	'          ********************************',10,13
	db	'              Your choice[1,2,3,4]:','$'
;----------------------------
newinf1	db	'Please input file name and path:\>','$'
newinf2	db	10,13,'The file has already exist but not a Tel.notebook file.','$'
newinf3	db	'New Tel.notebook	:','$'
newinf4	db	'The Tel.notebook file has already exist.You can add new record.','$'
newinf5	db	'#New record.','$'
newinf6	db	10,13,'New record has saved in file.','$'
newinf7	db	'If the information above isn.t right press[n\N]:','$'
newinf8 	db	10,13,'There is on record in file!','$'
searchmeg1 db   'You can search information by anyone of the six blow:','$'
nosearch       db      10,13,'There is no record about inf.','$'
rewritemeg	db	'Do you want to  rewrite this record?[y\n]:','$'
;--------------------------
nam_inpl	label	byte
	db	10,13
nam_in	db	'Name','$'
;
tel_inpl	label	byte
	db	10,13
tel_in	db	'Tel.','$'
;
mobile_inpl  label	byte
	db	10,13
mobile_in	db	'Mobile','$'
;
Email_inpl label	byte
	db	10,13
Email_in	db	'Email','$'
;
adress_inpl label	byte
	db	10,13
adress_in	db	'Adress','$'
;
mail_inpl	label	byte
	db	10,13
mail_in	db	'Mail','$'
;--------------------------------------------------
;
.code
main	proc	far
	mov	ax,@data
	mov	ds,ax
	mov	es,ax
	;-------主循环
	main_loop:
	mov	al,00
	call	scrn
	mov	row,5
	mov	col,0
	call	curs
	;
	lea	dx,menu
	mov	ah,09h
	int	21h
	call	getch
	;----------------
	cmp	al,'4'
	ja	main_loop
	cmp	al,'1'
	jb	main_loop
	;----------------
	cmp	al,'4'
        je      main_exit
	cmp	al,'1'
	jne	main_next1
	call	newinf_add;==功能1:新文件_添加信息==
	jmp	main_loop
	main_next1:
	cmp	al,'2'
	jne	main_next2
        call    search_renew;==功能2:查找_修改信息==
	jmp	main_loop
	main_next2:
	cmp	al,'3'
	jne	main_loop
        call    inf_print;====功能3:显示信息报表=====
	jmp	main_loop
	;
        main_exit:
	mov	ax,4c00h
        int     21h
main	endp
;_________________________________________________________功能一
newinf_add	proc	near
	;
	mov	filerecord,1;文件记录数置一	
	mov	al,00
	call	scrn
        	mov     	row,5
	mov	col,00
	call 	curs
	;清屏 定光标
	;--------------------------------
	lea	dx,newinf1
	mov	ah,9
	int	21h	;提示:输入文件名
	lea	dx,filenampl
	mov	ah,0ah
	int	21h	;输入文件名
	mov	di,dx
	add	di,2	;dx->文件名地址
	mov	bx,dx
	inc	bx  	;bx指向实际长度
	mov	ch,[bx]
	mov	cl,30
	call	nam_clear	;清理文件名
	;文件名输入完成-------------
	;-------------------------------
	mov	al,00 	;读模式打开文件
	mov	ah,3ah
	lea	dx,filenam
	int	21h   
        jc      iinf_new	;文件不存在新建>>>>>>>>>>>>>>>>>>>>>>>
	;存在 进一步判断是不是NOTEBOOK文件
	mov	handle,ax
	;
	mov	ch,0
	mov	cl,10
	lea	si,tenchar
	call	nam_clear
	;
	mov	bx,handle
	mov	cx,10
	mov	ah,3fh
	lea	dx,tenchar
	int	21h	;读文件开始的10字节
	;mov	bx,handle
	;call	closefile	;读完后关闭文件
	;为添加做准备
	CLD
	lea 	si,tenchar
        	lea     	di,tenchar_cheak
	mov	cx,10
	REPE	CMPSB
	cmp	cx,0
	je	inf_inin;是notebook文件
	;------------------------------------!!!!!!!!!!!!!!!!!
	lea	dx,newinf2
	mov	ah,09h
	int	21h
	mov	bx,handle
	call	closefile
	call	getch
        	ret     		;经检验输入的文件名已存在
			;且不是电话本文件 返回
	;------------------------------------<<<<<<<<<<<<<<<<<<<<
        	iinf_new:
	;------------------
	lea	dx,filenam
	mov	ah,3ch
	mov	cx,0000
	int	21h
	;新建一个文件
	;-----------------	
	mov	handle,ax
	;-----------------
	mov	bx,ax	;bx=文件代号
        	lea     	dx,tenchar_cheak
	mov	cx,10
	call	inf_in_file
	;写入10个标志字符
	;-----------------
	mov	al,01	
	call	scrn
	mov	row,24
	mov	col,00
	call	curs
	;
	lea	dx,newinf3
	mov	ah,09h
	int	21h; 显示:新建的notebook文件
	jmp	inf_input ;给文件添加信息
	;--------------------------------<<<<<<<<<<<<<<<<<<
	inf_inin: ;给文件末尾加信息!!!!!!!!!!!!!!!!!!!!!!
	;--------------
	mov	al,01h	
	call	scrn
	mov	row,24
	mov	col,00
	call	curs
	lea	dx,newinf4
	mov	ah,09h
	int	21h	;显示:文件已存在添加新记录
	;--------------
	lea	dx,filenam
	mov	ax,3d02h
	int	21h    ;以读和写方式打开文件
	mov	handle,ax;保存文件代号
	mov	cx,0000
	mov	dx,0000
	mov	ax,4202h
	int	21h;将文件指针指向文件末尾
	inf_input:
        ;-------------------------------<<<<<<<<<<<<<<<<<<<<
	call	in_record 	;输入一项记录
	;-------------------------------
	cmp	fileend,1	;文件是否结束?
	jne	nnextstep	;没
	;-------------------
	;文件输入过程已结束
	lea	dx,newinf6	
	mov	ah,09h	
	int	21h	
	call	getch
	mov	bx,handle
	call	closefile
	ret;输入结束 返回
	;-------------------
	nnextstep:
	inc	filerecord;文件记录数加一
	;----------------------------------
	call	saveinf   ;写入一项记录
	;----------------------------------
	jmp	inf_input ;输入下一条记录
	;----------------------------------
newinf_add 	endp
;--------------------------------------------


;---------------------------------------
;至此,新建 添加 功能完成                                                           ==============
;---------------------------------------
search_renew	proc	near
	
	;--------------------
	mov	al,00
	call	scrn
	mov	col,00
	mov	row,05
	call	curs
	;清屏 定光标
	;--------------------
	lea	dx,newinf1
	mov	ah,09h
	int	21h
	lea	dx,filenampl
	call	nam_in_open
	;输入文件名
	;--------------------
	cmp	ax,0000
	jne	search_infile;<<<<<<<<<<<<<<<<
	;文件存在 进行下一步判断
	;--------------------
	;ax=0000文件不存在
	call	getch
	ret
	;--------------------------------------
	search_infile:	;<<<<<<<<<<<<<<<<<<<<<
	mov	handle,ax
	;---------------
	mov	bx,ax
	mov	cx,10
	mov	ah,3fh
	lea	dx,tenchar
	int	21h
	;读入十个字节的内容
	;--------------
	lea	si,tenchar
	lea	di,tenchar_cheak	
	mov	cx,10
	REPE	CMPSB
	cmp	cx,0
	;看是不是notebook文件
	;------------------------------------
	je	search_file;是 进行查找
	;---------------
	lea	dx,newinf2
	mov	ah,09h
	int	21H;   显示:非notebook文件
	mov	bx,handle;
	call	closefile;关闭打开的文件
	call	getch
	ret     ;返回主函数
	;---------------
        	search_file:
	mov	al,02h
	call	scrn
	mov	row,23
	mov	col,00
	call	curs
	lea	dx,searchmeg1;
	mov	ah,09h
	int	2h;操作提示
	;---------------
	mov	pointadd,0
	mov	cx_cx,0000
	mov	si_si,0000
	mov	si,0
	;---------------
	mov	al,06h	
	call	scrn_bx
	mov	row,19
	mov	col,00
	call	curs
	;---------------
	call	input_nam
	cmp	cx,0
	je	search_next2
	lea	dx,M_nam
	mov	si_si,dx
	mov	cx_cx,cx
	call	search_cmp
	cmp	ax,0000
        jne     re_write_1;>>>>>>>>>>>>>>>>
	jmp	sss_exit
	;
	search_next2:
	add	pointadd,10
	call	input_tel
	cmp	cx,0
	je	search_next3
	lea	dx,M_nam
	mov	si_si,dx
	mov	cx_cx,cx
	call	search_cmp	
	cmp	ax,0000
        jne     re_write_1;==========
	jmp	sss_exit
	;
	search_next3:
	add	pointadd,12
	call	input_tel
	cmp	cx,0
	je	search_next4
	lea	dx,M_nam
	mov	si_si,dx
	mov	cx_cx,cx
	call	search_cmp
	cmp	ax,0000
	jne	re_write
	jmp	sss_exit
	;
	search_next4:		
	add	pointadd,12
	call	input_Email
	cmp	cx,0000
	je 	search_next5
	mov	cx_cx,cx
	lea	dx,M_nam
	mov	si_si,dx
	call	search_cmp	
	cmp	ax,0000
	jne	re_write
	jmp	sss_exit
	;-----------------
	re_write_1:
	jmp	re_write
	;-----------------
	search_next5:
	add	pointadd,20
	call	input_adress
	cmp	cx,0
	je	search_next6
	lea	dx,M_nam
	mov	si_si,dx
	mov	cx_cx,cx
	call	search_cmp
	cmp	ax,0000
	jne	re_write
	jmp	sss_exit
	;
	search_next6:
	add	pointadd,20
	call	input_mail	
	cmp	cx,0000
	je	sss_exit
	lea	dx,M_nam
	mov	si_si,dx
	mov	cx_cx,cx
	call	search_cmp
	cmp	ax,0
	jne	re_write
	jmp	sss_exit
	re_write: 	;<<<<<<<<<<<<<<<<<
	call	rewriterecord
	sss_exit:
	mov	bx,handle
	call	closefile  ;关闭文件
	ret
search_renew     endp
;------------------------------------------------------------

;---------------------------------------------------
;至此 文件查找 修改功能完成                                                                          ============
;--------------------------------------------------------------------------------
inf_print        proc    near
	mov	fileend,0
	;---------------------
	mov	al,00
	call	scrn
	mov	row,05
	mov	col,00
	call	curs
	;-------------------
	lea	dx,newinf1
	mov	ah,09h
	int	21h
	;
	lea	dx,filenampl
	call	nam_in_open
	;输入文件名完成
	;-------------------------
	cmp	ax,0000
	jne	file_text
	;文件存在 进一步检查
	call	getch
	ret;文件不存在 返回
	;------------------ 
	file_text:
	mov	handle,ax
	;
	mov	ch,0
	mov	cl,10
	lea	si,tenchar
	call	nam_clear
	;
	mov	bx,handle
	mov	cx,10
	mov	ah,3fh
	lea	dx,tenchar
	int	21h
	;读开始的10位标志字节
	cmp	ax,0
	jnz	next_gege
	mov	fileend,1
	next_gege:
	CLD	
	lea	si,tenchar
	lea	di,tenchar_cheak	
	mov	cx,10
	REPE	CMPSB
	cmp	cx,0
	;-----------------
	je	print_begin
	;
	;-----------------
	lea	dx,newinf2
	mov	ah,09h
	int	21h
	mov	bx,handle
	call	closefile
	call	getch
	ret;非法文件名 返回
	;---------------------------------------------------------
	print_begin:
	call	tablehead
	cmp	fileend,1
	jne	read_print
	;
	mov	bx,handle
	call	closefile
	lea	dx,newinf8
	mov	ah,09h
	int	21h
	call	getch
	ret
	
	read_print:
	;----------------
	mov	bx,handle
	mov	cx,80
	mov	ah,3fh
	lea	dx,recordpl
	int	21h
	;读一条记录
	jc	print_exit
	cmp	ax,0000
	jne	print_it
	;到文件末尾
	mov	fileend,1
	print_it:
	call	recordtype
	cmp	fileend,1
	jne	read_print
	print_exit:
	mov	al,5
	call	scrn
	mov	row,20
	mov	col,00
	call	curs
	ret
inf_print        endp
;___________________________________________________

include	asm.sub
include	keti3_1.sub
include	keti3_2.sub
end main
;_________________________________

⌨️ 快捷键说明

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