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


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

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

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

    译文:

    "向减少对环境有害的消费模式的生活方式的转变很有必要" ---- Maurice Strong

    简介

    接下来我将介绍的一系列的指令都会非常相像,他们都是与移位相关的操作

    为了更好的解释移位的过程,让我们拿d0为例,然后假定它里面是0000004C,来康康它里面的一个字节 4C:

        0100 1100

    移位时,有两个方向,向左移位或者向右移位,所以如果我们把字节 4C向左移一位的话:

      < 1001 1000 <

    你可以看到所有的01都向左移动了一位,如果我们把4C向右移动一位的话:

      > 0010 0110 >

    所有的位都向右移动了一位,这就是移位的基本思路

    逻辑移位和算术移位

    当我们向左或者向右移位的时候,会多出来一个新的空位,比如:

        1100 1100

    如果向右移动一位的话:

      > ?110 0110 >

    由于向右移位,最左边的那个空位 (用?标识) 出现了,问题是,它应该被填上0还是1呢,这就要由它是逻辑移位还是算术移位来决定了

    当我们使用逻辑移位时,将永远是用0来填充:

      > 0110 0110 >

    而当我们使用算术移位时,结果将由MSB (最高有效位) 来决定,让我们看看在移位之前:

        1100 1100  

    如你所见,MSB1,当算术移位之后:

      > 1110 0110 >

    MSB仍然还是1。如果MSB原本是0

        0100 1100  

    那么算术移位之后:

      > 0010 0110 >

    MSB仍然还是0

    下面是一个逻辑右移的图示:

    下面是一个算术右移的图示:

    对于左移来说,逻辑左移算术左移结果是一样的,LSB (最低有效位) 都会补充一个0

        1111 1111 

    逻辑左移或者算术左移之后:

      < 1111 1110 <

    不管LSB是什么,都会补充一个0

    目录
    上一篇:[转译][马基 杰斯特(MarkeyJester) 摩托罗拉68000 入门教程] 肆 - 正负 指令 | 4. EXT 指令
    下一篇:[转译][马基 杰斯特(MarkeyJester) 摩托罗拉68000 入门教程] 肆 - 正负 指令 | 6. LSL, LSR, ASL 和 ASR 指令

  • 相关阅读:
    <BackTracking> dfs: 39 40
    <Tree> 110 124
    <Tree.PreOrder> DFS 113, 129
    <Math> 50 367
    <String> 49 87
    Haproxy配置Rabbitmq集群负载均衡
    Rabbitmq镜像集群的搭建
    rabbitmq常用命令
    Linux安装rabbitmq
    Docker自定义网络
  • 原文地址:https://www.cnblogs.com/strawhatboy/p/12375892.html
Copyright © 2020-2023  润新知