汇编指令(转)

一、数据传输指令
  它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据.
  1. 通用数据传送指令.
    MOV  传送字或字节.
    MOVSX 先符号扩展,再传送.
    MOVZX 先零扩展,再传送.
    PUSH  把字压入堆栈.
    POP  把字弹出堆栈.
    PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈.
    POPA  把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈.
    PUSHAD 把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈.
    POPAD 把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈.
    BSWAP 交换32位寄存器里字节的顺序
    XCHG  交换字或字节.( 至少有一个操作数为寄存器,段寄存器不可作为操作数)
    CMPXCHG 比较并交换操作数.( 第二个操作数必须为累加器AL/AX/EAX )
    XADD  先交换再累加.( 结果在第一个操作数里 )
    XLAT  字节查表转换.
        ── BX 指向一张 256 字节的表的起点, AL 为表的索引值 (0-255,即
        0-FFH); 返回 AL 为查表结果. ( [BX+AL]->AL )
  2. 输入输出端口传送指令.
    IN   I/O端口输入. ( 语法: IN 累加器, {端口号│DX} )
    OUT  I/O端口输出. ( 语法: OUT {端口号│DX},累加器 )
     输入输出端口由立即方式指定时, 其范围是 0-255; 由寄存器 DX 指定时,
     其范围是 0-65535.
  3. 目的地址传送指令.
    LEA  装入有效地址.
     例: LEA DX,string ;把偏移地址存到DX.
    LDS  传送目标指针,把指针内容装入DS.
     例: LDS SI,string ;把段地址:偏移地址存到DS:SI.
    LES  传送目标指针,把指针内容装入ES.
     例: LES DI,string ;把段地址:偏移地址存到ES:DI.
    LFS  传送目标指针,把指针内容装入FS.
     例: LFS DI,string ;把段地址:偏移地址存到FS:DI.
    LGS  传送目标指针,把指针内容装入GS.
     例: LGS DI,string ;把段地址:偏移地址存到GS:DI.
    LSS  传送目标指针,把指针内容装入SS.
     例: LSS DI,string ;把段地址:偏移地址存到SS:DI.
  4. 标志传送指令.
    LAHF  标志寄存器传送,把标志装入AH.
    SAHF  标志寄存器传送,把AH内容装入标志寄存器.
    PUSHF 标志入栈.
    POPF  标志出栈.
    PUSHD 32位标志入栈.
    POPD  32位标志出栈.

二、算术运算指令

    ADD  加法.
    ADC  带进位加法.
    INC  加 1.
    AAA  加法的ASCII码调整.
    DAA  加法的十进制调整.
    SUB  减法.
    SBB  带借位减法.
    DEC  减 1.
    NEC  求反(以 0 减之).
    CMP  比较.(两操作数作减法,仅修改标志位,不回送结果).
    AAS  减法的ASCII码调整.
    DAS  减法的十进制调整.
    MUL  无符号乘法.
    IMUL  整数乘法.
     以上两条,结果回送AH和AL(字节运算),或DX和AX(字运算),
    AAM  乘法的ASCII码调整.
    DIV  无符号除法.
    IDIV  整数除法.
     以上两条,结果回送:
       商回送AL,余数回送AH, (字节运算);
     或 商回送AX,余数回送DX, (字运算).
    AAD  除法的ASCII码调整.
    CBW  字节转换为字. (把AL中字节的符号扩展到AH中去)
    CWD  字转换为双字. (把AX中的字的符号扩展到DX中去)
    CWDE  字转换为双字. (把AX中的字符号扩展到EAX中去)
    CDQ  双字扩展.  (把EAX中的字的符号扩展到EDX中去)

三、逻辑运算指令

   AND  与运算.
    OR   或运算.
    XOR  异或运算.
    NOT  取反.
    TEST  测试.(两操作数作与运算,仅修改标志位,不回送结果).
    SHL  逻辑左移.
    SAL  算术左移.(=SHL)
    SHR  逻辑右移.
    SAR  算术右移.(=SHR)
    ROL  循环左移.
    ROR  循环右移.
    RCL  通过进位的循环左移.
    RCR  通过进位的循环右移.
     以上八种移位指令,其移位次数可达255次.
       移位一次时, 可直接用操作码. 如 SHL AX,1.
       移位>1次时, 则由寄存器CL给出移位次数.
        如 MOV CL,04
          SHL AX,CL

