单选题
假设ES段中有一个字符串“12FG3LM5C”,其名为ARRAY,下面程序段执行后,CX的值是______。
CLD
LEA DI, ES:ARRAY
MOV AL, 'G'
MOV CX, 9
REPNE SCASB
HLT
A.9 B.5 C.4 D.0
【正确答案】
B
【答案解析】本题程序段实现搜索字符串“12FG3LM5C”中的“G”字符,所涉及指令的说明如下。
CLD指令:使DF=0,在执行串处理指令时可使地址自动增量。
SCASB指令(字符串扫描指令):从AL中减去由ES: [DI]指定的串元素,结果不送任何地方,仅改变标志位,同时,根据DF和串的类型修改DI,指向串的下一个元素。REPNE指令(重复前缀指令):当不相等时重复串操作。执行步骤如下。
1. 如果(CX)=0或ZF=1时退出,否则往下执行。
2. (CX)-1→(CX)。
3. 执行其后的串指令。
4. 重复(1)~(3)。
HLT指令:停机指令。
当找到“G”字符,停止搜索时,(CX)=5。(CX寄存器中的值是剩下的未比较的字符个数)