zoukankan      html  css  js  c++  java
  • [转译][马基 杰斯特(MarkeyJester) 摩托罗拉68000 入门教程] 柒

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

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

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

    译文:


    "和平不代表着没有冲突。因为对立,分化和冲突是自然的规律" (对立统一规律 (雾) ---- 布莱恩特 麦吉尔 (Bryant McGill)

    简介

    这四个S**指令会根据有符号的运算结果设置或是擦除目标操作数,有点类似BGE, BGT, BLE 和 BLT指令

    SGE 指令

    SGE (Set on Greater than or Equal) - 大于等于 (≥) 时设置为1

    这条指令会去检查N (负结果) 和 V (溢出) 两个状态标志,如果它们同时是1或者同时是0,那么目的操作数会被置为1 (%11111111),否则,目的操作数会被置0 (%00000000)

    例子

    这条指令通过NV两个状态标志一起来检测计算结果是不是大于等于 (≥):

        cmpi.w     #$0020, d0
        sge.b      d1

    我们假定d0的内容是00009800CMP指令使用的长度是,所以会在00209800之间比较

    • 9800并不大于等于0020V会被擦除成0,而N会被设置为1,所以SGE指令会把d1的内容修改为 00000000

    如果我们假设d0的内容是00000492CMP指令使用的长度是,所以会在00200492之间比较

    • 0492大于0020,所以 VN都会被擦除成0SGE指令会把d1的内容修改为 000000FF

    SGT 指令

    SGT (Set on Greater Than) - 大于 (>) 时设置为1

    如果下面的条件中任何一个满足的话,目的操作数会被置为1 (%11111111),否则,目的操作数会被置0 (%00000000):

    1. ZNV的内容全都是0
    2. Z的内容是0并且NV的内容都是1

    例子

    这条指令通过ZNV三个状态标志一起来检测计算结果是不是大于 (>):

        cmpi.w     #$0020, d0
        sgt.b      d1

    我们假定d0的内容是00000020CMP指令使用的长度是,所以会在00200020之间比较

    • 0020等于0020,所以Z会被设置为1SGT指令会把d1的内容修改为 00000000

    如果我们假设d0的内容是00000492CMP指令使用的长度是,所以会在00200492之间比较

    • 0492大于0020Z,VN都会被擦除为0SGT指令会把d1的内容修改为 000000FF

    SLE 指令

    SLE (Set on Less than or Equal) - 小于等于 (≤) 时设置为1

    如果下面的条件中任何一个满足的话,目的操作数会被置为1 (%11111111),否则,目的操作数会被置0 (%00000000):

    1. Z的内容是0
    2. N的内容是0并且V的内容是1
    3. N的内容是1并且V的内容是0

    例子

    这条指令和SGE恰恰相反:

        cmpi.w     #$0020, d0
        sle.b      d1

    我们假定d0的内容是00009800CMP指令使用的长度是,所以会在00209800之间比较

    • 9800小于0020V会被擦除成0N会被设置为1SLE指令会把d1的内容修改为 000000FF

    如果我们假设d0的内容是00000492CMP指令使用的长度是,所以会在00200492之间比较

    • 0492并不小于等于0020VN都会被擦除为0SLE指令会把d1的内容修改为 00000000

    SLT 指令

    SLT (Set on Less Than) - 小于 (<) 时设置为1

    如果下面的条件中任何一个满足的话,目的操作数会被置为1 (%11111111),否则,目的操作数会被置0 (%00000000):

    1. N的内容是0并且V的内容是1
    2. N的内容是1并且V的内容是0

    例子

    这条指令和SGT恰恰相反:

        cmpi.w     #$0020, d0
        slt.b      d1

    我们假定d0的内容是00000020CMP指令使用的长度是,所以会在00200020之间比较

    • 0020等于0020VN都会被擦除为0SLT指令会把d1的内容修改为 00000000

    如果我们假设d0的内容是00008492CMP指令使用的长度是,所以会在00208492之间比较

    • 8492小于00208492 - 0020 = 8472V会被设置为0N会被设置为1SLT指令会把d1的内容修改为 000000FF

    目录
    上一篇:[转译][马基 杰斯特(MarkeyJester) 摩托罗拉68000 入门教程] 柒 - 条件指令及其他 | 2. SVC, SVS, ST & SF 指令
    下一篇:[转译][马基 杰斯特(MarkeyJester) 摩托罗拉68000 入门教程] 柒 - 条件指令及其他 | 4. 无符号比较设置 (SCC, SHI, SLS, SCS)

  • 相关阅读:
    奇葩的Failed to configure a DataSource: 'url' attribute is not specified and no embedded datasource could be configured.
    dubbo的本地存根
    已知w是一个大于10但不大于1000000的无符号整数,若w是n(n≥2)位的整数,则求出w的后n-1位的数。
    数字字符串转换成与其面值相同的长整形整数
    PHP实现MySQL的主键id自动重新自增排序
    四叶玫瑰数
    PHP动态实现从数据库中访问链接到标签a的herf中
    Proteus8.0的main.asm源代码使用
    Office 2010 安装和激活出错解决办法
    PHP实现文件读写中英文数据分割插入数组代码
  • 原文地址:https://www.cnblogs.com/strawhatboy/p/12544269.html
Copyright © 2011-2022 走看看