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

📄 05312020.asm

📁 汇编语言实现的电话号码本~含有内存驻留的功能
💻 ASM
📖 第 1 页 / 共 2 页
字号:
;********************************************************************
;zdg_work
;telephone number

;********************************************************************

	.model	small

;--------------------------------------------------------------------

	.data

kbups	equ	48h
kbdowns	equ	50h
kbenter	equ	1ch
MANUWIDE	equ	48
DISPLAYWIDE	equ	36


highness	db	5
dishigh	db	6
selection	db	7
recdnum	db	?	;the number of records 
count	dw	?	
inputflag	db	0
inputcur	db	6
chflag	db	?
endaddr	dw	?	;end of records


pathnm	db	'D:\phnum.txt',0h
handle	dw	?
names	db	15,0,15 dup(' '),'$'
phnumber db	15,0,15 dup(' '),'$'
exchag	db	30 dup(' ')
records	db	34 dup(15 dup(' '),15 dup(' '),)


mess1	db	'WELCOME!','$'
mess2	db	'Use the ARROW (',18h,' and ',19h,') key to make the selection, then press ENTER ','$'
mess3	db	'Main Menu','$'


mess4	db	'New name  :','$'
mess5	db	'Use a blank record to finish   ','$'
mess6	db	'New phone number  :','$'
mess7	db	'Press any key to continue. . .','$'
mess8	db	'Please input tne name or tne phone number','$'
mess9	db	'Name  :','$'
mess10	db	'Phone number  :','$'
mess11	db	'delete','$'
mess12	db	'modify','$'
mess13	db	'search','$'
mess14	db	'Name             Phone number','$'
mess15	db	'you want to','$'
mess16	db	15 dup(' ')


select1	db	'  1.Display all the records','$'
select2	db	'  2.Add new record','$'
select3	db	'  3.Delete record','$'
select4	db	'  4.Modify record','$'
select5	db	'  5.Search record','$'
select6	db	'  6.Exit','$'

;--------------------------------------------------------------------

	.stack	100

;--------------------------------------------------------------------

	.code

;--------------------------------------------------------------------
;main
begain	proc	far

	call	tsr

	mov	ax,@data
	mov	ds,ax
	mov	es,ax

	call	readfile

star:	
	call	closecur
	mov	highness,5
	call	clscreen

	
	mov	dh,01		;display mess1
	mov	dl,33
	mov	ah,02
	mov	bh,0
	int	10h

	lea	dx,mess1
	mov	ah,09
	int	21h
	
	mov	dh,2		;display '*'	
	mov	dl,12
	mov	ah,02
	mov	bh,0
	int	10h

	mov	al,'*'
	mov	bh,0
	mov	bl,3fh
	mov	cx,MANUWIDE+2
	mov	ah,09
	int	10h

	mov	dh,3		;display mess3
	mov	dl,32
	mov	ah,02
	mov	bh,0
	int	10h

	lea	dx,mess3
	mov	ah,09
	int	21h

	mov	dh,4		;display four sides 	
	mov	dl,12
	mov	ah,02
	mov	bh,0
	int	10h
	
	mov	al,0d5h
	mov	bh,0
	mov	bl,3fh
	mov	cx,1
	mov	ah,09
	int	10h
	
	mov	dh,4	
	mov	dl,13
	mov	ah,02
	mov	bh,0
	int	10h

	mov	al,0cdh
	mov	bh,0
	mov	bl,3fh
	mov	cx,MANUWIDE
	mov	ah,09
	int	10h

	mov	dh,4	
	mov	dl,13+MANUWIDE
	mov	ah,02
	mov	bh,0
	int	10h

	mov	al,0b8h
	mov	bh,0
	mov	bl,3fh
	mov	cx,1
	mov	ah,09
	int	10h

