• [转译][马基 杰斯特(MarkeyJester) 摩托罗拉68000 入门教程] 肆


    注意:本文经过原作者授权转译,转载请标明出处

    原文地址:http://mrjester.hapisan.com/04_MC68/Sect04Part03/Index.html

    条件允许建议阅读原文,网上非中文资料还是较多,当作锻炼英文岂不美哉
    翻译若有不足之处欢迎批评指正

    译文:

    "对立,或者说是作用与反作用,在自然界中随处可见:在光与影之中,在暖与寒之间,在潮起潮落,在男和女,在万物生息,在每一次心跳,在流水与声音的波动,在向心力与离心力,在电与化学的亲和力。" ---- 拉尔夫 沃尔多 爱默生 (Ralph Waldo Emerson, 1803-1882),美国思想家、文学家,诗人

    简介

    NEG - 否定 (NEGate)

    这条指令会把目的操作数变成它的相反数,从正数变成负数,从负数变成正数

    例子

    在上一节中,我们康了正数和负数的表示方法。这条指令可以让你把一个正数变成它对应的负数,反之亦然

    好了,先来康康这个例子:

        neg.b      d0

    d0中的一个字节被取相反数了

    • 如果d0原本是00220002,指令执行后,d0的内容会变成002200FE

    你可能注意到d0中的最后一个字节02变成了FE,即从+2变成-2

    • 如果d0原本是FED0C4E4,指令执行后,d0的内容会变成FED0C41C

    你可能注意到d0中的最后一个字节E4变成了1C,即从-1C变成+1C

    正数变负数,负数变正数,基本就是这样,然而,在一些特殊的情况下,这条指令并不会起作用:

    • 如果d0原本是0890F300,指令执行后,d0的内容会变成0890F300
    • 如果d0原本是0890F380,指令执行后,d0的内容会变成0890F380

    首先第一个例子里用了00,而00是无所谓符号的,所以并没有对应的相反数,保持不变。对于第二个80的例子也差不多,不过解释起来有点复杂:

    • 如果去取7E的相反数,它就会变成82 (-7E),而82的相反数是7E
    • 如果去取7F的相反数,它就会变成81 (-7F),而81的相反数是7F
    • 如果去取80的相反数,它就会变成80 (-80),而80的相反数是80

    你可以看到,80似乎也有它类似于00的定位那样

        ... FC FD FE FF 00 01 02 03 04 ...
        ... 7C 7D 7E 7F 80 81 82 83 84 ...

    当然还是要记住00仍然在技术上是个正数,而80是个负数

    neg指令还可以用在内存上,或者通过地址寄存器用在内存上:

        neg.w      $00004000
        neg.l      (a2)
        neg.w      (a2)+
        neg.b      -(a2)
        neg.w      $0C(a2)

    注意:不能neg直接用在地址寄存器上:

        neg.l      a2            

    目录
    上一篇:[转译][马基 杰斯特(MarkeyJester) 摩托罗拉68000 入门教程] 肆 - 正负 指令 | 2. 有符号 和 无符号
    下一篇:[转译][马基 杰斯特(MarkeyJester) 摩托罗拉68000 入门教程] 肆 - 正负 指令 | 4. EXT 指令

  • 相关阅读:
    [树形dp] Jzoj P5814 树
    [快速幂][数学][dp] Jzoj P5813 计算
    [差分] Jzoj P5812 区间
    [贪心][模拟] Jzoj P5811 简单的填数
    如何用c++发出音乐
    网络流初步详解
    【纪中模拟2019.08.01】【JZOJ2644】数列
    【纪中模拟2019.08.02】【JZOJ1308】取数游戏
    2019.08纪中 XC谈OI学习方法论
    C++STL容器
  • 原文地址:https://www.cnblogs.com/strawhatboy/p/12365483.html
Copyright © 2020-2023  润新知