`
zhaole609
  • 浏览: 342825 次
  • 性别: Icon_minigender_1
  • 来自: 河南
社区版块
存档分类
最新评论

repnz scasb

 
阅读更多

今天在学习Window32汇编语言时,遇到了这样一段:

uMsg ==	WM_CHAR
                        mov	eax,wParam
                        mov	edi,offset szAllowedChar
                        mov	ecx,offset szAllowedChar
                       repnz		scasb

     其中szAllowedChar="0123456789abcdefABCDEF";

    从代码上看是循环判断输入的字符是不是szAllowChar中.但是对repnz    scasb这句是不太懂.查看了Intel汇编手册最后终于明的了:

while (--ecx)

{

    if (*(edi++) == al)

    break;

}

    也就是说如果找到的 edi 与输入的内容相同就直截退出循环,反之会一直核匹配下去.

其作用就是以ecx为时间片,循环扫描edi中是否有与al相同的数据。若有,则返回,没有直到时间片用完返回

分享到:
评论

相关推荐

    汇编题

    #### 题目一:REPNZ SCASB指令的理解与应用 在题目中,给出了以下环境设置:ES=3000H,DI=00FFH,CX=0005H,AL=41H,DF=0。从内存地址300FFH开始的五个字节单元内容分别为44H、43H、42H、41H、40H。接下来,题目...

    哈工程-微机原理与接口技术实验3收集.pdf

    这需要利用到汇编语言中的字符串处理指令,例如REPNZ SCASB,该指令用于循环比较内存中的数据直到找到不相等的元素或者达到指定的计数。 三、程序结构 程序采用了以下结构: 1. 定义数据段,包含提示信息字符串...

    基础汇编程序(4)查找字符串中的指定字符

    本例中使用的是`repnz scasb`,表示重复执行SCASB指令,直到CX寄存器减为0或ZF标志位被置位为止。 - **JZ/JNZ**:这些是条件转移指令。JZ表示如果零标志位ZF被置位(即等于0),则跳转;JNZ则相反。 综上所述,本...

    微机原理实验四字符匹配程.doc

    8. 使用REPNZ SCASB指令开始循环搜索。这个指令会持续执行,直到找到匹配的字符(ZF标志被设置)或者遍历完指定次数(CX计数器变为0)。 9. 如果SCASB指令没有找到匹配的字符(即ZF未被设置),跳转到AA标签,显示...

    微机原理编程练习题

    - 使用 `REPNZ SCASB` 指令逐个比较两个字符串中的元素。 - 使用 `SUB` 指令计算两个字符串之间的距离,并将结果存储在位置变量中。 2. **转换大写字母为小写字母** - 使用 `ADD` 指令将字母 `A` 到 `Z` 转换为...

    东南大学微机原理与接口技术期终考试复习资料汇总.docx

    4. **字符串搜索**:REPNZ SCASB指令用于在字符串中查找字符,如果CX减到0且ZF=0,表示未找到目标字符。 5. **过程返回**:RET 8指令用于FAR过程返回,SP会增加12个字节(2个字节的IP和2个字节的CS),因此选项D是...

    微机原理综合题

    1. REPNZ SCASB指令的执行结果CX=0,ZF=0,表明AL中的内容与比较的目的串各项不相等。 2. 8088CPU由执行部件(Execution Unit,EU)和总线接口部(Bus Interface Unit,BIU)两部分组成。 3. MOV AL,[SI]指令的源...

    大学微机原理及接口技术期终考试复习资料汇总.doc

    4. **REPNZ SCASB**:这个指令用于在字符串中查找字符,当CX不为0且ZF(零标志)为0时,表示未找到目标字符,因为CX在每一轮比较后都会减1,直到CX为0或找到匹配字符。所以选项B正确。 5. **RET指令**:FAR过程的...

    汇编循环程序设计

    2. **查找数组末尾**: 使用`REPNZ SCASB`指令遍历数组,找到最后一个非零元素的位置,然后递减`DI`确保其指向最后一个有效元素。 3. **循环求和**: 使用`ADD AL, ES:[DI]`累加数组元素,并使用`ADC AH, 0`处理可能...

    汇编语言试卷与答案.doc

    使用`REPNZ SCASB`指令序列可以比较`DI`指向的内存与`AL`,如果不同则跳转到`K1`,然后移动`DI`到`ADR`。正确的指令序列是D选项。 4. `SUB AL, BL`指令进行减法操作,`DAS`是调整算术操作的指令,它会影响`AX`...

    汇编语言程序设计试卷及答案AB卷.docx

    13. **REPNZ SCASB指令**:循环不零扫描字节指令,用于比较内存中的数据。在此例中,它会遍历内存,直到找到不匹配的字节或CX变为0。 14. **段组织和偏移地址**:在数据段定义中,每个数据项都有一个偏移地址,例如...

    8088 汇编速查手册

    例如:`REPNZ SCASB` 当ZF标志为0且CX寄存器不为0时重复执行SCASB指令。 **REPE/REPZ**: 当ZF标志为1时重复执行指令。例如:`REPE LODSB` 当ZF标志为1且CX寄存器不为0时重复执行LODSB指令。 **REPNE/REPNZ**: 当ZF...

    repnz指令大全

    ### REPNZ 指令详解 #### 一、概述 REPNE/REPNZ指令是汇编语言中用于控制重复操作的重要指令之一,主要用于SCAS(串扫描)和CMPS(串比较)指令中实现重复执行功能。这些指令通常与CX寄存器中的值结合使用来确定...

    8086指令系统3

    SCAS指令用于搜索存储器中的串,格式为`SCAS dest`,具体有`SCASB`(字节搜索)和`SCASW`(字搜索)。它会将AX或AL中的数据与ES:DI指向的字或字节进行比较,然后根据比较结果设置标志位,但不保存结果。DI的偏移量...

    微机原理及接口PPT学习教案.pptx

    这些串操作指令还可以与重复前缀`REP`、`REPE/REPZ`和`REPNE/REPNZ`结合使用,根据CX寄存器的计数值重复执行串操作,直到CX变为0或特定条件满足为止。`CLD`和`STD`指令分别设置和清除DF,决定了地址指针是递增还是...

    利用串搜索指令SCAS是你的内存搜索程序变得“贼快”

    1. **SCASB**:比较AL寄存器与(DI)处的字节,并将DI递增1。 2. **SCASW**:比较AX寄存器与(DI)处的字,并将DI递增2。 3. **SCASD**:比较EAX寄存器与(DI)处的双字,并将DI递增4。 这些指令的核心工作原理是,首先将...

    8086指令集(全部的)

    - **REP / REPE / REPZ / REPNE / REPNZ**: 重复执行前一条指令直到条件满足。 - 例如:`REPE SCASB` 重复执行SCASB直到找到不同的字节。 以上就是8086处理器指令集的详细说明,这些指令是理解和编写汇编语言程序...

    汇编语言程序设计试题.docx

    正确的指令序列是REPNZ SCASBJNZ K1,找到第一个不同值后,将DI的值保存到ADR。 20. TEST VAR, 55H指令进行按位与操作,如果结果全为0则跳转到ZER0。JE ZER0表示如果零标志被设置则跳转到ZER0。 这些知识点涵盖了...

Global site tag (gtag.js) - Google Analytics