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


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

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

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

    译文:

    "我当时想要找到一种事半功倍的方法,但是最终我又回到了起点" ---- 刘易斯 卡罗尔 (Lewis Carroll, 1832-1898),英国数学家、逻辑学家、童话作家、牧师、摄影师

    简介

    这一节我们会介绍两条乘法指令,之所以有两条,是因为其中一条用于无符号数,而另一条用于有符号数

    MULU 指令

    MULU (Unsigned MULtiply) - 无符号乘

    这条指令会把目的操作数里的一个源操作数里的一个相乘,结果以长字的长度放在目的操作数

    例子

    这是个很简单的乘法的例子:

        mulu.w     #$0010, d0

    假定d0之前的内容是00200040,指令执行时,d0中的一个被读取 (0040),然后乘以0010

        0040 x 0010 = 00000400

    结果然后会被保存到d0中,于是d0中的内容就变成了00000400,你可能注意到d0里原本的高位的 0020被无视而且被覆盖掉了,请记住这一点

    再来康康另一个例子,这次假定d0的内容是FFFFF800

        mulu.w     #$0087, d0

    d0中的一个被读取 (F800),然后乘以0087

        F800 x 0087 = 0082C800

    结果然后会被保存到d0中,于是d0中的内容就变成了0082C800。请记住,MULU指令是无符号乘,所以F8000087都会被当作无符号数 (正数)

    目的操作数必须是一个数据寄存器,而源操作数可以是立即数,数据寄存器,内存地址或是地址寄存器表示的内存地址,比如:

        mulu.w     d1, d0
        mulu.w     $00000010, d0
        mulu.w     (a0), d0

    在上面的例子中,d0的一个会和源操作数中的一个相乘,结果总是以长字的长度存放到d0中去

    对于源操作数不能直接使用一个地址寄存器:

        mulu.w     a0, d0     

    最后,指令指定的长度只能是 (.w),你不能使用字节或者长字

    MULS 指令

    MULS (Signed MULtiply) - 有符号乘

    这条指令和MULU几乎一样 (包括指令的语法格式),当然了,除了一点,那就是源操作数目的操作数都会被当成有符号数不是无符号数,所以从8000FFFF的数都是负数

    例子

    假定d0的内容是0000FFC0

        muls.w     #$0010, d0

    于是d0中的FFC0乘以0010

        FFC0 x 0010 = FFFFFC00

    注意这里FFC0是被当作负数处理的,由于0010是个正数,所以事实上所做的乘法是:

       -0040 x +0010 = -00000400

    所以d0中的内容就变成了FFFFFC00 (-400)

    这就是MULUMULS唯一的区别了

    目录
    上一篇:[转译][马基 杰斯特(MarkeyJester) 摩托罗拉68000 入门教程] 肆 - 正负 指令 | 7. ROL 和 ROR 指令
    下一篇:[转译][马基 杰斯特(MarkeyJester) 摩托罗拉68000 入门教程] 肆 - 正负 指令 | 9. DIVU 和 DIVS 指令

  • 相关阅读:
    C++ 17
    C++ 11
    mysql统计某一个数据库中有几张表
    poj2636---Electrical Outlets(插线板)
    poj2608---几个字母映射到同一个数字
    poj2583---Series Determination
    poj2578---三个数中找出第一个大于168的
    poj2521---lose money
    poj2538---字符匹配(映射)
    poj2509---抽k根烟就换一支,求能抽烟的总数
  • 原文地址:https://www.cnblogs.com/strawhatboy/p/12400737.html
Copyright © 2020-2023  润新知