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

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

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

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

    译文:

    "有三件事是确定的: 死亡,税收和数据丢失。猜猜看哪个先发生了?" ---- 大卫 迪克逊 (David Dixon) 1998 年由Salon.com 赞助的 Haiku Error Message 21st 挑战的优胜者

    简介

    CLR (清除) - 清除一个操作数

    这条指令会把目的操作数里的内容擦除,变成 0

    例子

    这条指令很简单:

        clr.b      d0

    • 如果d0原本的内容是01234567,指令执行后d0的内容会变成01234500
    • 如果d0原本的内容是ABCB9989,指令执行后d0的内容会变成ABCB9900

    因为上面我们使用的是字节长度 (.b),所以最后一个字节被清除为 0 了

    再比如:

        clr.w      d0

    • 如果d0原本的内容是01234567,指令执行后d0的内容会变成01230000
    • 如果d0原本的内容是ABCB9989,指令执行后d0的内容会变成ABCB0000

    因为上面我们使用的是长度 (.w),所以最后一个被清除为 0 了

    同理:

        clr.l      d0

    • 如果d0原本的内容是01234567,指令执行后d0的内容会变成00000000
    • 如果d0原本的内容是ABCB9989,指令执行后d0的内容会变成00000000

    因为上面我们使用的是长字长度 (.l),所以最后一个长字被清除为 0 了

    你也可以把这条指令用在内存地址上 (直接使用,或是通过地址寄存器间接使用),比如:

        clr.w      $00201000
        clr.b      $00201FFF
        clr.w      (a4)
        clr.l      $1C(a2)

    然而,你不能把它直接用在地址寄存器上:

        clr.l      a0         

    当然有可以代替的操作:

        clr.l      d0
        move.l     d0, a0

    这里难道不是应该使用 movea.l 吗?或者干脆直接movea.l     #$00000000, a0 也是一样的擦除效果

    家庭作业

    下面是一系列指令,我希望你能够一条一条的过一遍:

        move.w     #$0010, d0
        move.w     d0, $00000040
        move.w     d0, d1
        add.w      d1, d1
        add.w      d0, d1
        sub.w      $00000040, d1
        swap       d1
        move.w     d0, d1
        movea.l    #$00000040, a4
        add.w      (a4), d1
        move.w     d1, (a4)
        exg.l      d1, d0
        swap       d0
        clr.w      d0

    每个数据寄存器初始值都是00000000,这串指令执行后,d0里的内容会是多少呢?

    答案见下一节,记得先自己做一遍再看答案哦

    目录
    上一篇:[转译][马基 杰斯特(MarkeyJester) 摩托罗拉68000 入门教程] 贰 - 基本指令 | 4. EXG 指令
    下一篇:[转译][马基 杰斯特(MarkeyJester) 摩托罗拉68000 入门教程] 贰 - 基本指令 | 6. 家庭作业答案 - 2

  • 相关阅读:
    Tinyhttpd 代码学习
    Windows noinstall zip 安装MySQL。
    Java 优先队列
    Java Comparable 和 Comparator
    Centos6.6下安装Python3.5
    对象的实现
    对象接口
    适配器模式
    java基础学习(一)
    【MongoDB】如何注册windows服务
  • 原文地址:https://www.cnblogs.com/strawhatboy/p/12315880.html
Copyright © 2011-2022 走看看