页次: 1
题目描述
在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
离线
页次: 1