mova,b 把b的值送给a
ret 返回主程序
no p 无作用,英文“n o ope ratio n”的简写,意思是“do no thing”(机器码90)***机器码的含义参看上面
(解释:u ltrae dit打开编辑exe文件时你看到90,等同于汇编语句nop)c all 调用子程序
je或jz若相等则跳(机器码74 或0F84)
jne或jnz若不相等则跳(机器码75或0F85)
jmp无条件跳(机器码E B)
jb 若小于则跳
ja若大于则跳
jg 若大于则跳
jge若大于等于则跳
jl若小于则跳
j le 若小于等于则跳
p op 出栈
p ush 压栈
三.常见修改(机器码)
74=>7574=>90 74=>EB
75=>74 75=>90 75=>EB
jnz->nop
75->90(相应的机器码修改)
jn z ->jmp
75-> EB(相应的机器码修改)
j nz -> jz
75->74 (正常) 0F 85-> 0F 84(特殊情况下,有时,相应的机器码修改)
四.两种不同情况的不同修改方法
1.修改为jm p
je(jn e,jz,jnz)=>jmp相应的机器码EB (出错信息向上到的第一个跳转)jmp 的作用是绝对跳,无条件跳,从而跳过下面的出错信息
xxxx xxxxx xxx 出错信息,例如:注册码不对,so rry,未注册版不
能...,"Funct ion N ot Av aible in D emo"或
"Comm and N ot Av aible" 或"Can't save in S harew are/D emo"等(我们希望把它跳过,不让它出现)
。。。
。。。
xxxxx xxxxx xx 正确路线所在
2.修改为no p
je(jn e,jz,jnz)=>nop相应的机器码90 (正确信息向上到的第一个跳转)n op的作用是抹掉这个跳转,使这个跳转无效,失去作用,从而使程序顺利来到紧跟其后的正确信息处
x xxxxx xxxxx x 正确信息,例如:注册成功,谢谢您的支持等(我们希望它不被跳过,让它出现,程序一定要顺利来到这里)
。。。
。。。
xx xxxxx xxxxx出错信息(我们希望不要跳到这里,不让它出现)它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据.
1. 通用数据传送指令.
MOV传送字或字节.
MOVS X 先符号扩展,再传送.
MOVZ X 先零扩展,再传送.
PUSH把字压入堆栈.
POP把字弹出堆栈.
PUSH A 把AX,CX,D X,BX,SP,BP,SI,D I依次压入堆栈.
POP A 把DI,SI,B P,SP,BX,DX,CX,A X依次弹出堆栈.
PUS HAD 把EAX,E CX,ED X,EBX,ESP,EBP,E SI,ED I依次压入堆栈.
POP AD 把E DI,ES I,EBP,ESP,EBX,E DX,EC X,EAX依次弹出堆栈.
BSWA P 交换32位寄存器里字节的顺序
XCHG交换字或字节.( 至少有一个操作数为寄存器,段寄存器不可作为操作数)CM PXCHG比较并交换操作数.( 第二个操作数必须为累加器A L/AX/EAX )
X ADD 先交换再累加.( 结果在第一个操作数里)
X LAT 字节查表转换.
── BX指向一张 256字节的表的起点, A L 为表的索引值(0-255,即
0-FF H); 返回 AL为查表结果. ( [BX+AL]->AL )
2. 输入输出端口传送指令.
I N I/O端口输入. ( 语法: IN累加器,{端口号│DX} )
O UT I/O端口输出. ( 语法: OU T {端口号│DX},累加器)
输入输出端口由立即方式指定时,其范围是 0-255; 由寄存器 DX指定时,其范围是0-65535.
3. 目的地址传送指令.
LEA装入有效地址.
例:LEA D X,str ing ;把偏移地址存到DX.
L DS 传送目标指针,把指针内容装入DS.
例: LDS SI,s tring ;把段地址:偏移地址存到DS:SI.
LE S 传送目标指针,把指针内容装入ES.
例: LESDI,st ring;把段地址:偏移地址存到ESI.
LFS 传送目标指针,把指针内容装入FS.
例: LF S DI,strin g ;把段地址:偏移地址存到F SI.
LGS传送目标指针,把指针内容装入GS.
例:LGS D I,str ing ;把段地址:偏移地址存到GSI.
L SS 传送目标指针,把指针内容装入SS.
例: LSS DI,s tring ;把段地址:偏移地址存到SS I.
4. 标志传送指令.
LAHF标志寄存器传送,把标志装入AH.
SAHF标志寄存器传送,把A H内容装入标志寄存器.
PUSHF标志入栈.
POPF标志出栈.
P USHD32位标志入栈.
二、算术运算指令
ADD加法.
AD C 带进位加法.
INC加 1.
A AA 加法的ASCI I码调整.
D AA 加法的十进制调整.
SUB减法.
SBB带借位减法.
DEC减 1.
NE C 求反(以 0 减之).
CMP比较.(两操作数作减法,仅修改标志位,不回送结果).
AAS减法的AS CII码调整.
DAS减法的十进制调整.
MU L 无符号乘法.
IMU L 整数乘法.
以上两条,结果回送AH和AL(字节运算),或DX和AX(字运算),AA M 乘法的ASCII码调整.
DI V 无符号除法.
IDI V 整数除法.
以上两条,结果回送:
商回送AL,余数回送AH, (字节运算);或商回送AX,余数回送DX, (字运算). AAD除法的A SCII码调整.
CBW字节转换为字. (把AL中字节的符号扩展到AH中去)
CWD字转换为双字. (把AX中的字的符号扩展到DX中去) CWDE字转换为双字. (把AX中的字符号扩展到EAX中去)
CDQ 双字扩展.(把EAX中的字的符号扩展到E DX中去)
三、逻辑运算指令
AND与运算.
or或运算.
X OR 异或运算.
NOT取反.
TE ST 测试.(两操作数作与运算,仅修改标志位,不回送结果).
S HL 逻辑左移.
SAL算术左移.(=SH L)
SHR逻辑右移.
S AR 算术右移.(=SHR)
RO L 循环左移.
ROR循环右移.
R CL 通过进位的循环左移.
RCR通过进位的循环右移.
以上八种移位指令,其移位次数可达255次.移位一次时, 可直接用操作码. 如S HL AX,1.移位>1次时,则由寄存器CL给出移位次数.
如 MOVCL,04
S HL AX,CL
四、串指令
DS:S I 源串段寄存器:源串变址.
E SI 目标串段寄存器:目标串变址.
CX 重复次数计数器.
AL/A X 扫描值.
D标志0表示重复操作中SI和DI应自动增量; 1表示应自动减量. Z标志用来控制扫描或比较操作的结束.
MOVS串传送.
(MOVSB传送字符. MOV SW 传送字. MO VSD 传送双字.) CMPS串比较.
(CMPSB比较字符. CMP SW 比较字. )
SC AS 串扫描.
把AL或AX的内容与目标串作比较,比较结果反映在标志位.LO DS 装入串.
把源串中的元素(字或字节)逐一装入AL或AX中.
( LODS B 传送字符. LO DSW 传送字. L ODSD传送双字. )
STOS保存串.
是LODS的逆过程.
RE P 当CX/ECX0时重复.
RE PE/RE PZ 当Z F=1或比较结果相等,且CX/ECX0时重复.
REP NE/RE PNZ 当ZF=0或比较结果不相等,且C X/ECX0时重复.
R EPC 当CF=1且CX/EC X0时重复.
REPNC当CF=0且CX/ECX0时重复.
五、程序转移指令
1>无条件转移指令 (长转移)
JMP 无条件转移指令
CALL过程调用
RE T/RET F过程返回.
2>条件转移指令(短转移,-128到+127的距离内)
( 当且仅当(S F XOR OF)=1时,OP1
JA/JN BE 不小于或不等于时转移.
JA E/JNB大于或等于转移.
JB/JNAE小于转移.
JBE/J NA 小于或等于转移.
以上四条,测试无符号整数运算的结果(标志C和Z).
J G/JNL E 大于转移.
JGE/JNL 大于或等于转移.
JL/J NGE 小于转移.
JL E/JNG小于或等于转移.
以上四条,测试带符号整数运算的结果(标志S,O和Z).
J E/JZ等于转移.
J NE/JN Z 不等于时转移.
JC有进位时转移.
JNC无进位时转移.
JNO不溢出时转移.
JNP/JPO奇偶性为奇数时转移.
J NS 符号位为 "0" 时转移.
JO 溢出转移.
JP/JPE 奇偶性为偶数时转移.
JS符号位为 "1"时转移.
3>循环控制指令(短转移)
LOOPCX不为零时循环.
LO OPE/L OOPZCX不为零且标志Z=1时循环.
L OOPNE/LOOP NZ CX不为零且标志Z=0时循环.
JCX Z CX为零时转移.
J ECXZECX为零时转移.
4>中断指令
IN T 中断指令
INTO溢出中断
IR ET 中断返回
汇编语言结束指令5>处理器控制指令
H LT 处理器暂停,直到出现中断或复位信号才继续.
W AIT 当芯片引线T EST为高电平时使C PU进入等待状态.ES C 转换到外处理器.
L OCK 封锁总线.
NO P 空操作.
STC 置进位标志位.
CLC 清进位标志位.
CMC 进位标志取反.
STD 置方向标志位.
CLD 清方向标志位.
STI 置中断允许位.
CLI 清中断允许位.
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论