汇编语言入门-总结

提兵百万西湖上,立马吴山第一峰!这篇文章主要讲述汇编语言入门-总结相关的知识,希望能为你提供帮助。
学习汇编语言,是为了学习安全技术,为了看懂汇编代码。
根据王爽老师的《汇编语言》书籍,总结以下几点。
当然我们坚持一条原则,少用的知识通过工具查询。





常用指令:

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


    推荐阅读