有些循环指令在循环条件中还加上了对ZF标志的判断 忐位影响:所有转移指令和循环指令都不会影响任何的标志位(虽然 们有时会对标志位的当前取值进行判断 (1)L0OP指令 格式:LOOP目标地址 执行步骤: 1)CX<=(CX)-1 2)如果(CⅩX)≠0,转移到目标地址,否则停止循环,顺序执行下一条 使用前提:在使用LOOP指令控制循环以前(进入程序的循环体以前) 必须把循环次数保存到CX。 2) LOOPZ/ LOOPE指令 格式: LOOPZ/ LOOPE目标地址
有些循环指令在循环条件中还加上了对ZF标志的判断。 标志位影响:所有转移指令和循环指令都不会影响任何的标志位(虽然 它们有时会对标志位的当前取值进行判断) (1)LOOP指令 格式:LOOP目标地址 执行步骤: 1)CX<=(CX)-1 2)如果(CX)≠0,转移到目标地址,否则停止循环,顺序执行下一条 指令 使用前提:在使用LOOP指令控制循环以前(进入程序的循环体以前), 必须把循环次数保存到CX。 (2)LOOPZ / LOOPE指令 格式:LOOPZ / LOOPE目标地址
执行步 )CX<=(CX=1 2)如果(CX≠ OANDZE=1,则转移到目标地址,否则停正循环,顺序 执行下一条指 (3) LOOPNE/ LOOPNZ指令 式: LOOPNE/ LOOPNZ目标地址 执行步骤 斗CX<=(CX)-1 2)如果(CⅩ)≠0 ANDZE=0,则转移到目标地址,否则停止循环,顺序 执行下一条指令 (4)JCXZ指令在循环程序中的作用 进入循环体之前,首先使用JCXZ指令判断(CX)是否为0,如果为0就跳 转到循环体结束的位置,以免执行错误的循环过程
执行步骤: 1)CX<=(CX)-1 2)如果(CX)≠0ANDZF=1,则转移到目标地址,否则停止循环,顺序 执行下一条指令。 (3)LOOPNE / LOOPNZ指令 格式:LOOPNE / LOOPNZ目标地址 执行步骤: 1)CX<=(CX)-1 2)如果(CX)≠0ANDZF=0,则转移到目标地址,否则停止循环,顺序 执行下一条指令。 (4)JCXZ指令在循环程序中的作用 进入循环体之前,首先使用JCXZ指令判断(CX)是否为0,如果为0就跳 转到循环体结束的位置,以免执行错误的循环过程
第3节串操作与重复前缓指令 1,操作指令 操作指念县有 些共同自 引源串必须在当前数据段DS甲,目的串必须在附加数据段ES中,DS 和ES可以重叠 b,源串的偏移首地址必须在S中,目的串的偏移首地址必须在D中。 所有串操作指令均以寄存器间接寻址方式访问操作数 C.每执行一条串操作指令只能完成串中一个字或一个字节的操作 同时自动修改SI和D的内容,以指向串中下一个元素 d.标志位DF决定串操作的方向,是按增量还是按减量 若 DF=0,则按增 节操作时 字操作时加2;若DF=I,则 按减量修改,字节操作时减1,字操作时减2 面依次介绍MOVS、LODS、STOS、CMPS、SCAS等串操作指令 MOVS、LODS、STOS三类指令不影响标志位,CMPS、SCAS两类指 影响标志位
第3节 串操作与重复前缀指令 1.串操作指令 (1)各种串操作指令具有一些共同的特征: a.源串必须在当前数据段DS中,目的串必须在附加数据段ES中,DS 和ES可以重叠。 b.源串的偏移首地址必须在SI中,目的串的偏移首地址必须在DI中。 所有串操作指令均以寄存器间接寻址方式访问操作数。 c.每执行一条串操作指令只能完成串中一个字或一个字节的操作, 同时自动修改SI和DI的内容,以指向串中下一个元素。 d.标志位DF决定串操作的方向,是按增量还是按减量修改。若 DF=0,则按增量修改,字节操作时加1,字操作时加2;若DF=I,则 按减量修改,字节操作时减1,字操作时减2。 下面依次介绍MOVS、LODS、STOS、CMPS、SCAS等串操作指令。 MOVS、LODS、STOS三类指令不影响标志位,CMPS、SCAS两类指令 影响标志位