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

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

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

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

译文:

"美德值千金" ---- 柏拉图 (Plato, 427-347 BC),古希腊伟大的哲学家

简介

EXG (交换) - 交换两个寄存器

这条指令能把两个数据寄存器或是地址寄存器里面的长字内容互相交换

例子

    exg.l      d0, d1

  • 如果d0的内容是00000000d1的内容是11111111,指令执行后,d0的内容会变成11111111,而d1的内容会变成00000000
  • 如果d0的内容是01234567d1的内容是FFEEDDCC,指令执行后,d0的内容会变成FFEEDDCC,而d1的内容会变成01234567
  • 如果d0的内容是ABCB9989d1的内容是00000100,指令执行后,d0的内容会变成00000100,而d1的内容会变成ABCB9989

嗯,差不多就是这样,它和swap指令一样简单。当然你可以把它用在地址寄存器上:

    exg.l      a0, a1
    exg.l      d4, a6
    exg.l      a2, d2

这条指令只能用来交换寄存器的长字内容,或是字节都是不支持的 (吃惊,问题来了,既然没有 exg.w 或是 exg.b 的写法,exg.l 为什么不干脆只写作 exg 呢?)

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

原文地址:https://www.cnblogs.com/strawhatboy/p/12310727.html