12
返回列表 发新帖
楼主: 极限度—魔
收起左侧

[评测] OD 汇编指令 【更新完毕,重新排版】

[复制链接]
金鱼先生
发表于 2012-8-3 17:30:13 | 显示全部楼层
支持下,建议1L弄点常用的,像nop、mov、call、push之类的,其他的下面罗列
Savoor
发表于 2012-8-3 21:39:13 | 显示全部楼层
好东西啊,正在找相关的资料学习中
极限度—魔
 楼主| 发表于 2012-8-4 13:28:12 | 显示全部楼层
本帖最后由 极限度—魔 于 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)时,继续重复执行串搜索指令.
极限度—魔
 楼主| 发表于 2012-8-4 13:37:10 | 显示全部楼层
S



SAHF

标志传送指令 SAHF

格式: SAHF

功能: 将AH存至FLAG低8位

说明: 本指令将用AH的内容改写FLAG标志寄存器中的SF、ZF、AF、PF、和CF标志,从而改变原来的标志位.


====================================================================
SUB

减法指令SUB(SUBtract)

格式: SUB OPRD1,OPRD2

功能: 两个操作数的相减,即从OPRD1中减去OPRD2,其结果放在OPDR1中.

说明:

示例  SUB DX,CX
      SUB [BX+25],AX
      SUB DI,ALFA[SI]
      SUB CL,20
      SUB DATA1[DI][BX],20A5H


====================================================================
SBB

带借位减去指令 SBB(SuBtraction with Borrow)

格式: SBB OPRD1,OPRD2

功能: 是进行两个操作数的相减再减去CF进位标志位,即从OPRD1<--OPRD1-OPRD2-CF,其结果放在OPDR1中.

说明:

