news 2026/7/4 16:13:57

算术运算指令

作者头像

张小明

前端开发工程师

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/7/1 20:24:56

【小程序毕设源码分享】基于springboot+小程序的学课助手”小程序的设计与实现(程序+文档+代码讲解+一条龙定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/6/30 3:55:46

【小程序毕设全套源码+文档】基于微信小程序的食堂点餐系统设计与实现(丰富项目+远程调试+讲解+定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/6/30 18:58:12

阻抗电路板公差控制:如何保证一致性

阻抗电路板的核心竞争力不是 “样板达标”&#xff0c;而是 “量产一致性”。很多项目样板阻抗完美&#xff0c;量产却大量超标&#xff0c;根源就是公差控制没做到位。​一、先搞懂&#xff1a;阻抗公差到底控制什么&#xff1f;阻抗公差&#xff08;如 10%&#xff09;不是单…

作者头像 李华
网站建设 2026/6/28 22:40:28

分布式事务在电商项目中的应用场景分析与实战

一、分布式事务概述1.1 什么是分布式事务&#xff1f;分布式事务是指在分布式系统中&#xff0c;由一组操作组成的、跨多个服务或数据库的事务。这些操作要么全部成功提交&#xff0c;要么全部回滚&#xff0c;以保证数据的最终一致性。在微服务架构下&#xff0c;传统的单数据…

作者头像 李华
网站建设 2026/6/29 5:12:15

面试必看:多数元素 II(摩尔投票法实战)

学习笔记&#xff1a;LeetCode 229. 多数元素 II&#xff08;摩尔投票法实战&#xff09; 题目描述 给定一个大小为 nnn 的整数数组&#xff0c;找出数组中所有出现次数超过 ⌊n/3⌋\lfloor n/3 \rfloor⌊n/3⌋ 的元素。 进阶约束&#xff1a;要求算法时间复杂度为 O(n)O(n)O…

作者头像 李华
网站建设 2026/7/3 13:26:01

桃子叶片病害数据集

1.分为三类健康的桃子叶片 &#xff0c;251张桃疮痂病一般&#xff0c;857张 桃疮痂病严重&#xff0c;770张

作者头像 李华