在2的补码世界中,可以通过取1的补码(所有位反转)并加1来获得整数的否定.例如,在8位世界中:

A: 0x00000002 ; my number

~A: 0xFFFFFFFD ; 1's complement of my number

-A: 0xFFFFFFFE ; 2's complement of my number (negative A)

要减去A-B,我们肯定可以添加负数A(-B):

NOT B ; invert each bit in the 8-bit value, B

ADD B, 1 ; add 1, giving the 2's complement negated B

ADD A, B

当然,在我添加它之前,我必须修改B(否定它).如果我希望B保持完整怎么办?

PUSH B ; save B

NOT B ; invert each bit in the 8-bit value, B

INC A ; add 1, giving the 2's complement negated B

ADD A, B

POP B ; restore B

要么

NOT B ; invert each bit in the 8-bit value, B

INC A ; add 1, giving the 2's complement negated B

ADD A, B

NOT B ; restore B

这样才行.但是只有SUB指令会不会更容易?

SUB A, B

如果你正在编写汇编语言来做很多算术,你更喜欢哪种方法?而且,在第一种情况下,我使用了INC A指令.我可以在没有INC的情况下离开并且只使用ADD A,但是在许多微处理器上,ADD A,1要求我从指令存储器中取出更多来执行以获得立即的1值.因此,提供INC,因为这种操作是如此常见.

当微处理器设计者确定具有哪种指令集时,他们会考虑最常用的操作类型.减法很常见,因此SUB指令非常方便.因此,它几乎存在于您将找到的任何指令集中.指令集中还有其他指令,其存在的原因不太明显.例如,x86具有XLAT指令,以及所有“字符串”指令,LODS,STOS等.当我可以使用MOV和INC等完成所有工作时,为什么它们存在?因为有人认为这些操作很常见,值得单一指令.

因此,与CPU实现的许多其他指令一样,SUB指令背后的目的是提供更快(执行时间)和更简单的方式来执行最常在软件中执行的操作,并与实际限制如何实现可以实现许多指令.

c语言中sub是什么指令,汇编 – SUB指令的目的是什么?相关推荐

  1. c语言中sub指令,汇编_指令_SUB

    通俗易懂的来讲讲DOM DOM是所有前端开发每天打交道的东西,但是随着jQuery等库的出现,大大简化了DOM操作,导致大家慢慢的"遗忘"了它的本来面貌.不过,要想深入学习前端知识 ...

  2. 汇编语言中xor指令_汇编语言XOR指令:对两个操作数进行逻辑(按位)异或操作(推荐)...

    汇编语言 汇编语言(assembly language)是一种用于电子计算机.微处理器.微控制器或其他可编程器件的低级语言,亦称为符号语言.在汇编语言中,用助记符代替机器指令的操作码,用地址符号或标号 ...

  3. 汇编语言中xor指令_汇编各类指令用法及含义分析 - 全文

    什么是汇编语言 汇编语言(assembly language)是一种用于电子计算机.微处理器.微控制器或其他可编程器件的低级语言,亦称为符号语言.在汇编语言中,用助记符(Mnemonics)代替机器指 ...

  4. linux汇编语言cmp,汇编语言中cmp指令用法笔记与总结

    这篇文章主要介绍了汇编语言中cmp指令用法,结合实例形式总结分析了汇编语言cmp指令基本功能.使用方法及操作注意事项,需要的朋友可以参考下 本文实例讲述了汇编语言中cmp指令用法.分享给大家供大家参考 ...

  5. c语言loop指令,汇编语言中loop指令的使用

    现在在学习汇编,感觉挺有意思的!,我就把学习的东西写下来吧,当作以后可以学习的笔记- loop指令的格式是:loop标号,cpu执行loop指令的时候,要进行两步操作 1:(cx)=(cx)-1 2: ...

  6. 计算机汇编指令mov和mova,汇编语言中mov和lea指令的区别详解

    指令(instruction)是一种语句,它在程序汇编编译时变得可执行.汇编器将指令翻译为机器语言字节,并且在运行时由 CPU 加载和执行. 一条指令有四个组成部分: 标号(可选) 指令助记符(必需) ...

  7. 汇编语言中xor指令_汇编语言XOR指令:对两个操作数进行逻辑(按位)异或操作...

    XOR 指令在两个操作数的对应位之间进行(按位)逻辑异或(XOR)操作,并将结果存放在目标操作数中: XOR destination, source XOR 指令操作数组合和大小与 AND 指令及 O ...

  8. 汇编语言中sbb是什么意思_汇编语言里 sub是 什么功能?

    汇编语言里 sub是 什么功能?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 汇编语言里 sub是 什么功能? 是减法 ...

  9. 汇编语言中PTR的含义及作用

    汇编语言中PTR的含义及作用 mov ax,bx ;是把BX寄存器"里"的值赋予AX,由于二者都是word型,所以没有必要加"WORD"    mov ax,w ...

  10. 汇编语言中b和bl关键字的区别

    汇编语言中b和bl关键字的区别是什么? b save_boot_params bl v7_arch_cp15_set_l2aux_ctrl b是普通的跳转语句,跳到save_boot_params之后 ...

最新文章

  1. poj 3254 Corn Fields 状态压缩dp
  2. linux java ocr_Linux环境如何支持使用tess4j进行ORC
  3. HtmlAgilityPack 使用
  4. PAYPAL 支付,sandbox测试的时候遇到异常:请求被中止: 未能创建 SSL/TLS 安全通道,以及解决方法。...
  5. 精美UI版iApp对接hybbs论坛功能APP源码
  6. MacOS安装app提示已损坏修复指令
  7. sklearn 细节 —— LinearRegression、Ridge
  8. re矩阵论_矩阵论 [张凯院,徐仲 等编著] 2013年版
  9. TotalFinder for Mac(Finder增强工具)v1.14.1
  10. java 权重_java的权重匹配算法技术?
  11. Linux调试智能卡环境搭建(二),其中包含Linux编译链接动态库相关
  12. Esri大赛必备:3度带6度带中央经线及带号换算问题
  13. 抢先体验Drive 2.0 Beta,按需同步,释放电脑空间
  14. 972_MISRA C 2004规范解读1
  15. 欢迎体验 | Android 12 开发者预览版 3
  16. ASO优化含义篇:积分墙是什么?
  17. 《Adobe Flash CS6中文版经典教程》——1.9 预览影片
  18. 7.7.4 积分卡管理系统示例
  19. java中float和double为什么会转为科学记数法?
  20. iPad3/iPad2/iPad 5.1.1完美越狱WIN版详细教程

热门文章

  1. C++的gets和puts
  2. 向 3D 城市模型添加外观
  3. mysql 插入多条值_mysql一次性插入多条数据
  4. 【Android】关于Call requires API level **(current min is **)却没有错误提示及抛异常...
  5. 医师计算机考试,医师资格考试机考-计算机作答的操作指导
  6. PyTorch中通过torch.save保存模型和torch.load加载模型介绍
  7. android系统定制教程,Android系统DIY修改 定制第三方ROM教程
  8. 系统地学习打字(个人见解)
  9. 三坐标检测之精密零件测量的恒温时间
  10. MAC 清除 DNS 缓存