DATAS SEGMENT;此处输入数据段代码
ENG DB 'Here is sun,sun,sun,sun,sun,...,$'
DISP DB 'SUN'
DAT DB '0000' , 0DH, 0AH, '$'
KEYWORD DB 'sun'
DATAS ENDS
STACKS SEGMENT
DW 100 DUP(?) ;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX;此处输入代码段代码
MOV ES, AX ;给 ES 赋值
BEGIN: MOV AX, 0
MOV DX, DISP-ENG-2 ;计算 ENG 的长度(每次比较 sun,因此比较次数-2)
LEA BX, ENG
COMP: MOV DI, BX
LEA SI, KEYWORD
MOV CX, 3
REPE CMPSB ;串比较
JNZ NOMATCH
INC AX ;是,SUN 的个数加 1
ADD BX, 2
NOMATCH:INC BX ;指向 ENG 的下一个字母
DEC DX
JNZ COMP
DONE: MOV CH, 4 ;将次数转换为 16 进制数的 ASCII 码
MOV CL, 4
LEA BX, DAT ;转换结果存入 DAT 单元中
DONE1: ROL AX, CL
MOV DX, AX
AND DL, 0FH ;取一位 16 进制数
ADD DL, 30H
CMP DL, 39H
JLE STORE
ADD DL, 07H ;是“A~F”所以要加 7
STORE: MOV [BX], DL ;转换结果存入 DAT 单元中
INC BX
DEC CH
JNZ DONE1
DISPLAY:
LEA DX, DISP ;显示字符串程序(将 DISP 和 DAT 一起显示)
MOV AH, 09H
INT 21H
MOV AH,4CH
INT 21H
CODES ENDS
END START
计算字符串中sun的个数并以SUNXXXX的形式表示出来
最新推荐文章于 2021-12-02 09:59:31 发布