drawb3:
	mov	dh,highness	
	mov	dl,12
	mov	ah,02
	mov	bh,0
	int	10h

	mov	al,0b3h
	mov	bh,0
	mov	bl,3fh
	mov	cx,1
	mov	ah,09
	int	10h

	mov	dh,highness	
	mov	dl,3dh
	mov	ah,02
	mov	bh,0
	int	10h

	mov	al,0b3h
	mov	bh,0
	mov	bl,3fh
	mov	cx,1
	mov	ah,09
	int	10h

	add	highness,1
	cmp	highness,23
	jnz	drawb3


	mov	dh,23	
	mov	dl,12
	mov	ah,02
	mov	bh,0
	int	10h
	
	mov	al,0d4h
	mov	bh,0
	mov	bl,3fh
	mov	cx,1
	mov	ah,09
	int	10h
	
	mov	dh,23	
	mov	dl,13
	mov	ah,02
	mov	bh,0
	int	10h

	mov	al,0cdh
	mov	bh,0
	mov	bl,3fh
	mov	cx,MANUWIDE
	mov	ah,09
	int	10h

	mov	dh,23	
	mov	dl,13+MANUWIDE
	mov	ah,02
	mov	bh,0
	int	10h

	mov	al,0beh
	mov	bh,0
	mov	bl,3fh
	mov	cx,1
	mov	ah,09
	int	10h

	mov	dh,24		;displaymess2
	mov	dl,7
	mov	ah,02
	mov	bh,0
	int	10h

	lea	dx,mess2
	mov	ah,09
	int	21h

dwselection:
	
	mov	ch,selection
	mov	dh,ch
	mov	ax,0600h	
	mov	bh,4ah
	mov	cl,0eh
	mov	dl,3bh
	int	10h
	
	mov	highness,7	;display selections
	lea	dx,select6
	push	dx
	lea	dx,select5
	push	dx
	lea	dx,select4
	push	dx
	lea	dx,select3
	push	dx
	lea	dx,select2
	push	dx
	lea	dx,select1
	push	dx

displaymess:

	mov	dh,highness
	mov	dl,22
	mov	ah,02
	mov	bh,0
	int	10h
	
	pop	dx
	mov	ah,09
	int	21h
	
	add	highness,2
	cmp	highness,19
	jnz	displaymess
		
searchkb:

	mov	ah,0
	int	16h
	cmp	ah,kbups
	jnz	cmpdowns
	mov	ch,selection
	mov	dh,ch
	mov	ax,0600h	
	mov	bh,3fh
	mov	cl,0eh
	mov	dl,3bh
	int	10h
	sub	selection,2
	cmp	selection,7
	jns	calldw1
	mov	selection,17

calldw1:
	jmp	dwselection

cmpdowns:

	cmp	ah,kbdowns
	jnz	search_enter
	mov	ch,selection
	mov	dh,ch
	mov	ax,0600h	
	mov	bh,3fh
	mov	cl,0eh
	mov	dl,3bh
	int	10h
	add	selection,2
	cmp	selection,19
	jb	calldw2
	mov	selection,7

calldw2:
	jmp	dwselection

search_enter:

	cmp	ah,kbenter
	jnz	searchkb

	cmp	selection,7	;check the selection
	jnz	selection2
	call	display
	jmp	star

selection2:
	
	cmp	selection,9
	jnz	selection3
	call	input
	jmp	star

selection3:

	cmp	selection,11
	jnz	selection4
	call	delete
	jmp	star

selection4:

	cmp	selection,13
	jnz	selection5
	call	modify
	jmp	star

selection5:

	cmp	selection,15
	jnz	selection6
	call	search
	jmp	star

selection6:

	cmp	selection,17

	call	closefile
	call	finish
	
exit:	
	mov	ax,4c00h
	int	21h

begain	endp
;--------------------------------------------------------------------
;create disk file
createfile	proc	near

	mov	ah,3ch
	lea	dx,pathnm
	mov	cx,0
	int	21h
	;jc	error1
	mov	handle,ax
	ret
error1:	

createfile	endp
;--------------------------------------------------------------------
;read disk file
readfile	proc	near

	mov	ah,3dh		;open file
	mov	al,2
	lea	dx,pathnm
	int	21h
	jc	error2
	mov	handle,ax

	mov	ah,3fh		;readfile
	mov	bx,handle
	mov	cx,1020
	lea	dx,records
	int	21h

	cmp	ax,0
	mov	count,ax
	mov	bl,30
	div	bl
	mov	recdnum,al
	ret

error2:	call	createfile
	mov	count,0
	mov	recdnum,0
	ret