示例  SBB DX,CX
      SBB AX,DATA1  
      SBB BX,2000H
      SBB ALFA[BX+SI],SI
      SBB BETAP[DI,030AH

====================================================================
SHL

逻辑左移指令 SHL(Shift logical left)

格式: SHL OPRD1,COUNT

功能: 对给定的目的操作数左移COUNT次,每次移位时最高位移入标志位CF中,最低位补零.

说明:

1. 其中OPRD1为目的操作数,可以是通用寄存器或存储器操作数.

2. COUNT代表移位的次数(或位数).移位一次,COUNT=1;移位多于1次时,COUNT=(CL),(CL)中为移位的次数.

3. 例如: SHL AL,1
         SHL CX,1  
         SHL ALFA[DI] 或者:
         MOV CL,3
         SHL DX,CL
         SHL ALFA[DI],CL

====================================================================
SHR

逻辑右移指令 SHR

格式: SHR OPRD1,COUNT

功能: 本指令实现由COUNT决定次数的逻辑右移操作,每次移位时,最高位补0,最低位移至标志位CF中.

说明:

1. 其中OPRD1为目的操作数,可以是通用寄存器或存储器操作数.

2. COUNT代表移位的次数(或位数).移位一次,COUNT=1;移位多于1次时,COUNT=(CL),(CL)中为移位的次数.

3. 影响标志位OF,PF,SF,ZF,CF.


====================================================================
SAL

算术左移指令 SAL(Shift Arithmetic Left)

格式: SAL OPRD1,COUNT

功能: 其中OPRD1,COUNT与指令SHL相同.本指令与SHL的功能也完全相同,这是因为逻辑左移指令与算术左移指令所要完成的操作是一样的.

说明:

1. 其中OPRD1为目的操作数,可以是通用寄存器或存储器操作数.

2. COUNT代表移位的次数(或位数).移位一次,COUNT=1;移位多于1次时,COUNT=(CL),(CL)中为移位的次数.


====================================================================
SAR

算术右移指令 SAR

格式: SAR OPRD1,COUNT

功能: 本指令通常用于对带符号数减半的运算中,因而在每次右移时,保持最高位(符号位)不变,最低位右移至CF中.

说明:

1. 其中OPRD1为目的操作数,可以是通用寄存器或存储器操作数.

2. COUNT代表移位的次数(或位数).移位一次,COUNT=1;移位多于1次时,COUNT=(CL),(CL)中为移位的次数.


====================================================================
SCAS

字符串搜索指令 SCAS

格式: SCAS OPRD
      SCASB
      SCASW

功能: 把AL(字节串)或AX(字串)的内容与由DI寄存器寻址的目的串中的数据相减,结果置标志位,但不改变任一操作数本身.

      地址指针DI自动调整.

说明:

1. 其中OPRD为目的串符号地址.

2. 本指令影响标志AF、CF、OF、PF、SF、ZF.该指令可查找字符串中的一个关键字,只需在本指令执行前,

   把关键字放在AL(字节)或AX(字串 )中,用重复前缀可在整串中查找.
     
   指令中不使用操作数时,可用指令格式SCASB,SCASW,分别表示字节串或字串搜索指令.


====================================================================
SCASB

字符串搜索指令 SCAS

格式: SCAS OPRD
      SCASB
      SCASW

功能: 把AL(字节串)或AX(字串)的内容与由DI寄存器寻址的目的串中的数据相减,结果置标志位,但不改变任一操作数本身.

      地址指针DI自动调整.

说明:

1. 其中OPRD为目的串符号地址.

2. 本指令影响标志AF、CF、OF、PF、SF、ZF.该指令可查找字符串中的一个关键字,只需在本指令执行前,

   把关键字放在AL(字节)或AX(字串 )中,用重复前缀可在整串中查找.
     
   指令中不使用操作数时,可用指令格式SCASB,SCASW,分别表示字节串或字串搜索指令.


====================================================================
SCASW

字符串搜索指令 SCAS

格式: SCAS OPRD
      SCASB
      SCASW

功能: 把AL(字节串)或AX(字串)的内容与由DI寄存器寻址的目的串中的数据相减,结果置标志位,但不改变任一操作数本身.

      地址指针DI自动调整.

说明:

1. 其中OPRD为目的串符号地址.

2. 本指令影响标志AF、CF、OF、PF、SF、ZF.该指令可查找字符串中的一个关键字,只需在本指令执行前,

   把关键字放在AL(字节)或AX(字串 )中,用重复前缀可在整串中查找.
     
   指令中不使用操作数时,可用指令格式SCASB,SCASW,分别表示字节串或字串搜索指令.

====================================================================
STOS

字符串存储指令 STOS

格式: STOS OPRD

功能: 把AL(字节)或AX(字)中的数据存储到DI为目的串地址指针所寻址的存储器单元中去.指针DI将根据DF的值进行自动调整.

说明:

1. 其中OPRD为目的串符号地址.

2. 本指令不影响标志位.当不使用操作数时,可用STOSB或STOSW分别表示字节串或字串的操作.


====================================================================
STC

处理器控制指令-标志位操作指令

格式:
     CLC   ;置CF=0
     STC   ;置CF=1
     CMC   ;置CF=(Not CF)进位标志求反
     CLD   ;置DF=0
     STD   ;置DF=1
     CLI   ;置IF=0,CPU禁止响应外部中断
     STI   ;置IF=1,使CPU允许向应外部中断

功能: 完成对标志位的置位、复位等操作.

说明: 例如串操作中的程序,经常用CLD指令清方向标志使DF=0,在串操作指令执行时,按增量的方式修改吕指针.


====================================================================
STD

处理器控制指令-标志位操作指令

格式:
     CLC   ;置CF=0
     STC   ;置CF=1
     CMC   ;置CF=(Not CF)进位标志求反
     CLD   ;置DF=0

说明: 例如串操作中的程序,经常用CLD指令清方向标志使DF=0,在串操作指令执行时,按增量的方式修改吕指针.


====================================================================
STI

处理器控制指令-标志位操作指令

格式:
     CLC   ;置CF=0
     STC   ;置CF=1
     CMC   ;置CF=(Not CF)进位标志求反
     CLD   ;置DF=0
     STD   ;置DF=1
     CLI   ;置IF=0,CPU禁止响应外部中断
     STI   ;置IF=1,使CPU允许向应外部中断

功能: 完成对标志位的置位、复位等操作.

说明: 例如串操作中的程序,经常用CLD指令清方向标志使DF=0,在串操作指令执行时,按增量的方式修改吕指针.
极限度—魔
 楼主| 发表于 2012-8-4 13:38:15 | 显示全部楼层
T



TEST

测试指令 TEST

格式: TEST OPRD1,OPRD2

功能: 其中OPRD1、OPRD2的含义同AND指令一样,也是对两个操作数进行按位的'与'运算,唯一不同之处是不将'与'的结


说明: TEST与AND指令的关系,有点类似于CMP与SUB指令之间的关系.
极限度—魔
 楼主| 发表于 2012-8-4 13:40:05 | 显示全部楼层
W



WAIT

处理器等待指令 WAIT

格式: WAIT

功能: 本指令将使处理器检测TEST端脚,当TEST有效时,则退出等待状态执行下条指令,否则处理器处于等待状态,直到TEST有效.

说明: 本指令不影响标志位.
极限度—魔
 楼主| 发表于 2012-8-4 13:41:59 | 显示全部楼层
X



XCHG

数据交换指令 XCHG

格式: XCHG OPRD1,OPRD2 其中的OPRD1为目的操作数,OPRD2为源操作数

功能: 将两个操作数相互交换位置,该指令把源操作数OPRD2与目的操数OPRD1交换.

说明:

1. OPRD1及OPRD2可为通用寄存器或存储器,但是两个存储器之间是不能用XCHG指令实现的.

2. 段寄存器内容不能用XCHG指令来交换.

3. 若要实现两个存储器操作数DATA1及DATA2的交换,可用以下指令实现:
   示例: PUSH DATA1
         PUSH DATA2
         POP DATA1
         POP DATA2
      
4. 本指令不影响状态标志位.


===================================================================
XLAT

查表指令 XLAT

格式: XLAT TABLE其中TABLE为一待查表格的首地址.

功能: 把待查表格的一个字节内容送到AL累加器中.

说明:

1. 在执行该指令前,应将TABLE先送至BX寄存器中,然后将待查字节与在表格中距表首地址位移量送AL,即 (AL)<--((BX)+(AL)).

2. 本指令不影响状态标位,表格长度不超过256字节.

===================================================================
XOR

逻辑异或运算指令 XOR

格式: XOR OPRD1,OPRD2

功能: 实现两个操作数按位‘异或’运算,结果送至目的操作数中.
  
      OPRD1<--OPRD1 XOR OPRD2

说明:

1. 其在OPRD1、OPRD2的含义与AND指令相同,对标志位的影响与与AND指令相同.

2. 相异为真,相同为假.
ForeverX
发表于 2012-8-5 14:49:33 | 显示全部楼层
不错,收藏了
storm66
发表于 2012-9-7 17:57:59 | 显示全部楼层
好详细啊 正在学习OD中
modi5156
发表于 2012-9-8 22:34:12 | 显示全部楼层
兔斯基顶.gif

很实用的教程帖子
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2025-1-26 16:41 , Processed in 0.106531 second(s), 16 queries .

卡饭网所发布的一切软件、样本、工具、文章等仅限用于学习和研究,不得将上述内容用于商业或者其他非法用途,否则产生的一切后果自负,本站信息来自网络,版权争议问题与本站无关,您必须在下载后的24小时之内从您的电脑中彻底删除上述信息,如有问题请通过邮件与我们联系。

快速回复 客服 返回顶部 返回列表