破解所撑握的最简单的基础汇编语言

本文作者:不详
文章来源:不详
阅读次数:97
添加时间:2005/4/28 12:55:10
 
MOV AA,BB 将 BB 放到 AA 里
CALL 调用子程序 (相当于 BASIC 的 GOSUB)
RET 与 RETF 返回程序 (相当于 BASIC 的 RETURN)
CMP XX,YY 比较 XX 与 YY
JZ 若相等则转移
JNZ 若不相等则转移
JB 若小于则转移
JG 若大于则转移
JMP 无条件转移
J??? (各种转移指令)
LOOP 循环
INT XX 类似 CALL 的中断涵数
  PUSH 推入栈(STACK)ESP:PUSH AX
  POP 出栈ESP:POP CX
  XCHG 交换ESP:XCHG AX,BX
  IN、OUT 与PORT有关的IN/OUT
  XLAT 查表
  LEA 段内偏移量。ESP:LEA AX,AREA1=MOV AX,OFFSET AREA1
  LAHF、SAHF与棋标有关的寄存器 AH
  PUSHF、POPF将棋标入/出栈
  ADD ESP ADD AX,CX (AX=AX+CX)
  ADC 加入棋标C的ADD
  INC ESP INC AX(AX=AX+1)
  AAA 加法校正
  SUB、SBB 减法
  DEC ESP: DEC AX(AX=AX-1)
  NEG 去补,
  MUL、IMUL 乘
  DIV、IDIV 除
  SHR、SAR、SHL 算术、逻辑位移R=RIGHT L=LEFT
  OR、XOR、AND 逻辑运算 ESP :XOR AX,AX(AX=0)
直接标志转移

指令格式 机器码 测试条件 如...则转移  
  JC 72 C=1 有进位
JNS 79 S=0 正号
JNC 73 C=0 无进位
JO 70 O=1 有溢出
JZ/JE 74 Z=1 零/等于
JNO 71 O=0 无溢出
JNZ/JNE 75 Z=0 不为零/不等于
JP/JPE 7A P=1 奇偶位为偶
JS 78 S=1 负号
JNP/IPO 7B P=0 奇偶位为奇

间接标志转移

指令格式 机器码 测试格式 如...则转移
JA/JNBE(比较无符号数) 77 C或Z=0 >   高于/不低于或等于
JAE/JNB(比较无符号数) 73 C=0 >=  高于或等于/不低于
JB/JNAE(比较无符号数) 72 C=1 <   低于/不高于或等于
JBE/JNA(比较无符号数) 76 C或Z=1 <=   低于或等于/不高于
JG/JNLE(比较带符号数) 7F (S异或O)或Z=0 >  大于/不小于或等于
JGE/JNL(比较带符号数) 7D S异或O=0 >=  大于或等于/不小于
JL/JNGE(比较带符号数) 7C S异或O=1 <   小于/不大于或等于
JLE/JNG(比较带符号数) 7E (S异或O)或Z=1 <=  小于或等于/不大于

无条件转移指令JMP

指令格式 执行操作 机器码 说明
段内直接短转移Jmp short (IP)←(IP)+8位位移量 EB 转移范围-128到+127字节
段内直接近转移Jmp near (IP)←(IP)+16位位移量 E9 转移到段内的任一位置
段内间接转移Jmp word (IP)←(有效地址EA) FF
段间直接(远)转移Jmp far (IP)←(偏移地址)
(CS)←(段地址) EA
段间间接转移 Jmp dword (IP)←(EA)
(CS)←(EA+2)
综合使用汇编来进行比较的组合:
1
mov eax [ ] 这里可以是地址,也可以是其它寄存器
mov edx [ ] 同上 通常这两个地址就储存着重要信息
call 00??????
test eax eax
jz(jnz)
2
mov eax [ ] 这里可以是地址,也可以是其它寄存器
mov edx [ ] 同上 通常这两个地址就储存着重要信息
call 00??????
jne(je)
3
mov eax [ ]
mov edx [ ]
cmp eax,edx
jnz(jz)
或者
begin mov al [ ]
mov cl [ ]
cmp al,cl
jnz(jz)
mov al [ +1]
mov cl [ +1]
cmp al,cl
jnz(jz)
cmp eax ecx (eax为计数器)
jnl begin
mov al 01
4
lea edi [ ]
lea esi [ ]
repz cmpsd
jz(jnz)
5
mov eax [ ] 这里可以是地址,也可以是其它寄存器
mov edx [ ] 同上 通常这两个地址就储存着重要信息
call 00??????
setz (setnz) al (bl,cl…)
6
mov eax [ ] 这里可以是地址,也可以是其它寄存器
mov edx [ ] 同上 通常这两个地址就储存着重要信息
call 00??????
test eax eax
setz (setnz) bl,cl…
7
call 00?????? ***
push eax (ebx,ecx…)
……
……
call 00??????
pop eax (ebx,ecx…)
test eax eax
jz(jnz)
这个形式比较特别,它的关键比较地方中在第二call中,而是在第一call中,大家一
看就知道了。


Copyright © 2024粤ICP备2024343336号-2 All Rights Reserved.
请用1024*768分辨率浏览本站
站长:AH 程序设计:AH 联系QQ:65994964
当前共有位用户在线