在字符串中查找自己的学号和姓名,并返回地址
在存储空间定义字符串,该字符串中含有自己的学号和姓名(拼音), 这两个部分不能相邻,如: String db “***”,“1502031001”,“***”,“zhang san”,“***”
要求:在屏幕中显示这两个字符串的偏移地址,并显示学号和姓名
DATA SEGMENT
FLAG DB 0
COUNT1 DW 0
COUNT2 DW 0
OFFSETXH DW 0
OFFSETXM DW 0
STRING DB '****','ZHANG ZHUO','****','19200100004','****'
XUEHAO DB 20 DUP(0)
XINGMING DB 20 DUP(20)
INPUTWARN1 DB 'INPUT YOUR STUDENT NUMBER,END WITH ENTER','$'
INPUTWARN2 DB 'INPUT YOUR NAME,END WITH ENTER','$'
OUTPUTWARN1 DB 'THE OFFSET ADDRESS OF YOUR STUDENT NUMBER IS: ','$'
OUTPUTWARN2 DB 'THE OFFSET ADDRESS OF YOUR NAME IS: ','$'
OUTPUTWARN3 DB 'YOUR STUDENT NUMBER IS: ','$'
OUTPUTWARN4 DB 'YOUR NAME IS: ','$'
DATA ENDS
STACK SEGMENT
DW 200 DUP(0)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK
START:
MOV AX,DATA
MOV DS,AX
MOV ES,AX
MOV AX,STACK
MOV SS,AX
LEA DX,INPUTWARN1
MOV AH,9H
INT 21H
MOV DL,0AH;换行
MOV AH,02H
INT 21H
MOV DL,0DH;回车
MOV AH,02H
INT 21H
LEA SI,XUEHAO
L1:;对输入字符进行检查
MOV AH,1H
INT 21H
CMP AL,0DH
JZ L2;输入回车,输入过程结束
MOV [SI],AL
INC SI
INC COUNT1
JMP L1
L2:
MOV [SI],24H
MOV DL,0AH;换行
MOV AH,02H
INT 21H
LEA DX,INPUTWARN2
MOV AH,9H
INT 21H
MOV DL,0AH;换行
MOV AH,02H
INT 21H
MOV DL,0DH;回车
MOV AH,02H
INT 21H
LEA SI,XINGMING
L3:;对输入字符进行检查
MOV AH,1H
INT 21H
CMP AL,0DH
JZ L4;输入回车,输入过程结束
MOV [SI],AL
INC SI
INC COUNT2
JMP L3
L4:
MOV [SI],24H
MOV DL,0AH;换行
MOV AH,02H
INT 21H
MOV CX,COUNT1
LEA SI,STRING
MOV AX,SI
LEA DI,XUEHAO
CMP SI,SI ;ZF置零
CLD ;DF置零
L5:
REPZ CMPSB
CMP CX,0
JZ L6;查找到
INC AX
MOV SI,AX
LEA DI,XUEHAO
MOV CX,COUNT1
LOOP L5
L6:
MOV OFFSETXH,AX;存学号偏移地址
MOV CX,COUNT2
LEA SI,STRING
MOV AX,SI
LEA DI,XINGMING
CMP SI,SI ;ZF置零
CLD ;DF置零
L7:
REPZ CMPSB
CMP CX,0
JZ L8;查找到
INC AX
MOV SI,AX
LEA DI,XINGMING
MOV CX,COUNT2
LOOP L7
L8:
MOV OFFSETXM,AX;存姓名偏移地址
;输出学号,姓名及其偏移地址
LEA DX,OUTPUTWARN1
MOV AH,9H
INT 21H
MOV BX,OFFSETXH
CALL TRANS
LEA DX,OUTPUTWARN2
MOV AH,9H
INT 21H
MOV BX,OFFSETXM
CALL TRANS
LEA DX,OUTPUTWARN3
MOV AH,9H
INT 21H
LEA DX,XUEHAO
MOV AH,9H
INT 21H
MOV DL,0AH;换行
MOV AH,02H
INT 21H
MOV DL,0DH;回车
MOV AH,02H
INT 21H
LEA DX,OUTPUTWARN4
MOV AH,9H
INT 21H
LEA DX,XINGMING
MOV AH,9H
INT 21H
MOV DL,0AH;换行
MOV AH,02H
INT 21H
MOV DL,0DH;回车
MOV AH,02H
INT 21H
JMP OVER
TRANS PROC NEAR;十六进制输出
MOV SI,5
LL:
MOV CX,4
MOV DL,0
LL1:
SHL BX,1
RCL DL,1
LOOP LL1
CMP DL, 9
JA LL2
ADD DL,30H
MOV AH,02H
INT 21H
JMP LL3
LL2:
ADD DL,37H
MOV AH,02H
INT 21H
LL3:
DEC SI
MOV CX,SI
LOOP LL
MOV DL,48H
MOV AH,02H
INT 21H
MOV DL,0AH;换行
MOV AH,02H
INT 21H
MOV DL,0DH;回车
MOV AH,02H
INT 21H
RET
TRANS ENDP
OVER:
CODE ENDS
END START