readfile	endp
;--------------------------------------------------------------------
;close disk file
closefile	proc	near

	mov	ah,3eh
	mov	bx,handle
	int	21h
	ret
error3:

closefile	endp
;--------------------------------------------------------------------
;display all the records
display	proc	near
	


	call	clscreen
	
dwcolor:	
	mov	ch,dishigh
	mov	dh,ch
	mov	ax,0600h	
	mov	bh,4ah
	mov	cl,3h
	mov	dl,12h
	int	10h

	mov	ch,dishigh
	mov	dh,ch
	mov	ax,0600h	
	mov	bh,4ah
	mov	cl,13h
	mov	dl,25h
	int	10h

	add	dishigh,2
	cmp	dishigh,24
	jnz	dwcolor

	mov	dishigh,6

	mov	dh,3		;display four sides 	
	mov	dl,2
	mov	ah,02
	mov	bh,0
	int	10h
	
	mov	al,0d5h
	mov	bh,0
	mov	bl,3fh
	mov	cx,1
	mov	ah,09
	int	10h
	
	mov	dh,3	
	mov	dl,3
	mov	ah,02
	mov	bh,0
	int	10h

	mov	al,0cdh
	mov	bh,0
	mov	bl,3fh
	mov	cx,DISPLAYWIDE
	mov	ah,09
	int	10h

	mov	dh,3	
	mov	dl,2+DISPLAYWIDE
	mov	ah,02
	mov	bh,0
	int	10h

	mov	al,0b8h
	mov	bh,0
	mov	bl,3fh
	mov	cx,1
	mov	ah,09
	int	10h

	mov	dh,4		;displaymess14
	mov	dl,3
	mov	ah,02
	mov	bh,0
	int	10h

	lea	dx,mess14
	mov	ah,09
	int	21h

	mov	dh,4	
	mov	dl,2
	mov	ah,02
	mov	bh,0
	int	10h

	mov	al,0b3h
	mov	bh,0
	mov	bl,3fh
	mov	cx,1
	mov	ah,09
	int	10h
	
	mov	dh,5	
	mov	dl,2
	mov	ah,02
	mov	bh,0
	int	10h

	mov	al,0c3h
	mov	bh,0
	mov	bl,3fh
	mov	cx,1
	mov	ah,09
	int	10h

	mov	dh,4	
	mov	dl,19
	mov	ah,02
	mov	bh,0
	int	10h

	mov	al,0b3h
	mov	bh,0
	mov	bl,3fh
	mov	cx,1
	mov	ah,09
	int	10h

	mov	dh,4	
	mov	dl,2+DISPLAYWIDE
	mov	ah,02
	mov	bh,0
	int	10h

	mov	al,0b3h
	mov	bh,0
	mov	bl,3fh
	mov	cx,1
	mov	ah,09
	int	10h

	mov	dh,5	
	mov	dl,2+DISPLAYWIDE
	mov	ah,02
	mov	bh,0
	int	10h

	mov	al,0b4h
	mov	bh,0
	mov	bl,3fh
	mov	cx,1
	mov	ah,09
	int	10h

	mov	dh,5	
	mov	dl,3
	mov	ah,02
	mov	bh,0
	int	10h

	mov	al,0c4h
	mov	bh,0
	mov	bl,3fh
	mov	cx,DISPLAYWIDE-1
	mov	ah,09
	int	10h

	mov	dh,3	
	mov	dl,19
	mov	ah,02
	mov	bh,0
	int	10h

	mov	al,0d1h
	mov	bh,0
	mov	bl,3fh
	mov	cx,1
	mov	ah,09
	int	10h

	mov	dh,5	
	mov	dl,19
	mov	ah,02
	mov	bh,0
	int	10h

	mov	al,0c5h
	mov	bh,0
	mov	bl,3fh
	mov	cx,1
	mov	ah,09
	int	10h

