huolong blog

汇编中的寄存器

汇编中各式各样的寄存器

通用寄存器:eax,ebx,ecx,edx 源变址和目标变址寄存器:ESI,EDI 栈相关寄存器:SS,ESP,EBP 代码段相关寄存器:CS,EIP 数据段相关寄存器:DS(常与ESI寄存器结合使用) 附加段寄存器:ES(常与EDI寄存器结合使用) 控制寄存器:CR0-CR3 系统地址寄存器:GDTR,LDTR,IDTR,TR

Flag寄存器标志位含义:

  • ZF零标志,用来反映运算结果是否为零,如果为零则该标志位置为1
  • AF辅助进位标志,运算过程中第三位有进位,则置为1
  • PF奇偶标志,当运算结果中有偶数个1时,置为1
  • SF符号标志,当运算结果为负数时,置为1
  • CF进位标志,最高有效位产生进位时,置为1
  • OF溢出标志,若操作数结果超出了机器能够表示的范围,则产生溢出,置为1

CISC汇编和RISC汇编

CISC与RISC主要区别

比较内容 CISC RISC
指令系统 复杂,庞大 精简
指令数目 一般大于200 一般小于100
指令长度 不固定 等长
可访存指令 不加限制 只有load和store
指令使用频率 相差很大 相差不大
指令执行时间 相差很大 大多在一个周期完成
优化编译实现 很难 较为容易
程序源代码长度 较短 较长
控制器实现方式 绝大多数为微程序控制 绝大多数为硬布线控制
系统软件开发时间 较短 较长
  1. CISC指令集复杂丰富,功耗大,每条指令长度也不固定(1-6个字节),不适用于移动端,因此移动端几乎被RISC占据
  2. 在RISC中,CPU并不会对内存中的数据进行操作,所有的计算都要求在寄存器中完成,而寄存器和内存的通信则由单独指令完成,CISC中CPU可以直接对内存操作
  3. RISC拥有更多的通用寄存器,每个寄存器都可以用作数据存储和寻址
  4. RISC指令集能够非常有效地采用流水线,超流水线和超标量技术,实现指令级的并行操作,从而提高效率

x86指令讲解

  1. mov指令 格式:mov reg/mem, reg/mem/imme 注意:段寄存器不能直接用mov指令传送,以下指令是错误的 mov ds, es mov ds, 5

常见汇编指令与机器码

short jump -> eb (8位) near jump -> e9 (16位) far jump -> ea (32位) je/jz -> 74 jne/jnz -> 75 nop -> 90 int 3 -> cc ret -> c3 call eax -> d0ff jmp esp -> e4ff