80x86汇编学习笔记

待学知识:

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(偏移地址)值


一、无条件跳转: JMP;
二、根据 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  ;奇偶位不等则跳转

跳转相关标志位:

11109876543210
OFDFIFTFSFZF AF PF CF
溢出方向中断陷阱符号未用辅助未用奇偶未用进位
OD没出现IF

DF方向标志:用于字符串操作指令程序设计。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:附加段寄存器,+偏移得值

(汇编语言第二版王爽)




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值