四、串指令

 DS:SI 源串段寄存器 :源串变址.
      ES:DI 目标串段寄存器:目标串变址.
      CX   重复次数计数器.
      AL/AX 扫描值.
      D标志 0表示重复操作中SI和DI应自动增量; 1表示应自动减量.
      Z标志 用来控制扫描或比较操作的结束.
    MOVS  串传送.
      ( MOVSB 传送字符.  MOVSW 传送字.  MOVSD 传送双字. )
    CMPS  串比较.
      ( CMPSB 比较字符.  CMPSW 比较字. )
    SCAS  串扫描.
      把AL或AX的内容与目标串作比较,比较结果反映在标志位.
    LODS  装入串.
      把源串中的元素(字或字节)逐一装入AL或AX中.
      ( LODSB 传送字符.  LODSW 传送字.  LODSD 传送双字. )
    STOS  保存串.
      是LODS的逆过程.
    REP      当CX/ECX<>0时重复.
    REPE/REPZ   当ZF=1或比较结果相等,且CX/ECX<>0时重复.
    REPNE/REPNZ  当ZF=0或比较结果不相等,且CX/ECX<>0时重复.
    REPC     当CF=1且CX/ECX<>0时重复.
    REPNC     当CF=0且CX/ECX<>0时重复.

五、程序转移指令

   1>无条件转移指令 (长转移)
    JMP  无条件转移指令
    CALL  过程调用
    RET/RETF过程返回.
  2>条件转移指令 (短转移,-128到+127的距离内)
    ( 当且仅当(SF XOR OF)=1时,OP1<OP2 )
    JA/JNBE 不小于或不等于时转移.
    JAE/JNB 大于或等于转移.
    JB/JNAE 小于转移.
    JBE/JNA 小于或等于转移.
     以上四条,测试无符号整数运算的结果(标志C和Z).
    JG/JNLE 大于转移.
    JGE/JNL 大于或等于转移.
    JL/JNGE 小于转移.
    JLE/JNG 小于或等于转移.
     以上四条,测试带符号整数运算的结果(标志S,O和Z).
    JE/JZ 等于转移.
    JNE/JNZ 不等于时转移.
    JC   有进位时转移.
    JNC  无进位时转移.
    JNO  不溢出时转移.
    JNP/JPO 奇偶性为奇数时转移.
    JNS  符号位为 "0" 时转移.
    JO   溢出转移.
    JP/JPE 奇偶性为偶数时转移.
    JS   符号位为 "1" 时转移.
  3>循环控制指令(短转移)
    LOOP      CX不为零时循环.
    LOOPE/LOOPZ  CX不为零且标志Z=1时循环.
    LOOPNE/LOOPNZ CX不为零且标志Z=0时循环.
    JCXZ      CX为零时转移.
    JECXZ     ECX为零时转移.
  4>中断指令
    INT  中断指令
    INTO  溢出中断
    IRET  中断返回
  5>处理器控制指令
    HLT  处理器暂停, 直到出现中断或复位信号才继续.
    WAIT  当芯片引线TEST为高电平时使CPU进入等待状态.
    ESC  转换到外处理器.
    LOCK  封锁总线.
    NOP  空操作.
    STC  置进位标志位.
    CLC  清进位标志位.
    CMC  进位标志取反.
    STD  置方向标志位.
    CLD  清方向标志位.
    STI  置中断允许位.
    CLI  清中断允许位.

六、伪指令
        DW   定义字(2字节).
    PROC  定义过程.
    ENDP  过程结束.
    SEGMENT 定义段.
    ASSUME 建立段寄存器寻址.
    ENDS  段结束.
    END  程序结束.



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=795737


cmpa,b //比较a与b
mova,b //把b值送给a值,使a=b
ret//返回主程序
nop//无作用,英文(no operation)简写,意思"do nothing"(机器码90)
 (ultraedit打开编辑exe文件看到90相当汇编语句的nop)
