公告

Gentoo交流群:838664909 欢迎您的加入

#1 2022-08-25 14:04:11

batsom
管理团队
注册时间: 2022-08-03
帖子: 607
个人网站

判断字符串中是否有数字

题目描述
在STR到STR+99单元中存放着一个字符串,试编写程序测试该字符串中是否有数字,若有将CL置1,否则CL置0。
代码及注释

DATA SEGMENT
STR   DB 'abc2uuuk_o$'      ;字符串存入STR中
LEN   EQU $-STR
DATA ENDS
CODE SEGMENT
      ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
      MOV DS,AX
      XOR CX,CX     ;清空CX
      MOV CL,LEN    ;将字符串长度存入CX
      MOV BL,100   
      CMP CL,BL      ;比较CL和100,因为题目要求STR到STR+99,若长度大于100,则需要将长度置为100
      JB X           ;长度大于100则跳转,直接进行后续操作,否则把100存入CL
      XOR CX,CX
      MOV CL,100    ;100存入CL代替LEN
X:MOV SI,-1          ;SI作为指针,存入-1
NUMBER:INC SI        ;SI加一
      MOV BL,30H
      CMP STR[SI],BL     ;看字符的ASCII码是否大于等于0的ASCII码
      JAE NEXT        ;大于则跳转
      LOOP NUMBER     ;不是则不是数字,检查下一个字符串
      MOV CL,0       ;运行到最后都不是,则CL置0
      JMP EXIT
NEXT:MOV BL,39H       
      CMP STR[SI],BL      ;看字符的ASCII码是否小于等于9的ASCII码
      JBE LAB1      ;是则说明就是字符就是数字,可以将CL置1跳出程序
      LOOP NUMBER      ;不是则不是数字,检查下一个字符串
LAB1:XOR CX,CX
      MOV CL,1        ;是数字会跳转到此处,CL置1
EXIT:MOV AH,4CH
      INT 21H
CODE ENDS
      END START

离线

页脚

Powered by FluxBB

本站由XREA提供空间支持