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

📄 huibianshiyan4.asm

📁 huibianshiyan2.4 dfajhahkfd544784
💻 ASM
字号:
DATE SEGMENT
    INPUTNAME	DB	21,?,21 DUP(?)
    INPUTPHONE	DB	9,?,9 DUP(?)
    TABLE	DB	50 DUP(20 DUP(0),8 DUP(0))
    MSG1	DB	'Input name:$'
    MSG2	DB	'Input a telephone number:$'
    MSG3	DB	'Do you want a telephone number?(Y/N)$'
    MSG4	DB	'name?$'
    MSG5	DB	'name',16 DUP(0),'tel.',13,10,'$'
    TEMP	DB	20 DUP(?),8 DUP(?),13,10,'$'
    COUNT	DB	0
    ENTER	DB	13,10,'$'
DATE ENDS

CODE SEGMENT
MAIN	PROC	FAR
	ASSUME CS:CODE,DS:DATE,ES:DATE
START:
	PUSH	DS
	XOR	AX,AX
	PUSH	AX
	MOV	AX,DATE
	MOV	DS,AX
	MOV	ES,AX
	CLD
	MOV	BX,0
PART1:
	LEA	DX,MSG1
	MOV	AH,09H
	INT	21H
	CALL	INPUT_NAME
	CMP	INPUTNAME+1,0
	JZ	PART2
	CALL	STOR_NAME
	LEA	DX,MSG2
	MOV	AH,09H
	INT	21H
	CALL	INPHONE
	CMP	COUNT,32H
	JNZ	PART1
PART2:
	MOV	BP,BX
	CALL	NAME_SORT
PART3:
	LEA	DX,MSG3
	MOV	AH,09H
	INT	21H
	MOV	AH,01H
	INT	21H
	CMP	AL,'y'
	JZ	PART4
	CMP	AL,'Y'
	JZ	PART4
	CMP	AL,'n'
	JZ	EXIT
	CMP	AL,'N'
	JZ	EXIT
	LEA	DX,ENTER
	MOV	AH,09H
	INT	21H
	JMP	SHORT PART3
PART4:
	MOV	BX,BP
	LEA	DX,ENTER
	MOV	AH,09H
	INT	21H
	LEA	DX,MSG4
	MOV	AH,09H
	INT	21H
	CALL	INPUT_NAME
	CMP	INPUTNAME+1,0
	JZ	EXIT
	LEA	DX,MSG5
	MOV	AH,09H
	INT	21H
PART5:
	CALL	NAME_SEARCH
	CMP	BX,0FFE4H
	JZ	PART4
	CALL	PRINTLINE
	JMP	SHORT PART5
EXIT:
	RET
MAIN	ENDP

INPUT_NAME	PROC	NEAR
	LEA	DX,INPUTNAME
	MOV	AH,0CH
	MOV	AL,0AH
	INT	21H
	LEA	DX,ENTER
	MOV	AH,09H
	INT	21H
	RET
INPUT_NAME	ENDP

STOR_NAME	PROC	NEAR
	LEA	SI,INPUTNAME+2
	LEA	DI,TABLE[BX]
	XOR	CX,CX
	MOV	CL,INPUTNAME+1
	REP	MOVSB
	INC	COUNT
	ADD	BX,14H
	RET
STOR_NAME	ENDP

INPHONE	PROC	NEAR
	LEA	DX,INPUTPHONE
	MOV	AH,0CH
	MOV	AL,0AH
	INT	21H
	LEA	DX,ENTER
	MOV	AH,09H
	INT	21H

	LEA	SI,INPUTPHONE+2
	LEA	DI,TABLE[BX]
	XOR	CX,CX
	MOV	CL,INPUTPHONE+1
	REP	MOVSB
	ADD	BX,8H
	RET
INPHONE	ENDP

NAME_SORT	PROC	NEAR
	CMP	COUNT,0H
	JZ	EXIT1
	MOV	AX,BX
	MOV	DL,1CH
	DIV	DL
	XOR	CX,CX
	MOV	CL,AL
	DEC	CL
LOOP1:
	MOV	BX,0
	PUSH	CX
LOOP2:
	PUSH	CX
	LEA	SI,TABLE[BX]
	ADD	BX,1CH
	LEA	DI,TABLE[BX]
	XOR	CX,CX
	MOV	CL,14H
	REPZ	CMPSB
	JBE	NEXT2

	LEA	SI,TABLE[BX]
	LEA	DI,TEMP
	XOR	CX,CX
	MOV	CL,1CH
	REP	MOVSB
	SUB	SI,38H
	LEA	DI,TABLE[BX]
	XOR	CX,CX
	MOV	CL,1CH
	REP	MOVSB
	LEA	SI,TEMP
	SUB	DI,38H
	XOR	CX,CX
	MOV	CL,1CH
	REP	MOVSB
NEXT2:
	POP	CX
	LOOP	LOOP2
NEXT1:
	POP	CX
	LOOP	LOOP1
EXIT1:
	RET
NAME_SORT	ENDP

NAME_SEARCH	PROC	NEAR
NEXT:
	SUB	BX,1CH
	CMP	BX,0FFE4H
	JZ	EXIT2
	LEA	SI,INPUTNAME+2
	LEA	DI,TABLE[BX]
	XOR	CX,CX
	MOV	CL,INPUTNAME+1
	REPZ	CMPSB
	JNZ	NEXT
EXIT2:
	RET
NAME_SEARCH	ENDP

PRINTLINE	PROC	NEAR
	LEA	SI,TABLE[BX]
	LEA	DI,TEMP
	MOV	CX,001CH
	REP	MOVSB

	LEA	DX,TEMP
	MOV	AH,09H
	INT	21H
	RET
PRINTLINE	ENDP

CODE	ENDS
	END	START

⌨️ 快捷键说明

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