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

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

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

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

    译文:


    "诚信是美德的一部分也是社会中极为重要的一部分" ---- 托马斯 杰斐逊 (Thomas Jefferson, 1743-1826),美国第三任总统

    简介

    这些分支指令会在某个数值大于或是小于一个特定的值的时候去分支跳转。它们只和有符号数打交道,也就是说如果使用的是字节长度的话,80是最小值,而7F是最大值

    所以如果我们比较FE02的话,FE会被认为比02要小

    BGE 指令

    BGE (Branch on Greater than or Equal) - 大于等于 (≥) 时分支

    如果下面的条件中任何一个满足的话,目的操作数会被加到PC里,然后 m68k 会在PC里的新的地址处继续执行:

    1. NV状态标志内容都是0
    2. NV状态标志内容都是1

    否则的话,这条指令会被忽略

    例子

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

        cmpi.w     #$0020, d0
        bge.s      Is20orHigher
        move.w     #$0000, d0

      Is20orHigher:

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

    • 9800并不大于等于0020,所以指令会被忽略

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

    • 0492大于0020,所以 m68k 会跳转到Is20orHigher处继续执行

    BGT 指令

    BGT (Branch on Greater Than) - 大于 (>) 时分支

    如果下面的条件中任何一个满足的话,目的操作数会被加到PC里,然后 m68k 会在PC里的新的地址处继续执行:

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

    否则的话,这条指令会被忽略

    例子

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

        cmpi.w     #$0020, d0
        bgt.s      IsHigher
        move.w     #$0000, d0

      IsHigher:

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

    • 0020等于0020,所以指令会被忽略

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

    • 0492大于0020,所以 m68k 会跳转到IsHigher处继续执行

    BLE 指令

    BLE (Branch on Less than or Equal) - 小于等于 (≤) 时分支

    如果下面的条件中任何一个满足的话,目的操作数会被加到PC里,然后 m68k 会在PC里的新的地址处继续执行:

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

    否则的话,这条指令会被忽略

    例子

    这条指令和BGE恰恰相反:

        cmpi.w     #$0020, d0
        ble.s      Is20orLower
        move.w     #$0000, d0

      Is20orLower:

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

    • 9800小于0020,所以 m68k 会跳转到Is20orLower处继续执行

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

    • 0492并不小于等于0020,所以指令会被忽略

    BLT 指令

    BLT (Branch on Less Than) - 小于 (<) 时分支

    如果下面的条件中任何一个满足的话,目的操作数会被加到PC里,然后 m68k 会在PC里的新的地址处继续执行:

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

    否则的话,这条指令会被忽略

    例子

    这条指令和BGT恰恰相反:

        cmpi.w     #$0020, d0
        blt.s      IsLower
        move.w     #$0000, d0

      IsLower:

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

    • 0020等于0020,所以指令会被忽略

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

    • 8492小于0020,所以 m68k 会跳转到IsLower处继续执行

    目录
    上一篇:[转译][马基 杰斯特(MarkeyJester) 摩托罗拉68000 入门教程] 陆 - 条件分支 | 5. BVC & BVS (溢出条件分支) 指令
    下一篇:[转译][马基 杰斯特(MarkeyJester) 摩托罗拉68000 入门教程] 陆 - 条件分支 | 7. 无符号比较分支 (BCC, BHI, BLS, BCS)

  • 相关阅读:
    iOS开发网络篇—搭建本地服务器
    iOS开发网络篇—网络编程基础
    iOS开发多线程篇—基础知识 NSOperation
    iOS开发多线程篇—NSOperation基本操作
    iOS开发多线程篇—单例模式(ARC)
    iOS开发之多线程
    iOS开发多线程篇—GCD介绍
    iOS开发多线程篇—线程安全
    Object-C非正式协议与正式协议的区别
    objective-c中Category类别(扩展类)专题总结
  • 原文地址:https://www.cnblogs.com/strawhatboy/p/12508868.html
Copyright © 2011-2022 走看看