drawb3_:
	mov	dh,dishigh	
	mov	dl,2
	mov	ah,02
	mov	bh,0
	int	10h

	mov	al,0b3h
	mov	bh,0
	mov	bl,3fh
	mov	cx,1
	mov	ah,09
	int	10h

	mov	dh,dishigh	
	mov	dl,19
	mov	ah,02
	mov	bh,0
	int	10h

	mov	al,0b3h
	mov	bh,0
	mov	bl,3fh
	mov	cx,1
	mov	ah,09
	int	10h

	mov	dh,dishigh	
	mov	dl,2+DISPLAYWIDE
	mov	ah,02
	mov	bh,0
	int	10h

	mov	al,0b3h
	mov	bh,0
	mov	bl,3fh
	mov	cx,1
	mov	ah,09
	int	10h

	add	dishigh,1
	cmp	dishigh,23
	jnz	drawb3_

	mov	dishigh,6


	mov	dh,23	
	mov	dl,2
	mov	ah,02
	mov	bh,0
	int	10h
	
	mov	al,0d4h
	mov	bh,0
	mov	bl,3fh
	mov	cx,1
	mov	ah,09
	int	10h
	
	mov	dh,23	
	mov	dl,3
	mov	ah,02
	mov	bh,0
	int	10h

	mov	al,0cdh
	mov	bh,0
	mov	bl,3fh
	mov	cx,DISPLAYWIDE
	mov	ah,09
	int	10h

	mov	dh,23	
	mov	dl,19
	mov	ah,02
	mov	bh,0
	int	10h

	mov	al,0cfh
	mov	bh,0
	mov	bl,3fh
	mov	cx,1
	mov	ah,09
	int	10h


	mov	dh,23	
	mov	dl,2+DISPLAYWIDE
	mov	ah,02
	mov	bh,0
	int	10h

	mov	al,0beh
	mov	bh,0
	mov	bl,3fh
	mov	cx,1
	mov	ah,09
	int	10h


dwcolor2:	
	mov	ch,dishigh
	mov	dh,ch
	mov	ax,0600h	
	mov	bh,4ah
	mov	cl,2ah
	mov	dl,39h
	int	10h

	mov	ch,dishigh
	mov	dh,ch
	mov	ax,0600h	
	mov	bh,4ah
	mov	cl,3ah
	mov	dl,4ch
	int	10h

	add	dishigh,2
	cmp	dishigh,24
	jnz	dwcolor2

	mov	dishigh,6

	mov	dh,3		;display four sides 	
	mov	dl,41
	mov	ah,02
	mov	bh,0
	int	10h
	
	mov	al,0d5h
	mov	bh,0
	mov	bl,3fh
	mov	cx,1
	mov	ah,09
	int	10h
	
	mov	dh,3	
	mov	dl,42
	mov	ah,02
	mov	bh,0
	int	10h

	mov	al,0cdh
	mov	bh,0
	mov	bl,3fh
	mov	cx,DISPLAYWIDE
	mov	ah,09
	int	10h

	mov	dh,3	
	mov	dl,41+DISPLAYWIDE
	mov	ah,02
	mov	bh,0
	int	10h

	mov	al,0b8h
	mov	bh,0
	mov	bl,3fh
	mov	cx,1
	mov	ah,09
	int	10h

	mov	dh,4		;displaymess14
	mov	dl,42
	mov	ah,02
	mov	bh,0
	int	10h

	lea	dx,mess14
	mov	ah,09
	int	21h

	mov	dh,4	
	mov	dl,41
	mov	ah,02
	mov	bh,0
	int	10h

	mov	al,0b3h
	mov	bh,0
	mov	bl,3fh
	mov	cx,1
	mov	ah,09
	int	10h
	
	mov	dh,5	
	mov	dl,41
	mov	ah,02
	mov	bh,0
	int	10h

	mov	al,0c3h
	mov	bh,0
	mov	bl,3fh
	mov	cx,1
	mov	ah,09
	int	10h

	mov	dh,4	
	mov	dl,57
	mov	ah,02
	mov	bh,0
	int	10h

	mov	al,0b3h
	mov	bh,0
	mov	bl,3fh
	mov	cx,1
	mov	ah,09
	int	10h

	mov	dh,4	
	mov	dl,41+DISPLAYWIDE
	mov	ah,02
	mov	bh,0
	int	10h

	mov	al,0b3h
	mov	bh,0
	mov	bl,3fh
	mov	cx,1
	mov	ah,09
	int	10h

	mov	dh,5	
	mov	dl,41+DISPLAYWIDE
	mov	ah,02
	mov	bh,0
	int	10h

	mov	al,0b4h
	mov	bh,0
	mov	bl,3fh
	mov	cx,1
	mov	ah,09
	int	10h

	mov	dh,5	
	mov	dl,42
	mov	ah,02
	mov	bh,0
	int	10h

	mov	al,0c4h
	mov	bh,0
	mov	bl,3fh
	mov	cx,DISPLAYWIDE-1
	mov	ah,09
	int	10h

	mov	dh,3	
	mov	dl,57
	mov	ah,02
	mov	bh,0
	int	10h

	mov	al,0d1h
	mov	bh,0
	mov	bl,3fh
	mov	cx,1
	mov	ah,09
	int	10h

	mov	dh,5	
	mov	dl,57
	mov	ah,02
	mov	bh,0
	int	10h

	mov	al,0c5h
	mov	bh,0
	mov	bl,3fh
	mov	cx,1
	mov	ah,09
	int	10h

