news 2026/6/9 23:38:19

算术运算指令

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
算术运算指令

Day 6: 算术运算指令

本章介绍CPU的算术运算指令,包括加法、减法、乘法、除法等基本运算。


1. 加法指令

1.1 ADD

; ADD 目标, 源 ; 目标 = 目标 + 源 add eax, 5 ; EAX = EAX + 5 add eax, ebx ; EAX = EAX + EBX add eax, [var] ; EAX = EAX + [var] add [var], eax ; [var] = [var] + EAX add dword [var], 10 ; [var] = [var] + 10 ; 影响标志位:CF, OF, SF, ZF, AF, PF

1.2 ADC(带进位加法)

; ADC - Add with Carry ; 目标 = 目标 + 源 + CF ; 用于多字节加法 ; 例:64位加法(在32位系统上) ; EDX:EAX + ECX:EBX add eax, ebx ; 低32位相加 adc edx, ecx ; 高32位相加(含进位)

1.3 INC

; INC - 加1 inc eax ; EAX++ inc byte [var] ; 字节加1 inc dword [var] ; 双字加1 ; 注意:INC不影响CF标志位! ; 这是和 add eax, 1 的区别

2. 减法指令

2.1 SUB

; SUB 目标, 源 ; 目标 = 目标 - 源 sub eax, 5 ; EAX = EAX - 5 sub eax, ebx ; EAX = EAX - EBX sub [var], eax ; [var] = [var] - EAX ; 影响标志位:CF, OF, SF, ZF, AF, PF

2.2 SBB(带借位减法)

; SBB - Subtract with Borrow ; 目标 = 目标 - 源 - CF ; 用于多字节减法 sub eax, ebx ; 低32位相减 sbb edx, ecx ; 高32位相减(含借位)

2.3 DEC

; DEC - 减1 dec eax ; EAX-- dec byte [var] ; 注意:DEC不影响CF标志位!

2.4 NEG

; NEG - 取负(求补码) ; 目标 = 0 - 目标 mov eax, 5 neg eax ; EAX = -5 (0xFFFFFFFB) mov eax, -10 neg eax ; EAX = 10

3. 乘法指令

3.1 MUL(无符号乘法)

; MUL 源 ; 隐式使用AL/AX/EAX作为另一个操作数 ; 8位乘法:AX = AL × 源 mov al, 10 mov bl, 20 mul bl ; AX = 10 × 20 = 200 ; 16位乘法:DX:AX = AX × 源 mov ax, 1000 mov bx, 100 mul bx ; DX:AX = 100000 ; 32位乘法:EDX:EAX = EAX × 源 mov eax, 100000 mov ebx, 100000 mul ebx ; EDX:EAX = 10000000000 ; 结果可能是操作数的两倍大小!

3.2 IMUL(有符号乘法)

; 单操作数形式(类似MUL) imul ebx ; EDX:EAX = EAX × EBX(有符号) ; 双操作数形式 imul eax, ebx ; EAX = EAX × EBX ; 三操作数形式 imul eax, ebx, 10 ; EAX = EBX × 10 imul eax, [var], 5 ; EAX = [var] × 5 ; 三操作数形式最灵活!

4. 除法指令

4.1 DIV(无符号除法)

; DIV 源 ; 被除数隐式在AX/DX:AX/EDX:EAX中 ; 8位除法:AL = AX ÷ 源, AH = 余数 mov ax, 100 mov bl, 7 div bl ; AL = 14, AH = 2 ; 16位除法:AX = DX:AX ÷ 源, DX = 余数 mov dx, 0 mov ax, 10000 mov bx, 100 div bx ; AX = 100, DX = 0 ; 32位除法:EAX = EDX:EAX ÷ 源, EDX = 余数 mov edx, 0 ; 清零高位!重要! mov eax, 1000000 mov ebx, 7 div ebx ; EAX = 142857, EDX = 1

4.2 IDIV(有符号除法)

; IDIV 源 ; 有符号除法 ; 需要先扩展符号位 mov eax, -100 cdq ; 符号扩展EAX到EDX:EAX mov ebx, 7 idiv ebx ; EAX = -14, EDX = -2 ; 符号扩展指令: ; CBW - AL → AX ; CWD - AX → DX:AX ; CDQ - EAX → EDX:EAX ; CQO - RAX → RDX:RAX (x64)

