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