问题
单项选择题
下面一段程序要实现的功能是:在内存中从地址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。