四象轮回 发表于 2014-5-13 17:39:33

整体显示输入的多组字符串

代码如下,如何将多次输入的数据整体输出呢?因为要有查询的功能,所以在每组数据最后都有‘$’,所以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,0   ;清除MESSAGE中最后一个人的信息后面的30               
      INC SI                                     个字节中非0的单元
      CMP,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,0DH      ;盖上一次的信息,将出车符(0DH)及其后
      JNE S5                   ; 面的字节归0
   S6:MOV BYTE PTR MESSAGE2,0
      INC BX
      CMP BX,20
      JNE S6
      MOV BYTE PTR MESSAGE2,0DH
      MOV CX,20
      MOV BX,-1
S1:INC BX                  ;将MESSAGE2复制到MESSAGE中
      MOV DL,BYTE PTR MESSAGE2         
      MOV BYTE PTR MESSAGE,DL
      LOOP S1
      MOV BYTE PTR MESSAGE,'$'
      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,0DH ;入的号码的最后一位的回车符(0DH)换成$   
      JNE S7
      MOV BYTE PTR MESSAGE3,'$'
      ADD SI,21
      MOV CX,8
      MOV BX,-1
   S3:INC BX
      MOV DL,BYTE PTR MESSAGE3
      MOV BYTE PTR MESSAGE,DL
      LOOP S3
      MOV BYTE PTR MESSAGE,'$'
      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



四象轮回 发表于 2014-5-14 17:19:31

自己顶,求救啊!
页: [1]
查看完整版本: 整体显示输入的多组字符串