drawb3_2:

	mov	dh,dishigh	
	mov	dl,41
	mov	ah,02
	mov	bh,0
	int	10h

	mov	al,0b3h
	mov	bh,0
	mov	bl,3fh
	mov	cx,1
	mov	ah,09
	int	10h

	mov	dh,dishigh	
	mov	dl,57
	mov	ah,02
	mov	bh,0
	int	10h

	mov	al,0b3h
	mov	bh,0
	mov	bl,3fh
	mov	cx,1
	mov	ah,09
	int	10h

	mov	dh,dishigh	
	mov	dl,41+DISPLAYWIDE
	mov	ah,02
	mov	bh,0
	int	10h

	mov	al,0b3h
	mov	bh,0
	mov	bl,3fh
	mov	cx,1
	mov	ah,09
	int	10h

	add	dishigh,1
	cmp	dishigh,23
	jnz	drawb3_2

	mov	dishigh,6


	mov	dh,23	
	mov	dl,41
	mov	ah,02
	mov	bh,0
	int	10h
	
	mov	al,0d4h
	mov	bh,0
	mov	bl,3fh
	mov	cx,1
	mov	ah,09
	int	10h
	
	mov	dh,23	
	mov	dl,42
	mov	ah,02
	mov	bh,0
	int	10h

	mov	al,0cdh
	mov	bh,0
	mov	bl,3fh
	mov	cx,DISPLAYWIDE
	mov	ah,09
	int	10h

	mov	dh,23	
	mov	dl,57
	mov	ah,02
	mov	bh,0
	int	10h

	mov	al,0cfh
	mov	bh,0
	mov	bl,3fh
	mov	cx,1
	mov	ah,09
	int	10h


	mov	dh,23	
	mov	dl,41+DISPLAYWIDE
	mov	ah,02
	mov	bh,0
	int	10h

	mov	al,0beh
	mov	bh,0
	mov	bl,3fh
	mov	cx,1
	mov	ah,09
	int	10h



	mov	dh,24		;displaymess7
	mov	dl,24
	mov	ah,02
	mov	bh,0
	int	10h

	lea	dx,mess7
	mov	ah,09
	int	21h

	push	si
	push	di
	mov	al,recdnum
	push	ax

	lea	si,records

disrecords:

	lea	di,names+2
	sub	ch,ch	
	mov	cl,15
	rep	movsb
	
	mov	dh,dishigh		
	mov	dl,3
	mov	ah,02
	mov	bh,0
	int	10h

	lea	dx,names+2	
	mov	ah,09
	int	21h

	lea	di,phnumber+2
	sub	ch,ch	
	mov	cl,15
	rep	movsb

	mov	dh,dishigh		
	mov	dl,20
	mov	ah,02
	mov	bh,0
	int	10h

	lea	dx,phnumber+2
	mov	ah,09
	int	21h

	lea	di,names+2
	sub	ch,ch	
	mov	cl,15
	rep	movsb
	
	mov	dh,dishigh		
	mov	dl,42
	mov	ah,02
	mov	bh,0
	int	10h

	lea	dx,names+2	
	mov	ah,09
	int	21h

	lea	di,phnumber+2
	sub	ch,ch	
	mov	cl,15

⌨️ 快捷键说明

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