提兵百万西湖上,立马吴山第一峰!这篇文章主要讲述汇编语言入门-总结相关的知识,希望能为你提供帮助。
学习汇编语言,是为了学习安全技术,为了看懂汇编代码。
根据王爽老师的《汇编语言》书籍,总结以下几点。
当然我们坚持一条原则,少用的知识通过工具查询。
常用指令:
1、通用数据传送指令.
MOV 传送字或字节.
PUSH 把字压入堆栈.
POP 把字弹出堆栈.
2. 输入输出端口传送指令.
IN I/O端口输入. ( 语法: IN 累加器, 端口号│DX )
OUT I/O端口输出. ( 语法: OUT 端口号│DX,累加器 )
输入输出端口由立即方式指定时, 其范围是 0-255;
由寄存器 DX 指定时,
其范围是 0-65535.
3. 目的地址传送指令.
LEA 装入有效地址.
例: LEA DX,string ;
把偏移地址存到DX.
LDS 传送目标指针,把指针内容装入DS.
例: LDS SI,string ;
把段地址:偏移地址存到DS:SI.
LES 传送目标指针,把指针内容装入ES.
例: LES DI,string ;
把段地址:偏移地址存到ES:DI.
LSS 传送目标指针,把指针内容装入SS.
例: LSS DI,string ;
把段地址:偏移地址存到SS:DI.
4. 标志传送指令.
LAHF 标志寄存器传送,把标志装入AH.
SAHF 标志寄存器传送,把AH内容装入标志寄存器.
PUSHF 标志入栈.
POPF 标志出栈.
PUSHD 32位标志入栈.
POPD 32位标志出栈.
5、算术运算指令
ADD 加法.
ADC 带进位加法.
INC 加 1.
SUB 减法.
SBB 带借位减法.
DEC 减 1.
NEC 求反(以 0 减之).
CMP 比较.(两**作数作减法,仅修改标志位,不回送结果).
MUL 无符号乘法.
DIV 无符号除法.
6、逻辑运算指令
AND 与运算.
OR 或运算.
XOR 异或运算.
NOT 取反.
TEST 测试.(两**作数作与运算,仅修改标志位,不回送结果).
SHL 逻辑左移.
SHR 逻辑右移.
7、串指令
DS:SI 源串段寄存器 :源串变址.
ES:DI 目标串段寄存器:目标串变址.
CX 重复次数计数器.
MOVS 串传送.
( MOVSB 传送字符. MOVSW 传送字. MOVSD 传送双字. )
CMPS 串比较.
( CMPSB 比较字符. CMPSW 比较字. )
8、程序转移指令
1>
无条件转移指令 (长转移)
JMP 无条件转移指令
CALL 过程调用
RET/RETF过程返回.
2>
条件转移指令
JB/JNAE 小于转移.
JG/JNLE 大于转移.
JL/JNGE 小于转移.
JE/JZ 等于转移.
JNE/JNZ 不等于时转移.
JNP/JPO 奇偶性为奇数时转移.
JNS 符号位为 "0" 时转移.
JP/JPE 奇偶性为偶数时转移.
3>
中断指令
INT 中断指令
IRET 中断返回
常用查询工具:
汇编金手指
汇编指令的帮助手册
JZ这个指令我们不知道什么意思,可以对此进行查询。
常用的导航栏为指令系统、32位指令。
后期我们会通过OllyDebug分析进行深入学习。
"OllyDebug,简称OD,一种反汇编软件,动态追踪工具,Ring 3 级的调试器。
OllyDebug的使用界面是可视化操作。"
【汇编语言入门-总结】参考文章:
https://blog.csdn.net/weixin_53798995/article/details/124136560
https://zhuanlan.zhihu.com/p/38476126
推荐阅读
- 明细表1字符串拼接合并插入到明细表2SQL输出过程记录
- 7天带你全方位刷爆数据结构与算法,每天一道,高效刷题
- 设计模式——单例模式
- opencv 图像金字塔(python)
- python与matlab一些常用函数互转
- 超详细的FFmpeg安装及简单使用教程
- OpenHarmony Camera组件架构分析以及拍照流程源码解析
- Windows系统中,如何快速找到端口被占用的进程()
- 设计模式基础入门