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

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

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

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

    译文:

    "我发明了无线的延长线" ---- 史蒂夫 赖特 (Steven Wright, 1955- ),美国演员、编剧、导演、制片人

    简介

    EXT (扩展) - 把数据寄存器做符号扩展

    这条指令能够把目的操作数中的一个字节MSB (最高有效位)扩展到一个,或者把目的操作数中的一个MSB扩展到一个长字

    例子

    从现在看是,你应该已经清楚符号数,还有它的正负数的表示,为了演示EXT指令的用法,让我们先从一个数据寄存器d0开始,假设它里面的内容是000000FC

    如果我们以字节长度来读取d0,那么我们会得到FC,也就是-4,然而如果我们以的长度去读取,得到的是00FC,是个正数

    这时EXT指令就要派上用场了,它能把符号数的符号从字节扩展到,或者从扩展到长字,比如:

        ext.w      d0

    这条指令执行后,d0的内容会变成0000FFFC

    这时,如果我们再以的长度去读取d0,获得的就是FFFC,也就是-4,然而,如果此时我们用长字的长度去读取d0,得到的是0000FFFC,还是个正数。那么让我们再在长字长度 (.l) 下用一次EXT指令:

        ext.l      d0

    现在d0的内容是FFFFFFFC,这时再以长字长度读取d0的话,就会得到FFFFFFFC,就仍是-4

    最后再来看看一个正数的例子,假设d0的内容是7FC0E024

    • 如果你以字节读取d0,得到的是24 (正数)
    • 如果你以读取d0,得到的是E024 (负数)
    • 如果你以长字读取d0,得到的是7FC0E024 (正数)

    执行这条指令:

        ext.w      d0

    为单位做了正扩展,现在d0的内容是7FC00024,其中的一个变成了正数0024,而以长字来读的话变成了7FC00024,还是正数,只是不是+24,然后:

        ext.l      d0

    符号从扩展到了长字,现在d0的内容是00000024,也就是+24

    注意:这条指令只能用在数据寄存器

    过程

    这条指令主要通过读取MSB来工作,比如,如果d0的内容是FEDCBA14,然后我们执行:

        ext.w      d0

    此时d0中的字节 14被读取:

        0001 0100

    如你所见,MSB0,那么这一就被往左扩展,如果我们看一下d0中的 BA14

        1011 1010 0001 0100

    ext.w 指令执行后,它会变成:

        0000 0000 0001 0100

    你会发现,MSB被扩展并且往左覆盖,直到一个的长度,现在d0的内容变成了 FEDC0014

    如果d0的内容是C1208489,执行下面这条命令:

        ext.l      d0

    那么 8489会被读取:

        1000 0100 1000 1001

    它的MSB1,指令执行后,这一会被向左扩展覆盖,直到一个长字的长度,从而使d0的内容从:

        1100 0001 0010 0000 1000 0100 1000 1001

    变成:

        1111 1111 1111 1111 1000 0100 1000 1001

    此时d0的内容变成了 FFFF8489

    目录
    上一篇:[转译][马基 杰斯特(MarkeyJester) 摩托罗拉68000 入门教程] 肆 - 正负 指令 | 3. NEG 指令
    下一篇:[转译][马基 杰斯特(MarkeyJester) 摩托罗拉68000 入门教程] 肆 - 正负 指令 | 5. 移位

  • 相关阅读:
    Gin 使用 websocket
    7天用Go从零实现Web框架Gee教程
    docker-compose 搭建 Redis Sentinel 测试环境
    关闭禁用 Redis 危险命令
    Redis Cluster 设置密码
    使用 twine 上传自己的 python 包到 pypi
    Redis 5.0.7 讲解,单机、集群模式搭建
    Redis 单机模式,主从模式,哨兵模式(sentinel),集群模式(cluster),第三方模式优缺点分析
    django 重写 mysql 连接库实现连接池
    编译安装httpd-2.4
  • 原文地址:https://www.cnblogs.com/strawhatboy/p/12370624.html
Copyright © 2011-2022 走看看