问答题
已知:在16位空间的数据段内,有一个首地址为210H的数据区,其中存放着一个以0结尾的字符串。试编写一个486程序段,统计该字符串中的字母、数字和其他字符的个数,并将统计结果分别存放在字节单元(200H)、(201H)和(202H)中。
【正确答案】MOV BYTE PTR[200HI,0 ;清字母个数计数器
NOV BYTE PTR[201H],0 ;清数字个数计数器
NOV BYTE PTR[202H],0 ;清其他字符个数计数器
MOV SI,210H ;SI指向数据区首地址
REPEAT:MOV AL,[SI] ;取一字符ci
CMP AL,0
JE OVER ;若ci=0转OVER结束
CMP AL,'0'
JB OTHER ;若ci<'0'转OTHER
CMP AL,'9'
JA cKALPH ;若ci>'9'转CKALPH
INC BYTE PTR[201H] ;数字字符计数
JMP NEXT
CKALPH:OR AL,20H ;将大写字母转成小写字母
CMP AL,'a'
JB OTHER ;若ci<'a'转OTHER
CMP AL,'z'
JA OTHER ;若ci>'z'转OTHER
INC BYTE PTR[200H] ;字母字符计数
JMP NEXT
OTHER: INC BYTE PTR[202H] ;其他字符计数
NEXT: INC SI ;SI指向下一字符
JMP REPEAT
OVER: …
【答案解析】