本帖最后由 极限度—魔 于 2012-8-4 13:29 编辑
R
ROL
循环移位指令
格式: ROL OPRD1,COUNT ;不含进位标志位CF在循环中的左循环移位指令.
ROR OPRD1,COUNT ;不含进位示志位CF在循环中的右循环移位指令.
RCL OPRD1,COUNT ;带进位的左循环移位指令.
说明:
1. 本指令组只影响标志CF、OF.OF由移入CF的内容决定,OF取决于移位一次后符号位是否改变,如改变,则OF=1.
2. 由于是循环移位,所以对字节移位8次; 对字移位16次,就可恢复为原操作数.由于带CF的循环移位,可以将CF的内容移入,
所以可以利用它实现多字节的循环.
====================================================================
ROR
循环移位指令
格式:
ROL OPRD1,COUNT ;不含进位标志位CF在循环中的左循环移位指令.
ROR OPRD1,COUNT ;不含进位示志位CF在循环中的右循环移位指令.
RCL OPRD1,COUNT ;带进位的左循环移位指令.
RCR OPRD1,COUNT ;带进位的右循环移位指令.
说明:
1. 本指令组只影响标志CF、OF.OF由移入CF的内容决定,OF取决于移位一次后符号位是否改变,如改变,则OF=1.
2. 由于循环移位,所以对字节移位8次; 对字移位16次,可恢复为原操作数.
====================================================================
RCL
循环移位指令
格式: ROL OPRD1,COUNT ;不含进位标志位CF在循环中的左循环移位指令.
ROR OPRD1,COUNT ;不含进位示志位CF在循环中的右循环移位指令.
RCL OPRD1,COUNT ;带进位的左循环移位指令.
RCR OPRD1,COUNT ;带进位的右循环移位指令.
说明:
1. 本指令组只影响标志CF、OF.OF由移入CF的内容决定,OF取决于移位一次后符号位是否改变,如改变,则OF=1.
2. 由于是循环移位,所以对字节移位8次; 对字移位16次,就可恢复为原操作数.由于带CF的循环移位,可以将CF的内容移入,
所以可以利用它实现多字节的循环.
====================================================================
RCR
循环移位指令
格式: ROL OPRD1,COUNT ;不含进位标志位CF在循环中的左循环移位指令.
ROR OPRD1,COUNT ;不含进位示志位CF在循环中的右循环移位指令.
RCL OPRD1,COUNT ;带进位的左循环移位指令.
说明:
1. 本指令组只影响标志CF、OF.OF由移入CF的内容决定,OF取决于移位一次后符号位是否改变,如改变,则OF=1.
2. 由于是循环移位,所以对字节移位8次; 对字移位16次,就可恢复为原操作数.由于带CF的循环移位,可以将CF的内容移入,所以可以利用它实现多字节的循环.
注意: 以上程序中的指令SHR AL,CL如改为SAR AL,CL,虽然最高4位可移入低4位,但最高位不为0,故应加入一条指令AND AL,0FH.否则,若最高位不为0时,将得到错误结果.
====================================================================
RCR
循环移位指令
格式: ROL OPRD1,COUNT ;不含进位标志位CF在循环中的左循环移位指令.
ROR OPRD1,COUNT ;不含进位示志位CF在循环中的右循环移位指令.
RCL OPRD1,COUNT ;带进位的左循环移位指令.
说明:
1. 本指令组只影响标志CF、OF.OF由移入CF的内容决定,OF取决于移位一次后符号位是否改变,如改变,则OF=1.
2. 由于是循环移位,所以对字节移位8次; 对字移位16次,就可恢复为原操作数.由于带CF的循环移位,可以将CF的内容移入,所以可以利用它实现多字节的循环.
注意: 以上程序中的指令SHR AL,CL如改为SAR AL,CL,虽然最高4位可移入低4位,但最高位不为0,故应加入一条指令AND AL,0FH.否则,若最高位不为0时,将得到错误结果.
====================================================================
RET
返回指令 RET
格式: RET
功能: 当调用的过程结束后实现从过程返回至原调用程序的下一条指令,本指令不影响标志位.
说明:
由于在过程定义时,已指明其近(NEAR)或远(FAR)的属性,所以RET指令根据段内调用与段间调用,执行不同的操作
对段内调用: 返回时,由堆栈弹出一个字的返回地址的段内偏移量至IP.
对段外调用: 返回时,由堆栈弹出的第一个字为返回地址的段内偏移量,将其送入IP中,由堆栈弹出第二个字为返回地址的段基址,将其送入CS中.
====================================================================
REP
重复前缀的说明
格式: REP ;CX<>0 重复执行字符串指令
REPZ/REPE ;CX<>0 且ZF=1重复执行字符串指令
REPNZ/REPNE ;CX<>0 且ZF=0重复执行字符串指令
功能: 在串操作指令前加上重复前缀,可以对字符串进重复处理.由于加上重复前缀后,对应的指令代码是不同的,所以指令的功能便具有重复处理的功能,重复的次数存放在CX寄存器中.
说明:
1. REP与MOVS或STOS串操作指令相结合使用,完成一组字符的传送或建立一组相同数据的字符串.
2. REPZ/REPE常用与CMPS串操作指令结合使用, 可以完成两组字符串的比较.
3. REPZ/REPE常与SCAS指令结合使用,可以完成在一个字符串中搜索一个关键字.
4. REPNZ/REPNE与CMPS指令结合使用,表示当串未结束(CX=1)且当对应串元素不相同(ZF=0)时,继续重复执行串比较指令.
====================================================================
REPZ
重复前缀的说明
格式: REP ;CX<>0 重复执行字符串指令
REPZ/REPE ;CX<>0 且ZF=1重复执行字符串指令
REPNZ/REPNE ;CX<>0 且ZF=0重复执行字符串指令
功能: 在串操作指令前加上重复前缀,可以对字符串进重复处理.由于加上重复前缀后,对应的指令代码是不同的,所以指令的功能便具有重复处理的功能,重复的次数存放在CX寄存器中.
说明:
1. REPZ/REPE常用与CMPS串操作指令结合使用, 可以完成两组字符串的比较.
2. REPZ/REPE常与SCAS指令结合使用,可以完成在一个字符串中搜索一个关键字.
3. REPNZ/REPNE与CMPS指令结合使用,表示当串未结束(CX=1)且当对应串元素不相同(ZF=0)时,继续重复执行串比较指令.
4. REPNZ/REPNE与SCAS指令结合使用,表示串未结束(CX=1)且当关键字与串元素不相同(ZF=0)时,继续重复执行串搜索指令.
====================================================================
REPNZ
重复前缀的说明
格式: REP ;CX<>0 重复执行字符串指令
REPZ/REPE ;CX<>0 且ZF=1重复执行字符串指令
REPNZ/REPNE ;CX<>0 且ZF=0重复执行字符串指令
说明:
1. REPZ/REPE常用与CMPS串操作指令结合使用, 可以完成两组字符串的比较.
2. REPZ/REPE常与SCAS指令结合使用,可以完成在一个字符串中搜索一个关键字.
3. REPNZ/REPNE与CMPS指令结合使用,表示当串未结束(CX=1)且当对应串元素不相同(ZF=0)时,继续重复执行串比较指令.
4. REPNZ/REPNE与SCAS指令结合使用,表示串未结束(CX=1)且当关键字与串元素不相同(ZF=0)时,继续重复执行串搜索指令.
====================================================================
REPNE
重复前缀的说明
格式: REP ;CX<>0 重复执行字符串指令
REPZ/REPE ;CX<>0 且ZF=1重复执行字符串指令
REPNZ/REPNE ;CX<>0 且ZF=0重复执行字符串指令
说明:
1. REPZ/REPE常用与CMPS串操作指令结合使用, 可以完成两组字符串的比较.
2. REPZ/REPE常与SCAS指令结合使用,可以完成在一个字符串中搜索一个关键字.
3. REPNZ/REPNE与CMPS指令结合使用,表示当串未结束(CX=1)且当对应串元素不相同(ZF=0)时,继续重复执行串比较指令.
4. REPNZ/REPNE与SCAS指令结合使用,表示串未结束(CX=1)且当关键字与串元素不相同(ZF=0)时,继续重复执行串搜索指令. |