《2022年一些常用的汇编语言指令 .pdf》由会员分享,可在线阅读,更多相关《2022年一些常用的汇编语言指令 .pdf(4页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、汇编语言常用指令大家在做免杀或者破解软件的时候经常要用到汇编指令,本人整理出了常用的希望对大家有帮助!数据传送指令MOV : 寄存器之间传送注意, 源和目的不能同时是段寄存器;代码段寄存器CS不能作为目的;指令指针IP 不能作为源和目的。立即数不能直接传送段寄存器。源和目的操作数类型要一致;除了串操作指令外,源和目的不能同时是存储器操作数。XCHG 交换指令:操作数可以是通用寄存器和存储单元,但不包括段寄存器,也不能同时是存储单元,还不能有立即数。LEA 16 位寄存器存储器操作数传送有效地址指令:必须是一个16 位寄存器和存储器操作数。LDS 16 位寄存器存储器操作数传送存储器操作数32
2、位地址,它的16 位偏移地址送16位寄存器, 16 位段基值送入DS中。LES :同上,只是16 位段基址送ES中。堆栈操作指令PUSH 操作数,操作数不能使用立即数,POP 操作数,操作数不能是CS和立即数标志操作指令LAHF :把标志寄存器低8 位,符号SF,零 ZF,辅助进位AF ,奇偶 PF ,进位 CF传送到 AH指定的位。不影响标志位。SAHF :与上相反,把AH中的标志位传送回标志寄存器。PUSHF :把标志寄存器内容压入栈顶。POPF :把栈顶的一个字节传送到标志寄存器中。CLC :进位位清零。STC :进位位为1。CMC :进位位取反。CLD :使方向标志DF为零,在执行串操
3、作中,使地址按递增方式变化。STD :DF为 1。CLI:清中断允许标志IF 。Cpu不相应来自外部装置的可屏蔽中断。STI:IF 为 1。加减运算指令名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 4 页 - - - - - - - - - 注意:对于此类运算只有通用寄存器和存储单元可以存放运算结果。如果参与运算的操作数有两个,最多只能有一个存储器操作数并且它们的类型必须一致。ADD 。ADC :把进位CF中的数值加上去。INC:加 1指令SUB 。SBB :把进位CF
4、中数值减去。DEC :减 1指令。NEG 操作数:取补指令,即用0减去操作数再送回操作数。CMP :比较指令,完成操作数1 减去操作数2,结果不送操作数1,但影响标志位。可根据ZF(零)是否被置1 判断相等;如果两者是无符号数,可根据CF判断大小;如果两者是有符号数,要根据SF和 OF判断大小。乘除运算指令MUL 操作数:无符号数乘法指令。操作数不能是立即数。操作数是字节与AL中的无符号数相乘, 16 位结果送AX中。若字节,则与AX乘,结果高16 送 DX ,低 16 送 AX 。如乘积高半部分不为零,则CF、OF为 1,否则为0。所以 CF和 OF表示 AH或 DX中含有结果的有效数。IM
5、UL 操作数:有符号数乘法指令。基本与MUL相同。DIV 操作数:被除数是在AX (除数 8 位)或者 DX和 AX (除数 16 位),操作数不能是立即数。如果除数是0,或者在8(16)位除数时商超过8(16)位,则认为是溢出,引起0 号中断。 IDIV :有符号除法指令,当除数为0,活着商太大,太小(字节超过127, 127 字超过 32767, 32767)时,引起0 号中断。符号扩展指令CBW ,CWD : 把 AL中的符号扩展到寄存器AH中,不影响各标志位。CWD 则把 AX中的符号扩展到 DX ,同样不影响标志位。注意:在无符号数除之前,不宜用这两条指令,一般采用XOR清高 8 位
6、或高 16 位。逻辑运算指令与位移指令注意: 只能有一个存储器操作数;只有通用寄存器或存储器操作数可作为目的操作数,用于存放结果;操作数的类型必须一致。NOT :取反,不影响标志位。AND 操作数 1 操作数 2:操作结果送错作数1,标志 CF(进位)、 OF (溢出)清0,PF (奇偶) ZF(0 标志) SF(符号)反映运算结果,AF (辅助进位)未定义。自己与自己AND值不变,她主要用于将操作数中与1 相与的位保持不变,与0 相与清 0。(都为1 时为 1)OR 操作数 1 操作数 2:自己与自己OR值不变, CF(进位)、 OF(溢出)清0,PF(奇偶)ZF( 0 标志) SF(符号)
7、反映运算结果,AF(辅助进位)未定义。她使用于将若干位置1:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 4 页 - - - - - - - - - 与 1 相或为 1,保持不变的位与0 相或。(都为0 时为 0)XOR 操作数 1 操作数 2:自己与自己异或结果为0,标志 CF (进位)、 OF (溢出)清0,PF(奇偶) ZF(0)SF (符号)反映运算结果,AF(辅助进位)未定义。主要用于将若干位取反的操作:与1 异或取反,与0异或保持不变。(相同为0,不同为1)
8、TEST 操作数 1 操作数 2:测试指令,和AND相同,但结果不送操作数1,各标志位同AND操作。位移指令SAL/SHL 操作数 1或 CL:算术左移与逻辑左移进行相同的动作,操作数是通用寄存器或者存储器操作数,位移数为1 或为 CL;最高位移CF (进位),右边用0 补位。左移一次相当源操作数乘2。SAR 操作数 1或 CL:算术右移,位移数为1 或为 CL;操作数是通用寄存器或者存储器操作数,左符号位保持不变,移出最低位进CF(进位)。相当源操作数除2。SHR 操作数 1或 CL :逻辑右移,操作数是通用寄存器或者存储器操作数,位移数为1或为 CL;左边用0 补足,移出的最低位进CF(进
9、位)对于无符号数,右移一位相当于除2。ROL/ROR 操作数 1或 CL: 不带进位左移 / 右移,操作数是通用寄存器或者存储器操作数,位移数为1 或为 CL。RCL/RCR 操作数 1或 CL: 带进位左移 / 右移, CF (进位)参与循环。操作数是通用寄存器或者存储器操作数,位移数为1或为 CL 。转移指令注意:由于代码段可分为多个段,所以根据转移时是否重置代码段寄存器CS内容,可分为段内转移和段间转移。段内转移仅重置IP 的转移,转移后指令仍在同一代码段中。段间转移重置 CS ,所以转移后继续执行的指令在另一个段中。JMP 标号 :无条件跳转到标号位置执行,段内直接转移指令。地址差用一
10、个字节表示为短转移,用一个字表示为近转移。JMP 通用寄存器 / 存储单元:无条件段间间接转移指令,操作数给定的是目标地址处。JMP FAR PTR 标号:无条件段间直接转移指令,她的具体动作是把指令中包含的目标地址的段值和偏移分别置茹CS和 IP。JMP 操作数:无条件段间间接转移指令,操作数是双字存储单元,给定目标地址,低字节送IP,高字节送CS。条件转移指令:所有的条件转移指令都是段内转移。她是由J 加上相应的含义字母组合成。有符号数关系G (大于), E(等于), L(小于);无符号数关系A(高于)、 E(等于)和B(低于);字母N表示“不”:NB (不小于), NE (不等于)。循环
11、指令名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 4 页 - - - - - - - - - LOOP 标号:她使寄存器CX减 1,若结果不等于0 则转到标号,否则顺序执行LOOP 指令后的指令。最多循环65536 次。LOOPE/LOOPZ 标号:等于 / 全零循环指令。CX的值减 1,如果结果不等于0,并且 ZF(0 标志)等于1,则转移到标号。LOOPNE/LOOPNZ 标号:不等于 / 非零循环指令,CX的值减 1,如果结果不等于0,并且 ZF (0标志)等于0,则跳转到标号。JCXZ 标号:该指令实现当寄存器CX的值等于0 转移到标号,否则顺序执行。通常该指令用在循环开始前,以便在循环次数位0 时,跳过循环体。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 4 页 - - - - - - - - -
限制150内