刚学汇编 第一个程序改了两天了 救救我!!!
我想输入两个字符串,然后把他们中间相同的字母取出,然后输出STACK SEGMENT STACK
DW 64 DUP(?)
STACK ENDS
DATA SEGMENT
P1 DB 20
T1 DB 0
ARRAY1 DB 21 DUP(?)
P2 DB 20
T2 DB 0
ARRAY2 DB 21 DUP(?)
ARRAY3 DB 21 DUP(?)
MSG1 DB 'PLEASE INPUT:',0AH,0DH,'$'
MSG2 DB 'THE SAME IS:',0AH,0DH,'$'
DATA ENDS
CODE SEGMENT
ASSUME DS:DATA,CS:CODE,SS:STACK
START: MOV AX, DATA
MOV DS, AX
MOV DX, OFFSET MSG1
MOV AH, 09H
INT 21H
XOR DX,DX
MOV DX, OFFSET P1 ;取第一个字符串
MOV AH, 0AH
INT 21H
MOV DX, OFFSET MSG1
MOV AH, 09H
INT 21H
XOR DX,DX
MOV DX, OFFSET P2 ;取第二个字符串
MOV AH, 0AH
INT 21H
MOV DX, OFFSET MSG2
MOV AH, 09H
INT 21H
MOV DI,0H
MOV BX,0FFFFH
MOV CX,WORD PTR T1
LOOP1: INC BX ;循环取出第一个字符串中的每一个元素与第二个字符串比较
XOR AX,AX ;如果第二个字符串中有这个字母就送入第三个字符串中
MOV AL,ARRAY1[BX]
PUSH CX
MOV CX,WORD PTR T2
PUSH DI
LEA DI,ARRAY2
REPNE SCASB
POP DI
JE FOUND
POP CX
LOOP LOOP1
JMP EXIT
FOUND:
MOV ARRAY3[DI],AL
INC DI
POP CX
LOOP LOOP1
EXIT: MOV ARRAY3[DI],'$'
MOV DX,OFFSET ARRAY3 ;输出第三个字符串
MOV AH,09H
INT 21H
MOV AH, 4CH
INT 21H
CODE ENDS
END START