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


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

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

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

    译文:

    "当我小的时候,父母告诉我'吃完别浪费,中国和印度的孩子还在饿肚子',现在我跟我的女儿们说:'快把作业做完,中国和印度的人们正在如狼似虎地抢走你们的工作'" ---- 托马斯 弗里德曼 (Thomas Friedman),《世界是平的》的作者

    简介

    在上一节,我给大家留了一串指令。在这一节,让我们康康答案与你的解答是否有出入

    答案

        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

        move.w     #$0010, d0

    0010被写入到d0中,d0现在的内容是00000010

        move.w     d0, $00000040

    d0中的一个被复制到内存中地址为00000040的地方,0010被复制了,00被复制到内存地址0000004010被复制到内存地址00000041

        move.w     d0, d1

    d0中的一个被复制到d1d1现在的内容是00000010

        add.w      d1, d1

    d1中的一个被加到d1中 (加自己),0010 + 0010 = 0020d1现在的内容是00000020

        add.w      d0, d1

    d0中的一个被加到d1中,0020 + 0010 = 0030d1现在的内容是00000030

        sub.w      $00000040, d1

    内存中00000040位置的一个被复制出来并且去减d1,内存中0000004000000041位置的0010被读取为0010,然后去减d10030 - 0010 = 0020d1现在的内容是00000020

        swap       d1

    交换d1d1现在的内容是00200000

        move.w     d0, d1

    d0中的一个被复制到d1d1现在的内容是00200010

        movea.l    #$00000040, a4

    00000040写入到地址寄存器a4

        add.w      (a4), d1

    内存中a4内容所指向的那个被加到d1中。a4中的内容是00000040,所以内存中0000004000000041位置的0010被读取为0010,再去加上d10010 + 0010 = 0020d1现在的内容是00200020

        move.w     d1, (a4)

    一个d1中的被复制到a4的内容所指向的内存中。0020被复制了,所以00000040位置变成了0000000041位置变成了20

        exg.l      d1, d0

    交换d1d0的内容,现在d1的内容是00000010d0的内容是00200020

        swap       d0

    交换d0d0现在的内容是00200020 (内容没有发生变化,因为它里面高位和低位的内容是一样的)

        clr.w      d0

    擦除d0中的一个,现在d0的内容是00200000

    好了,结果就是00200000,你做对了吗?如果没有的话没关系,只要你知道每个指令都是干什么的,做对是早晚的事

    目录
    上一篇:[转译][马基 杰斯特(MarkeyJester) 摩托罗拉68000 入门教程] 贰 - 基本指令 | 5. CLR 指令
    下一篇:[转译][马基 杰斯特(MarkeyJester) 摩托罗拉68000 入门教程] 叁 - 位 指令 | 1. NOT 指令

  • 相关阅读:
    词法分析程序~总结
    0916 词法分析程序
    0909 编译原理
    1029 文法分析
    0916 编译原理第二次上机作业
    0909 编译原理第一次上机作业
    复利计算之回顾并总结这三次实验
    复利计算之说明代码运行结果和功能点
    操作系统之实验0 了解和熟悉操作系统
    12-16 实验四 递归下降语法分析程序设计
  • 原文地址:https://www.cnblogs.com/strawhatboy/p/12320719.html
Copyright © 2020-2023  润新知