计算字符串中sun的个数并以SUNXXXX的形式表示出来

来源:互联网 发布:c语言api怎么用 编辑:程序博客网 时间:2024/05/23 16:56
DATAS SEGMENT;此处输入数据段代码  ENG    DB 'Here is sun,sun,sun,sun,sun,...,$' DISP   DB  'SUN'DAT    DB  '0000' , 0DH, 0AH, '$' KEYWORD DB  'sun'DATAS ENDSSTACKS SEGMENT   DW 100 DUP(?) ;此处输入堆栈段代码STACKS ENDSCODES SEGMENT    ASSUME CS:CODES,DS:DATAS,SS:STACKSSTART:    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 21HCODES ENDS    END START

0 0
原创粉丝点击