8088汇编指令详解:移动、输入输出、地址计算与更多

需积分: 12 3 下载量 171 浏览量 更新于2024-10-26 收藏 6KB TXT 举报
"汇编指令表与花指令大全" 本文将详细介绍8088处理器中的基本汇编指令和一些特殊用途的“花指令”。汇编语言是计算机编程的基础,它直接对应于机器语言,每条指令都对应着特定的硬件操作。 1. 基本数据移动指令 - MOV:用于将一个数据从一个位置复制到另一个位置,例如 MOV AX, BX 将BX寄存器的内容复制到AX。 - MOVSX和MOVZX:用于在不同大小的寄存器间移动数据,MOVSX会扩展源数据的符号位,而MOVZX会将其扩展为无符号值。 - PUSH和POP:分别用于将数据压入堆栈和从堆栈弹出数据。 - PUSHA和POPA:一次性将多个寄存器的内容压入或弹出堆栈。 - PUSHA/PUSHADE和POPA/POPAD:对应32位的PUSHA/POPA,用于32位寄存器。 2. 位操作指令 - BSWAP:交换32位数据的高低字节,用于字节序转换。 - XCHG:交换两个寄存器或内存位置的数据。 - CMPXCHG:比较并交换,常用于原子操作,如线程同步。 - XADD:加法交换,将两个操作数相加并将结果存回第一个操作数。 3. 输入/输出(I/O)指令 - IN/OUT:用于与外部设备进行数据交换,如读取或写入端口。 4. 地址计算指令 - LEA:加载有效地址,可用于快速计算复杂地址。 5. 寄存器加载指令 - LDS、LES、LFS、LGS、LSS:加载存储器中的数据到指定段寄存器和指针寄存器,便于访问特定段内的数据。 6. 控制和标志操作指令 - LAHF、SAHF:加载和存储标志寄存器的部分内容。 - PUSHF、POPF:压入和弹出标志寄存器。 - PUSHD/POPD:32位版本的压栈和出栈标志寄存器。 7. 算术和逻辑运算指令 - ADD、ADC、INC:加法操作,ADC会考虑进位标志。 - SUB、SBB、DEC:减法操作,SBB同样考虑进位标志。 - MUL、IMUL:乘法,IMUL为带符号乘法。 - DIV、IDIV:除法,IDIV为带符号除法。 - AAM、AAD:辅助算术操作,用于处理ASCII字符或十进制调整。 8. 其他特殊指令 - AAA、DAA:辅助算术操作,用于调整加法和减法的结果以符合ASCII或二进制补码表示。 - NEG:将操作数取负。 - CMP:比较操作,不改变操作数但更新标志寄存器。 汇编指令的熟练掌握是编写底层代码和理解计算机工作原理的关键。这些指令不仅用于编写低级程序,也常常在系统级编程、设备驱动和优化代码中发挥重要作用。花指令通常指的是具有特定目的或隐秘功能的指令序列,可能用于破解、隐藏代码或实现非标准操作。了解和掌握汇编指令对于任何IT专业人士来说都是非常有价值的技能。
2009-09-24 上传
SEH异常的应用 SEH异常就是结构化异常处理,程序遇到SEH异常时,异常交给系统处理(这讲是一个非常负责的过程,很容易跟飞),所以利用SEH异常时可以一定程度的防止程度调试(SEH异常在壳里是很常见的)。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ push ******** //地址压入堆栈 mov eax,dword ptr fs:[0] push eax //fs[0]压入堆栈,执行完成后fs[0]指向堆栈 mov dword ptr fs:[0],esp //构造一个ERR结构 mov esi,0 //简单的赋值语句 mov eax,dword ptr ds:[esi] //产生异常 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ push ******** mov eax,dword ptr fs:[0] push eax mov dword ptr fs:[0],esp mov ebx,0 div ebx ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ nop push ******** mov eax,dword ptr fs:[0] push eax mov dword ptr fs:[0],esp int 3 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ push ******** mov eax,dword ptr fs:[0] push eax mov dword ptr fs:[0],esp nop int 68 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ push ******** mov eax,dword ptr fs:[0] push eax mov dword ptr fs:[0],esp nop vxdcall 134543 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ push ******** mov eax,dword ptr fs:[0] push eax mov dword ptr fs:[0],esp ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ push xxx push dword ptr fs:[0] mov fs:[0], esp stc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ push xxx push dword ptr fs:[0] mov fs:[0], esp JMP 0 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ push xxx push dword ptr fs:[0] mov fs:[0], esp ret ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ push xxx push dword ptr fs:[0] mov fs:[0], esp pop ss