80x86汇编学习笔记
来源:互联网 发布:mac ppt动画顺序调整 编辑:程序博客网 时间:2024/06/06 01:23
待学知识:
1标志位
2原子操作:
lock cmpxchg
3
寄存器不能使用人为的程度从低到高:
esp栈顶
ebp栈底
eip指令指针
80X86三种操作数:
寄存器操作数
立即操作数
内存操作数
指令分类:
数据传输指令
mov eax,[eax+4]右值不能是表达式
它会把右值结果当成是地址去取值后传给左边
lea eax,[ebx+eax*4+3]
它会取右边的算术结果
lea eas,dword ptr ss:[ebp-0xc0]
ebp-0xc0内存单元相对于SS段的偏移。
ebp用于在子函数中引用函数的参数以及局部变量
一般情况下,ebp+x引用函数的参数,ebp-x引用局部变量
算术运算与逻辑运算指令
add
sub
imul(带符号的乘法)
idiv
shl
shr
串操作指令
转移控制指令(能改变CS、IP的值)
jmp 段地址:偏移地址
jmp 寄存器//只修改IP(偏移地址)值
二、根据 CX、ECX 寄存器的值跳转: JCXZ(CX 为 0 则跳转)、JECXZ(ECX 为 0 则跳转);
三、根据 EFLAGS 寄存器的标志位跳转, 这个太多了.
根据标志位跳转的指令:
JE ;等于则跳转JNE ;不等于则跳转JZ ;为 0 则跳转JNZ ;不为 0 则跳转JS ;为负则跳转JNS ;不为负则跳转JC ;进位则跳转JNC ;不进位则跳转JO ;溢出则跳转JNO ;不溢出则跳转JA ;无符号大于则跳转JNA ;无符号不大于则跳转JAE ;无符号大于等于则跳转JNAE ;无符号不大于等于则跳转JG ;有符号大于则跳转JNG ;有符号不大于则跳转JGE ;有符号大于等于则跳转JNGE ;有符号不大于等于则跳转JB ;无符号小于则跳转JNB ;无符号不小于则跳转JBE ;无符号小于等于则跳转JNBE ;无符号不小于等于则跳转JL ;有符号小于则跳转JNL ;有符号不小于则跳转JLE ;有符号小于等于则跳转JNLE ;有符号不小于等于则跳转JP ;奇偶位置位则跳转JNP ;奇偶位清除则跳转JPE ;奇偶位相等则跳转JPO ;奇偶位不等则跳转
跳转相关标志位:
11109876543210OFDFIFTFSFZF AF PF CF溢出方向中断陷阱符号零未用辅助未用奇偶未用进位OD没出现IFDF方向标志:用于字符串操作指令程序设计。DF置0,则串操作控制处理方向,从带有最低地址的第一个元素逐个处理,否则,从高向低IF中断允许标志: IF=1,CPU允许中断,IF=0,则CPU关闭中断TF跟踪标志:TF=1,机器进入单步工作方式,每条机器指令执行后,显示结果及寄存器状态,若TF=0,则机器处在连续工作方式。此标志为调试机器或调试程序发现故障而设置。
处理器控制指令
段地址
段地址在段寄存器中存放
8086CPU有4个段寄存器:
CS:
CS和IP是连个最关键的寄存器,CS为代码段寄存器,IP为指令指针寄存器
故而CPU执行CS::IP指向的地址即CS*16+IP处。
DS:数据段寄存器,+偏移得值
SS:堆栈段寄存器,SP用来指向堆栈的栈顶。偏移量用到指针寄存器BP时,其缺省段为SS,可用BP访问整个堆栈。
ES:附加段寄存器,+偏移得值
(汇编语言第二版王爽)
0 0
- 80x86汇编学习笔记
- X86汇编指令学习笔记
- 80x86汇编学习笔记(时刻更新中)
- X86学习笔记——汇编基础知识
- X86汇编学习中
- X86汇编学习小结
- x86汇编学习资源
- X86汇编学习小结
- x86汇编指令学习
- 80x86 汇编指令
- 80x86汇编小站
- 80x86汇编 手记
- 80x86汇编指令系统
- 入门80x86汇编
- x86汇编学习错误总结
- 80x86 汇编指令大全
- 80x86汇编指令详解
- 80x86汇编指令详解
- 动态规划求解矩阵链相乘问题
- 前端不为人知的一面--前端冷知识集锦
- android关于uses-permission权限列表
- 将 Django 应用程序部署到生产服务器
- 测试oracle连接池最大连接数
- 80x86汇编学习笔记
- 黑马程序员 java学习笔记 Day4:集合
- PowerDesingner--java代码生成类图
- RMAN备份与恢复—对数据库进行完全介质恢复
- git 常用命令使用实践总结-wish
- 在widgetoneIDE环境下使用HTML5和jQueryMobile控件编写UI界面-九宫格
- 微信公众号开发系列-开发环境要求和准备工作
- hadoop 学习笔记:mapreduce框架详解
- Objective-C Runtime 运行时之一:类与对象