汇编基础知识

1. 九个寄存器(32位)

寄存器																	   编号
eax:累加器(accumulator), 它是很多加法乘法指令的缺省寄存器。						0
ecx:计数器(counter), 是重复(REP)前缀指令和LOOP指令的内定计数器。				1
edx:总是被用来放整数除法产生的余数。										   2
ebx:"基地址"(base)寄存器, 在内存寻址时存放基地址。							  3
esp:存储堆栈的最顶端														 4
EBP:是"基址指针",不是必须的													5
esi:																	  6
edi:变址寄存器,主要用于存放存储单元在段内的偏移量,作为通用寄存器,也可存储算术逻辑运算的操作数和运算结果。它们可作一般的存储器指针使用。																	  7
eip:存储当前CPU马上要执行的指令
寄存器32位可以拆分为两个16位寄存器 eax拆分成ax(低16位)  ax还可以拆分为ah(高位)和al(低位)

2. 八个标志位

CF(进位标志位):运算时最高位产生进位或借位时为1	#针对无符号数的运算
ZF(零标志位):若当前运算结果为0,标志位为1 
SF(符号标志位):该标志位与运算结果二进制的最高位相同,运算结果为负,则标志位为1	
OF(溢出标志位):如果运算结果超过了机器能表示的范围则标志位为1	#针对有符号数的运算 正+正=负 / 负+负=正 表示溢出
				符号位有进位:1,最高有效位有进位:1		最终OF位为1 xor 1 = 0(计组的溢出判断)
PF(奇偶标志位):运算结果的最低有效字节中(即低八位)含1的个数为偶数则标志位为1	
AF(辅助进位标志):运算结果的低4位向高4位有进位或借位时为1
次要
TF(跟踪标志):为方便程序调试而设置,若TF=1,则CPU处于单步工作方式,在每条指令结束后产生中断
DF(方向标志位):用来控制串处理指令的处理方向,DF为1则串处理过程中地址自动递减,否则自动递增

常见JCC指令

JCC指令中文含义检查符号位
JZ/JE若为0则跳转;若相等则跳转ZF=1
JNZ/JNE若不为0则跳转;若不相等则跳转ZF=0
JS若为负则跳转SF=1
JNS若为正则跳转SF=0
JP/JPE若1出现次数为偶数则跳转PF=1
JNP/JPO若1出现次数为奇数则跳转PF=0
JO若溢出则跳转OF=1
JNO若无溢出则跳转OF=0
JC/JB/JNAE(无符号数)若进位则跳转;若低于则跳转;若不高于等于则跳转CF=1
JNC/JNB/JAE(无符号数)若无进位则跳转;若不低于则跳转;若高于等于则跳转;CF=0
JBE/JNA(无符号数)若低于等于则跳转;若不高于则跳转ZF=1或CF=1
JNBE/JA(无符号数)若不低于等于则跳转;若高于则跳转ZF=0或CF=0
JL/JNGE(有符号数)若小于则跳转;若不大于等于则跳转SF != OF
JNL/JGE(有符号数)若不小于则跳转;若大于等于则跳转;SF = OF
JLE/JNG(有符号数)若小于等于则跳转;若不大于则跳转SF != OF 或 ZF=1
JNLE/JG(有符号数)若不小于等于则跳转;若大于则跳转SF=0F 且 ZF=0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值