这是学长的一段代码,拿来学习一下
现有一组字符串为data,name,time,file,code,path,user,exit,quit,text,请编写程序从键盘输入4个字符的字符串,若存在将其修改为disk,并将结果在显示器上显示。
算法思路是一个字母一个字母比较,如果发现不一样直接跳到写一个单词
发现一样的就一次一次比,这个没有充分利用cmpsb的功能,被隔壁大佬嫌弃了。
DATAS SEGMENT
;此处输入数据段代码
BUF1 DB 'data,name,file,code,path,user,exit,quit,text','$'
BUF2 DB 100
DB ?
DB 100 DUP(?) ;占这么多好像没有用
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
MOV ES,AX;
;此处输入代码段代码
LEA DX,BUF2
MOV AH,0AH
INT 21H
MOV DL,0AH
MOV AH,02H
INT 21H
LEA SI,BUF1
LEA DI,BUF2[2]
MOV CH,44
MOV CL,4
CLD
ZONGCHULI:
CMP CH,0
JZ END0
NEXTZIMU:
CMPSB
JNZ NEXTWORD
JMP AGAIN
AGAIN:
DEC CH
DEC CL
CMP CL,0
JNZ NEXTZIMU
CALL CHANGE
INC SI
JMP ZONGCHULI
NEXTWORD:
CMP CL,0
JZ A
INC SI
DEC CL
DEC CH
JMP NEXTWORD
A:
MOV CL,04H
DEC CH
LEA DI,BUF2[2]
JMP ZONGCHULI
CHANGE PROC NEAR
MOV BUF1[SI-4],'d'
MOV BUF1[SI-3],'i'
MOV BUF1[SI-2],'s'
MOV BUF1[SI-1],'k'
MOV CL,04H
LEA DI,BUF2[2]
RET
CHANGE ENDP
END0:
LEA DX,BUF1
MOV AH,09H
INT 21H
MOV AH,4CH
INT 21H
CODES ENDS
END START