SCASB

SCASB

SCASB
在汇编语言中SCASB是一条字符串操作指令,源自“SCAN String Byte”的缩写。
  • 外文名:SCASB
  • 学科:计算机科学与技术、电子信息技术
  • 应用领域:程序调试
  • 领域:计算机汇编语言

简介

SCA汇编指令SB:

计算 AL - byte of [ES:EDI] , 设置相应的标志寄存器的值;

修改寄存器EDI的值:如果标志DF为0,则 inc EDI;如果DF为1,则 dec EDI。

SCASB指令常与循环指令REPZ/REPNZ合用。例如,REPNZ SCASB 语句表示当 寄存器ECX>0 且 标志寄存器ZF=0,则再执行一次SCASB指令。

比较寄存器AL的值不相等则重复查找的字

ECX 是比较时的最大次数,每扫描一次,ECX减1,当ECX减小到0时,将停止扫描。

所以停止扫描的条件是两个,找到了字符或者已经达到最大次数,未找到字符。

示例代码

mov ecx, 10 ;字符串长度 (如果长度为10)

mov al,0x8b ;要查找的字符

mov edi,ebx ;字符串首地址

Scanloop_1:

repne scasb

jnz Scan_Done ;标志ZF如果为0,表示字符串中没有0x8b这个字符。

命令补充引

repnz指令说明:重复执行其后面的指令,CX或ECX存放最多比较次数,DI或EDI存放查找表首地址,AL或AX或EAX存放想查找的内容。当(CX或ECX)= 0 或 ZF=1 退出重复,否则,(CX或ECX)自减一,执行其后的串指令。CX或ECX为0结束是因为已经查表完毕,没有匹配到;ZF=1说明“比较的结果为0”,也就是查找到一样的内容,说明匹配到想要查找的内容。

SCASB(字节)

SCASW(字)

SCASD(双字)(386及其后继机型可用)

执行的操作:

(AL) - ((destination-index)),(destination-index) ← (destination-index) +或- 1

(AX) - ((destination-index)),(destination-index) ← (destination-index) +或- 2

(EAX) - ((destination-index)),(destination-index) ← (destination-index) +或- 4

指令把AL,AX或EAX的内容与由目的变址寄存器指向的附加段中的一个字节、字或双字进行比较,并不保存结果,只根据结果设置标志位。

相关词条

相关搜索

其它词条