call //调用子程序,子程序以ret结尾
je或jz //相等则跳(机器码是74或84)
jne或jnz //不相等则跳(机器码是75或85)
jmp//无条件跳(机器码是EB)
jb //若小于则跳
ja //若大于则跳
jg //若大于则跳
jge//若大于等于则跳
jl //若小于则跳
pop xxx//xxx出栈
push xxx //xxx压栈


 爆破无敌口诀

 一条(跳)就死,九筒(90)就胡
 (对应上面的2--修改为nop)
 一条(跳)就胡,一饼(EB)伺候
 (对应上面的1--修改为jmp)
 (74) 变(75)
 (84) 变 (85)

转载于:https://www.cnblogs.com/ZhouXiHong/archive/2006/06/23/433761.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/380552.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracle10g 克隆安装,克隆Oracle Home(10g2)

克隆一个已经存在的Oracle Home&#xff0c;免掉新安装oracle10g软件的痛苦&#xff0c;如果原Oracle Home已经安装了patch就省得打patch了。一、在目标主机172.19.111.37上做安装前准备工作1、增加组和用户(和克隆主机的目录结构一样)# groupadd oinstall# groupadd dba# user…

取地址符和解引用符的区别_(&)和解引用(*)运算符的地址以及C中的指针...

取地址符和解引用符的区别Here, we are discussing about the two most useful operators with the pointers, why and how they are used? 在这里&#xff0c;我们用指针讨论两个最有用的运算符 &#xff0c;为什么以及如何使用它们&#xff1f; 1)运营商地址(&#xff06;)…

汇编offset

功能&#xff1a; 取标号的偏移地址 assume cs:codesg codeseg segmentstart:mov ax,offset starts: mov ax,offset s codeseg ends end startmov ax,offset start 相当于mov ax,0&#xff0c;因为start是代码段中的标号&#xff0c;他所标记的指令是代码中的第一条指令&#…

細微之處看看mysql與sql server的一些差別

以前不怎麼使用mysql&#xff0c;最近有些事情&#xff0c;需要用到php和mysql。目前使用的版本是5.5.1 發現mysql與sql server有很多不同。可能逐漸地會整理一些文檔出來給大家參考。 今天第一篇說說&#xff0c;update操作的差異。在mysql中&#xff0c;如果update語句要設置…

php商品状态精品 热销,ecshop商品列表,商品详细页,热销,精品,搜索列表页调用商品销售量(已销售数量)...

ecshop各个页面调用商品销售量方法(原创可用)ECSHOP模板首页的推荐商品包括热销推荐和促销三个文件只对热销商品为例第一步&#xff1a;打开根目录/includes/lib_goods.php文件。在文件末尾添加方法function selled_count($goods_id){$sql "select sum(goods_number) as c…

c ++ stl_通过分配另一个列表的所有元素来创建列表| C ++ STL

