找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 1441|回复: 0

汇编语言常用命令

[复制链接]
  • TA的每日心情
    开心
    2018-10-31 14:26
  • 签到天数: 18 天

    [LV.4]偶尔看看III

    78

    主题

    109

    回帖

    1019

    积分

    高级会员

    积分
    1019

    猴年

    龙龙实名认证 发表于 2015-6-22 03:19:23 | 显示全部楼层 |阅读模式
      
      汇编语言常用命令

      1.数据传输指令  使用数据传输指令可以将数据在存储器和寄存器、寄存器和输入/输出端口之间传送。数据传送指令按照其用途又可分为通用数据传送指令、输入/输出端口传送指令、目的地址传送指令、标致传送指令4种。常用的通用数据传送指令有如下几种: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、CX、EAX依次弹出堆栈 常用的输入/输出端口传送指令有如下几种: IN   I/O端口输入(语法:NT 累加器,{端口号 | DX}) OUT   I/O端口输出(语法:OUT{端口号 | DX},累加器}) 常用的目的地址传送指令有如下几种:LEA   装入有效地址 例:LEA DX,string;把偏移地址存到DXLDS   传送目标指针,把指针内容装入DS 例:LDS SI,string;把段地址:偏移地址存到DS:SILES   传送目标指针,把指针内容装入ES 例:LES DI,string;把段地址:偏地址存到ES:DILFS   传送目标指针,把指针内容装入FS 例:LFS DI,string;把段地址:偏地址存到FS:DILGS   传送目标指针,把指针内容装入GS 例:LGS DI,string;把段地址:偏地址存到GS:DILSS   传送目标指针,把指针内容装入SS 例:LSS DI,string;把段地址:偏地址存到SS:DI常用的标志传送指令有如下几种:LAHF 标志寄存器传送,把标志装入AHSAHF 标志寄存器传送,把AH内容装入标志寄存器 PUSHF  标志入栈 POPF  标志出栈PUSHD  32位标志入栈 POPD  32位标志出栈
      2.算术运算指令一般的计算机为用户提供了加、减、乘、除4种基本运算,均可对字节或字进行计算,同时,既可以对无符号数运算,也可对无符号数运算。无符号数和有符号数的加、减法运算使用相同的指令,而在乘、除运算中,无符号数和有符号数运算则使用不同的指令。ADD   加法
      SUB  减法MUL  无符号乘法 IMUL   有符号乘法 DIV   无符号除法 IDIV  有符号除法 INC   加1 DEC  减1ADC  带进位加法 SBB   带借位减法NEC   求反(以0减之)
      3.逻辑运算指令逻辑运算指令可对8位或16位的寄存器或存储器单元的内容进行按位操作,不会产生进位,也不会产生溢出。逻辑运算指令主要有如下5个:AND   与运算 OR  或运算 XOR   异或运算NOT   取反(非运算)TEST  测试运算(两操作数作与运算,仅修改标志位,不会送结果)
      4.串运算指令MOVS 串传送(MOVSB传送字符、MOVSW传送字、MOVSD传送双字) CMPS 串比较(CMPSB比较字符、CMPSW比较字)SCAS 串扫描,把AL或AX的内容与目标串作比较,比较结果反映在标志位 LODS 装入串,把源串中的元素(字或字节)逐一装入AL或AX中(LODSB 传送字符、LODSW传送字、LODSD传送双字)STOS 保存串,是LODS的逆过程
      5.程序转移指令程序转移指令根据其转移的条件,又可分为无条件转移指令、条件转移指令、循环控制指令、中断指令、处理器控制指令五种。其中无条件转移指令主要如下:JMP  无条件转移指令 CALL 过程调用 RET/RETF 过程返回条件转移指令会根据其前面指令的返回结果而使用哪种指令,循环控制指令又称为短转移,主要有如下几个:LOOP     CX不为零的循环LOOPE/LOOPNZ CX不为零且标志Z=1时循环 LOOPNE/LOOPNZCX不为零且标志Z=0时循环 JCXZ     CX为零时转移 JECXZ    ECX为零时转移另外,中断指令主要是用于根据条件来中断程序的运行,主要有如下几个: INT   中断指令 INTO  溢出中断
      IRET  中断返回最后,常用的处理器控制指令有如下几个:HLT   处理器暂停,直到出现中断或复位信号才继续WAIT  当芯片引线TEST为高电平时使用CPU进入等待状态 ESC   转换到外处理器 NOP   空操作
      6.伪指令  用于告诉汇编程序如何进行汇编的指令,它既不控制机器的操作也不被汇编成机器代码,只能为汇编程序所识别并指导汇编如何进行,常用的伪指令有如下几个:DW   定义字(2字节) PROC   定义过程 ENDP   过程结束 SEGMENT 定义段ASSUME  建立段寄存器寻址 ENDS   段结束 END  程序结束
      7.子程序  在8086指令系统中子程序主要靠CALL指令调用,子程序的调用又可分为段内调用和段间调用两种。在加密过程中,一大段程序不可能就是一条主程序到头,肯定会调用子程序,由子程序来处理发送的注册点并对其进行比较,最后标记是否注册正确。破解程序关键在于能否找准程序作为注册判断的部分,进入软件的注册程序,使用软件破解技术对注册程序进行破解。一般子程序的返回值是RET。
      


    写了那么多,但我看不懂唉....

    真不错,,想学OD必记

  • TA的每日心情

    2017-2-2 12:17
  • 签到天数: 11 天

    [LV.3]偶尔看看II

    7

    主题

    215

    回帖

    959

    积分

    高级会员

    积分
    959
    nikkitang 发表于 2015-6-27 01:31:05 | 显示全部楼层
    每天都来学习,一定会进步的,加油!
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|虫虫联盟 ( 备案号:蜀ICP备15018121号-1 )

    GMT+8, 2024-3-28 23:01 , Processed in 0.365272 second(s), 26 queries .

    Powered by Discuz! X3.5 Licensed

    © 2001-2024 Discuz! Team.

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