登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

流浪的梦想

电子电路 PHP网页编程 电脑常识

 
 
 

日志

 
 
关于我

钱可以买房子但买不到家,可以买婚姻但买不到爱情,可以买钟表但买不到时间,钱不是一切,反而是痛苦的根源。把你的钱给我,让我一个人承担痛苦吧 ##~~~年轻,就在自由的路上……爱情已欠费,缘分不在服务区~~~~~

汇编指令大全 英文全称  

2008-11-07 23:23:23|  分类: 电脑常识 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

 

一、数据传输指令

─────────────────────────

    它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据.

    1. 通用数据传送指令.

        MOV ----> move   传送字或字节.

        MOVSX ——>extended move with sign data先符号扩展,再传送.

        MOVZX --->extended move with zero data,先零扩展,再传送.

        PUSH    把字压入堆栈.

        POP    把字弹出堆栈.

        PUSHA ---->push all,把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈.

        POPA   ---->pop all ,把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈.

        PUSHAD ---->push all data,把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈.

        POPAD ---->pop all data,把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈.

        BSWAP ----> byte swap,交换32位寄存器里字节的顺序

        XCHG  ---->exchange ,交换字或字节.( 至少有一个操作数为寄存器,段寄存器不可作为操作数)

        CMPXCHG---->exchange and add  比较并交换操作数.( 第二个操作数必须为累加器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   ---->load effective address, 装入有效地址.

          例: LEA DX,string ;把偏移地址存到DX.

        LDS  ---->load DS  传送目标指针,把指针内容装入DS.

          例: LDS SI,string ;把段地址:偏移地址存到DS:SI.

        LES ---->load ES   传送目标指针,把指针内容装入ES.

          例: LES DI,string ;把段地址:偏移地址存到ES:DI.

        LFS ---->load FS   传送目标指针,把指针内容装入FS.

          例: LFS DI,string ;把段地址:偏移地址存到FS:DI.

        LGS   ---->load GS 传送目标指针,把指针内容装入GS.

          例: LGS DI,string ;把段地址:偏移地址存到GS:DI.

        LSS  ---->load SS  传送目标指针,把指针内容装入SS.

          例: LSS DI,string ;把段地址:偏移地址存到SS:DI.

    4. 标志传送指令.

        LAHF ---->load AH from flag   标志寄存器传送,把标志装入AH.

        SAHF ---->save AH to flag   标志寄存器传送,把AH内容装入标志寄存器.

        PUSHF ---->push flag 标志入栈.

        POPF   ---->pop flag 标志出栈.

        PUSHD ---->push dflag  , 32位标志入栈.

        POPD   pop dflag, 32位标志出栈.

二、算术运算指令

─────────────────────────

        ADD    加法.

        ADC ---->add with carry;  带进位加法.

        INC  ---->increase 1;  加 1.

        AAA  ----> ascii add with adjust ; 加法的ASCII码调整.

        DAA  ---->decimal add with adjust;  加法的十进制调整.

        SUB  ---->substract;  减法.

        SBB  ---->substract with borrow;  带借位减法.

        DEC  ---->decrease 1;  减 1.

        NEC  ---->negative;  求反(以 0 减之).

        CMP  ---->compare;  比较.(两操作数作减法,仅修改标志位,不回送结果).

        AAS  ---->ascii adjust on substract;  减法的ASCII码调整.

        DAS  ---->decimal adjust on substract;  减法的十进制调整.

        MUL  ---->multiplication;  无符号乘法.

        IMUL ---->integer multiplication;   整数乘法.

          以上两条,结果回送AH和AL(字节运算),或DX和AX(字运算),

        AAM  ---->ascii adjust on multiplication;  乘法的ASCII码调整.

        DIV  ---->divide;  无符号除法.

        IDIV ---->integer divide;   整数除法.

          以上两条,结果回送:商回送AL,余数回送AH, (字节运算);

          或 商回送AX,余数回送DX, (字运算).

       AAD  --->ascii adjust on divide;  除法的ASCII码调整.

       CBW  ---->change byte to word;  字节转换为字. (把AL中字节的符号扩展到AH中去)

       CWD  --->change word to double word;  字转换为双字. (把AX中的字的符号扩展到DX中去)

       CWDE ---->change word to double word with sign to EAX;   字转换为双字. (把AX中的字符号扩展到EAX中去)

        CDQ --->change double word to quadrate word   双字扩展.    (把EAX中的字的符号扩展到EDX中去)

三、逻辑运算指令

─────────────────────────

        AND OPRD1,OPRD2 与运算.两个全是1才是1,其余全是O.

与操作指令主要用在使一个操作数中的若干位维持不变,而另外若干位

清零的场合.

        OR OPRD1,OPRD2   或运算.一个是1就是1,其他全是0.

或操作指令主要用在使一个操作数中的若干位维持不变,而另外若干位为1的场合.

        XOR OPRD1,OPRD2 异或运算.一样的为0,不一样的为1.

异或指令主要用在使一个操作数的若干位不变,而另外若干位取反的场合.

        NOT OPRD 取反.

        TEST   测试.(两操作数作与运算,仅修改标志位,不回送结果).

        SHL ---->shift left;   逻辑左移.

        SAL --->arithmatic shift left;   算术左移.(=SHL)

        SHR ---->shift right;   逻辑右移.

        SAR ---->arithmatic shift right;   算术右移.(=SHR)

        ROL ---->rotate left;   循环左移.

        ROR ---->rotate right;   循环右移.

        RCL ---->rotate left with carry;   通过进位的循环左移.

        RCR ---->rotate right with carry;   通过进位的循环右移.

          以上八种移位指令,其移位次数可达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  ---->move string;  串传送.

            ( MOVSB 传送字符.    MOVSW 传送字.    MOVSD 传送双字. )

        CMPS ---->compare string;   串比较.

            ( CMPSB 比较字符.    CMPSW 比较字. )

        SCAS  --->scan string;  串扫描.

            把AL或AX的内容与目标串作比较,比较结果反映在标志位.

        LODS --->load string;   装入串.

            把源串中的元素(字或字节)逐一装入AL或AX中.

            ( LODSB 传送字符.    LODSW 传送字.    LODSD 传送双字. )

        STOS  ---->store string;  保存串.

            是LODS的逆过程.

        REP   ---->repeat         当CX/ECX<>0时重复.

        REPE/REPZ  ---->repeat when equal/repeat when zero flag    当ZF=1或比较结果相等,且CX/ECX<>0时重复.

        REPNE/REPNZ ---->repeat when not equal/repeat when zero flag   当ZF=0或比较结果不相等,且CX/ECX<>0时重复.

        REPC  --->repeat when carry flag ; 当CF=1且CX/ECX<>0时重复.

        REPNC  ---->repeat when not carry flag  ; 当CF=0且CX/ECX<>0时重复.

五、程序转移指令

─────────────────────────

    1>无条件转移指令 (长转移)

        JMP ---->jump   无条件转移指令

        CALL    过程调用

        RET/RETF---->return/return far;过程返回.

    2>条件转移指令 (短转移,-128到+127的距离内)

        ( 当且仅当(SF XOR OF)=1时,OP1<OP2 )

        JA/JNBE 不小于或不等于时转移.

        JAE/ JNB ---->jump when above or equal/ jump when not below

大于或等于转移.

       JB/JNAE --->jump when below/ jump when not above or equal小于转移.

        JBE/JNA ---->jump when below or equal/ jump when not above;小于或等于转移.

          以上四条,测试无符号整数运算的结果(标志C和Z).

        JG/JNLE ---->jump when greater/ jump when not less or equal/ jump when not less or equal;大于转移.

        JGE/JNL ---->jump when greater or equal/ jump when not less大于或等于转移.

        JL/JNGE ---->jump when less/ jump when not greater or equal;小于转移.

        JLE/JNG ---->jump when less or equal/ jump when not greater;小于或等于转移.

          以上四条,测试带符号整数运算的结果(标志S,O和Z).

        JE/JZ ---->jump when equal/ jump when has zero flag等于转移.

        JNE/JNZ ---->jump when not equal/ jump when not has zero flag;不等于时转移.

        JC --->jump when has carry flag     有进位时转移.

        JNC ---->jump when not has carry flag   无进位时转移.

        JNO ---->jump when not has overflow flag   不溢出时转移.

        JNP/JPO ---->jump when not has parity flag/ jump when parity flag is odd 奇偶性为奇数时转移.

        JNS ---->jump when not has sign flag   符号位为 "0" 时转移.

        JO  ---->jump when has overflow flag    溢出转移.

        JP/JPE ---->jump when has parity flag / jump when parity flag is even  奇偶性为偶数时转移.

        JS ---->jump when has sign flag     符号位为 "1" 时转移.

    3>循环控制指令(短转移)

        LOOP            CX不为零时循环.

        LOOPE/LOOPZ ---->jump when has sign flag/ loop zero   CX不为零且标志Z=1时循环.

        LOOPNE/LOOPNZ ---->loop not equal/ loop not zero;  CX不为零且标志Z=0时循环.

        JCXZ  ---->jump when CX is zero          CX为零时转移.

        JECXZ ---->jump when ECX is zero         ECX为零时转移.

    4>中断指令

        INT  ---->interrupt  中断指令

        INTO ---->overflow interrup   溢出中断

        IRET ---->interrupt return   中断返回

    5>处理器控制指令

        HLT ---->halt   处理器暂停, 直到出现中断或复位信号才继续.

        WAIT    当芯片引线TEST为高电平时使CPU进入等待状态.

        ESC ---->escape   转换到外处理器.

        LOCK    封锁总线.

        NOP ---->no operation   空操作.

        STC ---->set carry   置进位标志位.

        CLC ---->clear carry   清进位标志位.

        CMC ---->carry make change   进位标志取反.

        STD ---->set direction   置方向标志位.

        CLD ---->clear direction   清方向标志位.

        STI --->set interrupt   置中断允许位.

        CLI ---->clear interrupt   清中断允许位.六、伪指令

─────────────────────────

        DW ---->definw word     定义字(2字节).

        PROC ---->procedure   定义过程.

        ENDP ---->end of procedure   过程结束.

        SEGMENT 定义段.

        ASSUME 建立段寄存器寻址.

        ENDS ---->end segment   段结束.

        END    程序结束.

  评论这张
 
阅读(573)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018