c stlThere are two methods to implement it... 有两种方法可以实现它... 1 ) by assigning the existing list direct to the new list 1)通过直接将现有列表分配给新列表 list<int> list2 list1;2 ) by using list::assign() function 2)通过使用list :: assign(…

引用参数

• 默认情况下CLR规定所有方法的参数都按值传递的 • 参数类型分为:值类型参数和引用类型参数 • 参数传递方式:传值方式和传址方式 • Ref和Out的共同:传址传递 • Ref和Out的异同:ref修饰的参数必须在传递前对参数进行初始化;out反之,且必须在参数返回前进行初始化赋值 •在值…

jmp指令

功能&#xff1a; 无条件转移指令 jmp指令要给出两种信息&#xff1a; 转移的目标地址转移的距离&#xff08;段间转移、段内短转移、段内近转移&#xff09; 段内短转移&#xff1a; jmp short 标号&#xff09; assume cs:code code segmentstart:mov ax,0jmp short sad…

基于NIOS II的液晶显示设计——自定义图形库

基于NIOS II的液晶显示设计——自定义图形库 下面是我写的简单图形库 // graphics.h / #ifndef GRAPHICS_H_#define GRAPHICS_H_ #include"IO.h"#include"system.h"#include"alt_types.h"//定义SRAM缓存的基地址 #define SRAM_BASE LC…

在ASP.net中包含一个js文件

<script language"javascript" src"../../../Js/funBasic.js" type"text/javascript"></script><script language"javascript"><!--#INCLUDE VIRTUAL"*.js"--> </script>转载于:https://www.…

n个节点的二叉树n+1_使用C ++程序删除链接列表的M个节点后的N个节点

n个节点的二叉树n1Problem statement: 问题陈述&#xff1a; Given a Linked List, we have to delete N numbers of nodes after the M numbers of nodes. 给定一个链表&#xff0c;我们必须在M个节点之后删除N个节点。 Example: 例&#xff1a; Input: 1 → 2 → 3 → 4 →…

EAX、EBX、ECX、EDX

前面学习了8086的基本知识&#xff0c;今天正式开始学习win32平台的汇编 EAX&#xff1a;累加寄存器 32位&#xff0c;功能和8086中ax相同 mov eax,dword ptr [ebp-4] add eax,1 mov dword ptr [ebp-4],eaxEBX&#xff1a;基址寄存器 32位&#xff0c;功能和8086中bx相同 mov…

aspnet_Membership_GetUserByEmail////aspnet_Membership_GetUserByName

ALTERPROCEDUREdbo.aspnet_Membership_GetUserByEmail --通过邮箱获取用户名ApplicationNameNVARCHAR(256), EmailNVARCHAR(256)ASBEGINIF( EmailISNULL) SELECTu.UserName FROMdbo.aspnet_Applications a, dbo.aspnet_Users u, dbo.aspnet_Membership m …

php delete和truncate,TRUNCATE 删除表,无法回退。默认选择为整个表的内容,所以不能加条件。...

TRUNCATE 删除表&#xff0c;无法回退。默认选择为整个表的内容&#xff0c;所以不能加条件。DELETE 删除表&#xff0c;可以回退。可以带where 条件。建议使用delete。但是TRUNCATE 删除表数据比delete要快。使用TRUNCATE TABLE语句TRUNCATE TABLE语句提供了一种删除表中所有记…

【转】在Excel中如何输入平方米符号,输入立方米符号?

按住Alt键&#xff0c;在小键盘上输入178&#xff0c;然后放开Alt健&#xff0c;可以得到平方符号。 按住Alt键&#xff0c;在小键盘上输入179&#xff0c;然后放开Alt健&#xff0c;可以得到立方符号。转载于:https://www.cnblogs.com/temptation/archive/2011/04/25/2028587.…

dates.format_在SQL中使用DATES及其不同的内置函数NOW(),FORMAT()

dates.formatBasically, when we are working with dates, we need to be sure that the format of the date, we are trying to insert in the database is in format, and matches the format of the date column in the database. 基本上&#xff0c;当我们使用日期时&#…

砂.随笔.三

刚在整理电脑中的照片,把朋友们的照片都整进了"众生相",当点到他的照片时,迟疑了,没拉进去当剪切粘贴时,不知出了什么故障,"铛"地一声,"众生相"成了一空文件夹我不是一个容易觉得可惜的人,只是居然不禁窃喜适才没将他的照片放进去敲了敲脑袋,按住…

标志寄存器EFLAGES

EFLAGES是32位&#xff0c;对我们比较有用的是低16位 OF&#xff1a;溢出标志。溢出为1&#xff0c;否则为1DF&#xff1a;方向标志。串处理指令的方向IF&#xff1a;中断标志AF&#xff1a;辅助进位标志。进位时为1&#xff0c;否则为0ZF&#xff1a;零标志。运算结果为0时为1…

去除对象中的类型集合

一般来说&#xff0c;当某一个对象有多个集合类型的子元素时&#xff0c;我们都会给每个子元素创建一个集合对象来承载子元素&#xff0c;类似于&#xff1a; publicclassProcess {publicvar isExecutable:Boolean;publicvar refLaneSet:LaneSet;publicvar startEventList:Arra…

服务器安装centos6 linux,CentOS6.5安装详细教程,手把手教你安装Linux操作系统(CentOS6.5)...

CentOS6.5安装详细教程1、准备好CentOS-6.5.iso文件&#xff0c;并刻录到光盘中&#xff0c;放入光驱&#xff0c;重启服务器&#xff0c;修改BIOS为光驱启动&#xff0c;之后开始进入安装&#xff1a;2、按任意键&#xff0c;进入引导菜单。按上下键&#xff0c;移动光标&…