repz cmpsb 如果ds:si和es:di所指向的两个字节相等,则继续比较。
CMPSB指令,是用 DS:[SI] 所指的字节单元内容,减去 ES:[DI] 所指的字节单元的内容。
DS:[SI] 是被减数, ES:[DI] 是减数。
验证方法很简单,将这两个内存单元的内容设置成不同的数,看指令执行后CF是0还是1,就能证明了。
例如,你将DS:[SI]单元内容设成01H,将ES:[DI]单元内容设成02H,然后执行CMPSB,你会发现,CF是1,而不是0。这就证明了是前者减去后者的运算。
ZF=1表示是0,对吗?ZF=0,结果非0
是的,ZF=1,表明运算结果为0
cmpsb和rep cmpsb的区别?他们的执行过程是怎样的?
答:
repe/repz:相等则重复
32位:
rep string_op (串操作指令)
string_op : ins, movs,outs,stos
rep:一个串操作前缀,它使其后的串操作重复执行ecx次。
操作:
while (ecx!=0)
{
ecx=ecx-1;
string_op; /串操作/
}
;========================
repe/repz string_op
string_op:cmps,scas
repz:串操作前缀&#