如何将字节移动到数据寄存器中的特定位置?

时间:2014-11-19 05:28:04

标签: assembly motorola 68000 easy68k

我想将4个字节 $ B1,B2,B3,B4 一次一个地移入数据寄存器 D1

D1中我想要的值是 $ B1B2B3B4

哪些指示可以帮助我做到这一点?

3 个答案:

答案 0 :(得分:1)

我找到了一个使用LSL的解决方案(谢谢你,Chris Stratton)和SWAP:

MOVE.B      #$B1,D0
LSL         #8,D0
MOVE.B      #$B2,D0
SWAP        D0
MOVE.B      #$B3,D0
LSL         #8,D0
MOVE.B      #$B4,D0

答案 1 :(得分:1)

使用SWAP执行此操作毫无意义,只需结合移动,动作和轮班:

MOVE.B  #$B1, D0  ; D0 now $xxxxxxB1
LSL.L   #8, D0    ; $xxxxB100
ORI.B   #$B2, D0  ; $xxxxB1B2
LSL.L   #8, D0    ; $xxB1B200
ORI.B   #$B3, D0  ; $xxB1B2B3
LSL.L   #8, D0    ; $B1B2B300
ORI.B   #$B4, D0  ; $B1B2B3B4

也许它不会更短或更快,但至少我认为它更清晰。

答案 2 :(得分:0)

有时你可以直接谈论它:

MOVE.L #$B1B2B3B4,D0

(耸肩)

如果您需要节省内存或快速运行,有一些聪明的方法可以做你想要的。