4.3 除法注意事项

除法异常(Divide Error,中断0)发生条件: 1. 除数为0 2. 商太大,无法存放 例如: mov ax, 0xFFFF ; AX = 65535 mov bl, 1 div bl ; 商65535,无法存入AL!异常! 预防方法: 1. 检查除数是否为0 2. 确保被除数不会太大

5. 比较指令

; CMP 操作数1, 操作数2 ; 执行减法但不保存结果,只设置标志位 cmp eax, ebx ; 等价于 sub eax, ebx,但不改变EAX cmp eax, 0 ; 检查EAX是否为0 cmp [var], 100 ; 比较内存值 ; 通常后面跟条件跳转 cmp eax, 10 jg greater ; if eax > 10, jump jl less ; if eax < 10, jump je equal ; if eax == 10, jump

6. 练习题

练习1:计算表达式(难度:★★☆☆☆)

计算 (15 + 7) * 3 - 10

练习2:除法求余(难度:★★☆☆☆)

计算 100 除以 7 的商和余数

练习3:64位加法(难度:★★★☆☆)

在32位模式下,计算两个64位数的和


7. 小结

[加法] 1. ADD - 普通加法 2. ADC - 带进位加法 3. INC - 加1(不影响CF) [减法] 4. SUB - 普通减法 5. SBB - 带借位减法 6. DEC - 减1(不影响CF) 7. NEG - 取负 [乘法] 8. MUL - 无符号乘法 9. IMUL - 有符号乘法 [除法] 10. DIV - 无符号除法 11. IDIV - 有符号除法 12. 商在EAX,余数在EDX [比较] 13. CMP - 比较(减法不保存)

下一篇预告:Day 7 - 逻辑与位操作指令


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

AI营销内容告别低效!原圈科技5步构建智能内容工坊

原圈科技针对AI营销内容生产普遍面临的“量大、耗时、同质化”困境&#xff0c;提出了由多智能体系统驱动的AI内容工坊解决方案。本文将分步拆解企业如何借鉴原圈科技的成熟方法论&#xff0c;通过五大步骤构建专属的自动化内容生产体系&#xff0c;实现策略、执行到风控的全链…

作者头像 李华
网站建设 2026/6/5 19:37:19

大众汽车推出全新“招募驾驶者”活动,邀请新一代人掌控生活。

大众汽车美国公司宣布&#xff0c;Drivers wanted&#xff08;“招募驾驶者”&#xff09;这一品牌活动将开启全新篇章&#xff0c;为大众汽车富有创意的历史注入新的活力。该活动将在超级碗比赛前亮相&#xff0c;邀请新一代消费者拥抱个性、保持好奇心&#xff0c;并在机会来…

作者头像 李华
网站建设 2026/6/7 0:26:00

【2026】 LLM 大模型系统学习指南 (47)

用 AI 搭建自己的应用 —— 从需求到落地的完整实操这门作业的核心是让你从 “使用 AI” 升级为 “用 AI 创造产品”—— 无需复杂的底层开发能力&#xff0c;借助生成式 AI 的辅助&#xff08;代码生成、逻辑设计、问题排查&#xff09;&#xff0c;从零搭建一个可实际使用的小…

作者头像 李华
网站建设 2026/6/5 13:43:49

从 WAIC 2025 看 AI 产业融合:Go 开发者如何抓住深水区新机遇

引言 2025 世界人工智能大会(WAIC)落下帷幕,但它抛出的产业信号却在科技圈持续发酵:当大模型不再满足于 “能说会道”,当具身智能机器人开始走进工厂车间,当国产集群算力成为行业标配,AI 显然已经告别了概念炒作的浅滩,正式挺进产业融合的深水区。 对于 Golang 开发者…

作者头像 李华
网站建设 2026/6/6 8:25:33

智谱AI开源GLM-Image:自回归+扩散双引擎驱动的多模态图像生成新范式

GLM-Image的发布标志着自回归架构在工业级图像生成领域的成功实践&#xff0c;其"语义生成细节精修"的混合架构设计为下一代多模态基础模型提供了重要的技术参考。对于开发者而言&#xff0c; 在AIGC技术快速发展的当下&#xff0c;图像生成领域正经历从单一架构向混…

作者头像 李华