📄 ex4fsr.asm
字号:
DATA SEGMENT
INFON DB 13,10, 'Enter keyword :$'
INFON1 DB 13,10,'Enter Sentence:$'
INFON2 DB 13,10,'Match at location:$'
INFON3 DB 'H of the sentence.$', 13,10
SENTENCE DB 30,?,30 DUP(?)
KEYWORD DB 30,?,30 DUP(?)
NO DB 13,10,'No,Match!$'
DATA ENDS
CODE SEGMENT
ASSUME DS:DATA,CS:CODE
START: MOV AX,DATA
MOV DS,AX
MOV ES,AX
XOR CX,CX
CLD ;指明指针移动方向
MESSAGE: LEA DX,INFON1 ;提示输入sentence
MOV AH,9
INT 21H
INPUTST: LEA DX,SENTENCE ;输入sentence,并赋值给di
MOV AH,0AH
INT 21H
MOV DI,DX
MOV CL,DI[1] ;CX中存储sentence元素的个数
INC DI
INC DI ;把指针移动到sentence的第一个元素
MOV BX,DI ;sentence赋值给BX
MESSAGE1: LEA DX,INFON ;提示输入keyword
MOV AH,9
INT 21H
INPUTKE: LEA DX,KEYWORD ;输入keyword
MOV AH,0AH
INT 21H
COMPER: PUSH CX ;保护sentence的循环次数
MOV SI,DX ;把keyword赋值给si
XOR CX,CX
MOV CL,SI[1] ;CX中存储keyword元素的个数
INC SI
INC SI ;把指针移动到keyword的第一个元素
REPE CMPSB ;比较sentece和keyword的元素
JE PRINTY ;相等则跳出循环
POP CX ;弹出sentence的循环次数
LOOP COMPER
PRINTN: LEA DX,NO ;打印不匹配
MOV AH,9
INT 21H
JMP EXIT
PRINTY: MOV SI,DX ;sentence的首元素减去keyoword的元素个数+1
SUB DI,SI[1]
INC DI
SUB DI,BX
AND DI,00FFH
MOV BX,DI ;显示位数的值存入bx中
LEA DX,INFON2 ;显示匹配位置为:的提示信息
MOV AH,9
INT 21H
;把显示输出变成十六进制
MOV CH,4 ;循环四次
ROTATE: MOV CL,4
ROL BX,CL ;左移四位
MOV AL,BL
AND AL,0FH
ADD AL,30H
CMP AL,30H ;不显示0
JZ LO
CMP AL,3AH
JL PRINTIT
ADD AL,7H
PRINTIT: MOV DL,AL
MOV AH,2
INT 21H
LO: DEC CH
JNZ ROTATE
LEA DX,INFON3
MOV AH,9
INT 21H
EXIT: MOV AH,4CH
INT 21H
CODE ENDS
END START
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -