汇编语言常用命令
汇编语言常用命令
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标志出栈PUSHD32位标志入栈 POPD32位标志出栈
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必记
每天都来学习,一定会进步的,加油!
页:
[1]