news 2026/5/19 13:34:45

【30天精通汇编】Day 2: CPU架构与寄存器

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【30天精通汇编】Day 2: CPU架构与寄存器

【30天精通汇编】Day 2: CPU架构与寄存器

📅 学习时间:4-5小时
🎯 学习目标:理解CPU工作原理,掌握x86寄存器
💡 难度:★★☆☆☆


📝 Day 1 练习题答案

练习1: - 10110(二进制) = 16+4+2 = 22(十进制) - 42(十进制) = 101010(二进制) - 11011110(二进制) = DE(十六进制) 练习2: -10的8位补码: 10 = 0000 1010 取反 = 1111 0101 加1 = 1111 0110 = 0xF6 练习3: 0xAB & 0x0F = 0x0B (1010 1011 & 0000 1111 = 0000 1011)

1. CPU是什么

1.1 CPU的角色

CPU = Central Processing Unit = 中央处理器 把计算机比作一个工厂: 【内存 (仓库)】 存放数据,等待被处理 ↑↓ 数据搬运 【CPU (车间)】 - 寄存器 (工作台):临时存放数据 - 运算单元 (加工机器):执行计算 CPU的工作: 1. 从内存取指令 2. 解码指令 3. 执行指令 4. 存储结果

1.2 CPU的基本组成

【CPU的基本组成】 1. 控制单元 (CU) - 解析指令,控制执行流程 2. 寄存器组 (Registers) - 临时存储数据 3. 算术逻辑单元 (ALU) - 执行加减乘除运算 4. 缓存 (Cache) - 高速临时存储

2. x86架构演进

2.1 从8086到x64

年代 CPU 位数 寄存器名 1978 8086 16位 AX, BX, CX, DX 1985 80386 32位 EAX, EBX, ECX, EDX 2003 x86-64 64位 RAX, RBX, RCX, RDX 命名规则: AX = 16位 (原始) EAX = Extended AX = 32位 RAX = 64位 (x64架构) 关系(从大到小嵌套): RAX (64位) -> EAX (低32位) -> AX (低16位) -> AH (高8位) + AL (低8位)

3. x86通用寄存器(32位)

3.1 四大数据寄存器

四大数据寄存器: EAX - 累加器 (Accumulator) 用途:算术运算结果、函数返回值 EBX - 基址寄存器 (Base) 用途:存储内存地址基址 ECX - 计数器 (Counter) 用途:循环计数、字符串操作 EDX - 数据寄存器 (Data) 用途:I/O操作、乘除法扩展

3.2 指针和索引寄存器

指针和索引寄存器: ESP - 栈指针 (Stack Pointer) 用途:指向栈顶(非常重要!) EBP - 基址指针 (Base Pointer) 用途:指向栈帧底部 ESI - 源索引 (Source Index) 用途:字符串操作的源地址 EDI - 目的索引 (Destination Index) 用途:字符串操作的目标地址

3.3 指令指针和标志寄存器

指令指针和标志寄存器: EIP - 指令指针 用途:指向下一条要执行的指令 EFLAGS - 标志寄存器 用途:存储CPU状态标志 EIP是最重要的寄存器之一! 控制EIP就能控制程序执行流程。

4. 标志寄存器详解

4.1 常用标志位

EFLAGS寄存器各位含义: 位 名称 全称 含义 ───────────────────────────────────────────────── 0 CF Carry Flag 进位/借位标志 2 PF Parity Flag 奇偶标志 4 AF Adjust Flag 辅助进位标志 6 ZF Zero Flag 零标志(结果是否为0) 7 SF Sign Flag 符号标志(结果正负) 11 OF Overflow Flag 溢出标志 最常用的: CF - 无符号运算溢出 ZF - 结果是否为零(用于比较) SF - 结果的符号位 OF - 有符号运算溢出

4.2 标志位示例

例1:1 - 1 = 0 执行后:ZF = 1(结果为零) 例2:-1 + 1 = 0(有符号) 执行后:ZF = 1, CF = 1(产生进位) 例3:5 - 10 = -5 执行后:SF = 1(结果为负) 例4:127 + 1 = 128(8位有符号) 实际结果:-128(溢出!) 执行后:OF = 1(有符号溢出)

5. x64寄存器扩展

5.1 64位寄存器

x64在x86基础上扩展: 原有寄存器扩展到64位: RAX, RBX, RCX, RDX RSP, RBP, RSI, RDI RIP, RFLAGS 新增8个通用寄存器: R8, R9, R10, R11, R12, R13, R14, R15 每个新寄存器也有低位访问: R8 → R8D (低32位) → R8W (低16位) → R8B (低8位)

