题目
26.现有一组字符串为data,name,time,file,code,path,user,exit,quit,text,请编写程序从键盘输入4个字符的字符串,若存在将其修改为disk, 并将结果在显示器上显示。
思路
把BUF1中的数据,一位一位的与BUF2比较
代码
DATAS SEGMENT
;此处输入数据段代码
BUF1 db 'data,name,file,code,path,user,exit,quit,text','$'
BUF2 db 'BIT_XWK'
Len_BUF1 equ $-BUF1
Len_BUF2 equ $-BUF2
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
;把SI,DI初始化
MOV SI,0
MOV DI,2
COM:
;比较
MOV AL,BUF1[SI]
MOV BL,BUf2[DI]
CMP AL,BL
;相等跳转
JE L1
;不相等跳转
JNE L2
L1:
INC SI
INC DI
;看是否比较到BUF2的最后一位
CMP DI,6
JE EXIT0
JMP COM
L2:
MOV DI,2
INC SI
;看是否到达BUF1的最后一位
CMP SI,Len_BUF1
JE EXIT1
JMP COM
EXIT0:
;替换字符
MOV BUF1[SI-4],'d'
MOV BUF1[SI-3],'i'
MOV BUF1[SI-2],'s'
MOV BUF1[SI-1],'k'
EXIT1:
;打印输出
LEA DX,BUF1
MOV AH,09H
INT 21H
MOV AH,4CH
INT 21H
CODES ENDS
END START
结果
输入quit的结果
错误输入的结果