scas(string scan instruction)

scas(string scan instruction)

Content #

scasb - 将内存中某字节与AL的内容做比较。 scasw - 将内存中某字节与AX的内容做比较。 scasd - 将内存中某字节与EAX的内容做比较。

寄存器内容与内存中的内容都不会发生变化,只影响标记位。内存的位置由DI指定,并且使用默认段寄存器ES,不能用SEGMENT OVERRIDE PREFIX. scas指令通过D标记来确定DI的方向。

​结束后状态: CX:剩余未扫描的次数。 EDI:指向匹配位置的下一个地址。 ZF:指示是否找到匹配项。

假定某内在区域共有100字节,开始地址为BLOCK,要测试该区域是否有值为00H 的字节:

mov di, offset BLOCK ;DI作为目的变址寄存器,指向待扫描的内存起始位置
cld  ;auto-increment 清除方向标志(DF = 0)
mov cx, 100
xor al, al
repne scasb

跳过ASCII码中的空格,其中DI已经指向字符串起始位置:

cld ;auto-increment
mov cx, 256 ;load counter
mov al, 20h ;get space
repe scasb

From #

The Intel Microprocessors