算术运算指令
作者: 来源: 发布日期:2007-04-25 | |
该组指令的操作数可以是8位、16位和32位(80386+)。当存储单元是该类指令的操作数时,该操作数的寻址方式可以是任意一种存储单元寻址方式。 1、加法指令 、加法指令ADD(ADD Binary Numbers Instruction) 指令的格式:ADD Reg/Mem, Reg/Mem/Imm 受影响的标志位:AF、CF、OF、PF、SF和ZF 指令的功能是把源操作数的值加到目的操作数中。 、带进位加指令ADC(ADD With Carry Instruction) 指令的格式:ADC Reg/Mem, Reg/Mem/Imm 受影响的标志位:AF、CF、OF、PF、SF和ZF 指令的功能是把源操作数和进位标志位CF的值(0/1)一起加到目的操作数中。 、加1指令INC(Increment by 1 Instruction) 指令的格式:INC Reg/Mem 受影响的标志位:AF、OF、PF、SF和ZF,不影响CF 指令的功能是把操作数的值加1。 、交换加指令XADD(Exchange and Add) 指令的格式:XADD Reg/Mem, Reg ;80486+ 受影响的标志位:AF、CF、OF、PF、SF和ZF 指令的功能是先交换两个操作数的值,再进行算术“加”法操作。 例5.3 已知有二个32位数d1和d2(用数据类型DD说明),编写程序片段把d2的值加到d1中。 解:32位数d1和d2在内存中如下所示。 …… …… …… 方法1:用16位寄存器编写程序 MOVAX, word ptr d1;由于d1是双字类型,必须使用强制类型说明符。以下同。 MOVDX, word ptr d1+2;(DX,AX)构成一个32位数据 ADDAX, word ptr d2;低字相加 ADCDX, word ptr d2+2;高字相加。在低字相加时,有可能会产生“进位” MOVword ptr d1, AX;低字送给d1的低字 MOVword ptr d1+2, DX;高字送给d1的高字 方法2:用32位寄存器编写程序 MOVEAX, d1 ADDEAX, d2 MOVd1, EAX 从上面两段程序不难看出:用32位寄存器来处理32位数据显得简单、明了,而16位微机虽然也能处理32位数据,但做起来就要复杂一些。 下面是学习和掌握加法类指令的控件,可模拟执行ADD、ADC、INC、XADD、CLC、STC和CMC等指令。用鼠标左键单击寄存器列表框中指定的寄存器,则可修改其值。后面其它控件的有关操作与此相一致,不再说明。 |
相关热门文章
给主人留下些什么吧!~~
评论热议
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义