• [转译][马基 杰斯特(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 指令

  • 相关阅读:
    Windows Svr 2008 Ent R2 性能计数器显示不全
    SQL Server的keepalive
    C语言字符串常见操作-strcpy、strlen、strcat和strcmp实现
    计算机中数据的编码方式
    OC中的排序方法
    关于C语言内存对齐
    C语言内存管理总结-野指针
    Objective-C基础学习笔记(九)-Foundation
    Objective-C基础学习笔记(八)-内存管理-autorelease使用-property创建对象的内存管理-循环引用的内管管理
    Objective-C基础学习笔记(七)-分类-Category-类的本质-load和+initialize方法-SEL数据
  • 原文地址:https://www.cnblogs.com/strawhatboy/p/12320719.html
Copyright © 2020-2023  润新知