问题 单项选择题

下面一段程序要实现的功能是:在内存中从地址SOURCE开始有一个长度为50的字符串,测试该字符串中是否存在数字,如有则将DL的第三位置1,否则将该位置0。 BEGIN: MOV CX,50MOV SI, 0 LP:MOV SOURCE[SI]CMP AL,30HJB GOONCMP AL,JA GOONOR DL,20HJMP EXIT GOON: INC SILOOPLPAND DL, EXIT: 则①,②中应为:

A.35H,0DFH

B.35H,0FFH

C.39H,0DFH

D.39H,OFFH

答案

参考答案:C

解析: 这段程序注意有两个转移语句,JB是在低于,或不高于等于,或进位位为1时转移,JA是在高于或不低于不等于转移。数字的ASCII码值范围是30H~39H,语句CM PAL,30H是和0比较,如果小于0,则转移到 GOON,SI加1,继续和下一个比较,如果大于0,再判断是否小于9,即39H。所以第①处填 39H。如果大于39H,说明不是数字,则再转移到GOON,SI加1,继续和下一个比较。如果结果没有数字,则执行OR DL,20H指令,将DL的第三位置1,如果有数字,则执行AND DL, 0DFH,将DL的第三位置0。故第②处填 ODFH。

单项选择题
单项选择题