5.2 x64调用约定

Windows x64调用约定: 参数1: RCX 参数2: RDX 参数3: R8 参数4: R9 其余参数:通过栈传递 返回值:RAX Linux x64调用约定: 参数1: RDI 参数2: RSI 参数3: RDX 参数4: RCX 参数5: R8 参数6: R9 其余参数:通过栈传递 返回值:RAX

6. 段寄存器

段寄存器: CS - 代码段:存放代码的内存段 DS - 数据段:存放数据的内存段 SS - 栈段:存放栈的内存段 ES - 附加段:额外的数据段 FS - 附加段:Windows下指向TEB/TIB GS - 附加段:Linux x64下用于TLS 在32位保护模式下,段寄存器存放"段选择子" 在64位模式下,大多数段寄存器基址为0(平坦内存模型)

7. 寄存器使用总结

记忆口诀: "累加器做运算,基址寄存器找地址, 计数器管循环,数据寄存器帮乘除。 栈指针在栈顶,基址指针在栈底, 源索引取数据,目的索引放数据。 指令指针最重要,控制程序往哪跑。" 关键点: 1. EAX通常存返回值 2. ECX用于循环计数 3. ESP/EBP用于栈操作 4. EIP决定下一条指令 5. 标志位影响条件跳转

8. 练习题

练习1:寄存器识别(难度:★☆☆☆☆)

说出以下寄存器的主要用途:

  • EAX
  • ESP
  • ECX

练习2:标志位理解(难度:★★☆☆☆)

执行 5 - 5 后,哪个标志位会被设置为1?

练习3:寄存器关系(难度:★★☆☆☆)

如果RAX = 0x123456789ABCDEF0,求EAX, AX, AL的值?


9. 小结

[CPU基础] 1. CPU = 控制单元 + ALU + 寄存器 2. 取指令 → 解码 → 执行 → 存储 [x86寄存器] 3. 通用寄存器:EAX, EBX, ECX, EDX 4. 指针寄存器:ESP, EBP, ESI, EDI 5. 特殊寄存器:EIP, EFLAGS [标志位] 6. ZF - 零标志 7. SF - 符号标志 8. CF - 进位标志 9. OF - 溢出标志 [x64扩展] 10. 扩展到64位:RAX, RBX... 11. 新增:R8-R15

下一篇预告:Day 3 - 内存与寻址模式


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/4 23:51:40

维修SEW变频器MC07A110-503-4-01 08282781

SEW变频器 MC07A110-503-4-01 08282781 详细技术解析与应用指南 1. 产品概述与定位 SEW-EURODRIVE是全球领先的驱动技术供应商,其产品广泛应用于自动化、物料输送、工业生产和各种机械设备中。型号 MC07A110-503-4-01 属于SEW MOVIMOT 系列变频器,这是…

作者头像 李华
网站建设 2026/5/16 19:47:10

SEW变频器MC07A450-503-4-01 08283494

SEW变频器 MC07A450-503-4-01 (序列号 08283494) 详细技术解析与应用指南一、 设备概述与型号解读品牌与系列: SEW-EURODRIVE 是国际知名的驱动技术解决方案供应商。该变频器属于 SEW 的 MOVIMOT 系列,该系列以其紧凑型设计、强大的功能和灵活性著称&…

作者头像 李华
网站建设 2026/5/14 22:16:38

13. 数组

1.数组简介 2.数组的访问与遍历 3.多维数组 4.数组的注意事项1.数组简介 1).数组简介数组是C中一种"存储相同数据类型元素的连续内存集合", 可以把它想象成一排编号的储物柜: 每个储物柜(数组元素)类型相同, 有唯一的编号(下标), 且位置连续a.数组的大小在定义时必须…

作者头像 李华
网站建设 2026/5/10 17:07:37

SCI制图——火山图简介(一)

一、什么是火山图?——转录组与蛋白组数据分析的标配图表SCI领域的论文,尤其是涉及转录组测序或蛋白质组学的研究,您一定见过这样一张图:成千上万个散点分布在一个平面上,它们像喷发的岩浆一样向两侧上方扩散&#xff…

作者头像 李华
网站建设 2026/5/14 8:37:41

降AI不伤专业术语?2026年实测这2款工具做到了

降AI不伤专业术语?2026年实测这2款工具做到了 很多同学担心:用降AI工具处理后,专业术语会不会被改乱? 我测试了几款工具,结论是:选对工具,专业术语基本不会变。 为什么专业术语容易被改乱&…

作者头像 李华