10 鱼币
代码如下,如何将多次输入的数据整体输出呢?因为要有查询的功能,所以在每组数据最后都有‘$’,所以9号功能无法把多组数据整体输出,求大神指导。
DATAS SEGMENT
OBF3 DB 'Please input a new name(within 20 words):$'
OBF4 DB 'please input the number(within 8 numbers):$'
OBF5 DB 'Continue to input?(y/n)$'
MESSAGE2 DB 21,0,21 DUP(0) ;添加姓名变量
MESSAGE3 DB 9,0,9 DUP(0) ;添加号码变量
MESSAGE DB 1500 DUP(0)
DATAS ENDS
INPUT: CALL NEXTLINE
ADD BP,30
MOV SI,BP
S2:MOV BYTE PTR MESSAGE[SI],0 ;清除MESSAGE中最后一个人的信息后面的30
INC SI 个字节中非0的单元
CMP[SI],0
JNE S2
MOV SI,BP
MOV DX,OFFSET OBF3
MOV AH,9
INT 21H
MOV DX,OFFSET MESSAGE2 ;输入的人名存放在MESSAGE2中
MOV AH,10
INT 21H
MOV BX,-1
S5:INC BX ;为避免MESSAGE2中刚输入的信息没有完全覆
CMP BYTE PTR MESSAGE2[BX+2],0DH ;盖上一次的信息,将出车符(0DH)及其后
JNE S5 ; 面的字节归0
S6:MOV BYTE PTR MESSAGE2[BX+2],0
INC BX
CMP BX,20
JNE S6
MOV BYTE PTR MESSAGE2[BX+2],0DH
MOV CX,20
MOV BX,-1
S1:INC BX ;将MESSAGE2复制到MESSAGE中
MOV DL,BYTE PTR MESSAGE2[BX+2]
MOV BYTE PTR MESSAGE[SI+BX],DL
LOOP S1
MOV BYTE PTR MESSAGE[SI+20],'$'
CALL NEXTLINE
MOV DX,OFFSET OBF4
MOV AH,9
INT 21H
MOV DX,OFFSET MESSAGE3
MOV AH,10
INT 21H
MOV BX,-1
S7:INC BX ;为避免刚输入的号码没有完全覆盖上一次的号码,将这次输
CMP BYTE PTR MESSAGE3[BX+2],0DH ;入的号码的最后一位的回车符(0DH)换成$
JNE S7
MOV BYTE PTR MESSAGE3[BX+2],'$'
ADD SI,21
MOV CX,8
MOV BX,-1
S3:INC BX
MOV DL,BYTE PTR MESSAGE3[BX+2]
MOV BYTE PTR MESSAGE[SI+BX],DL
LOOP S3
MOV BYTE PTR MESSAGE[SI+8],'$'
CALL NEXTLINE
MOV DX,OFFSET OBF5
MOV AH,9
INT 21H
CALL NEXTLINE
MOV AH,1
INT 21H
CMP AL,'Y'
JE INPUT
CMP AL,'y'
JE INPUT
我来回答