68k如何添加/减去单个字节?

时间:2016-01-21 21:39:25

标签: assembly 68000 easy68k

我使用easy68k,我有一个字符串,我想为每个数字添加一个数字,所以它最终成为一个不同的字符串。是否有一个命令可以让我定位字符串中的特定字节?

例如:

        ORG $1000
START:             
        MOVE.B  str,D0
        ADD.B   #$20,D0
        MOVE.B  D0,str

str     DC.B   'ASDF'
        END    START     

我试图制作" ASDF"进入" asdf",但我当前的代码只允许我定位" ASDF"的第一个字节。这是" A",所以我的结果字符串现在是" aDSF",我怎么做到这样,字节就转移到D,S和F?是否有特定的命令来执行此操作?

提前致谢

1 个答案:

答案 0 :(得分:2)

一点只能是01。 0和1是base2数字中的唯一数字。

xor是一个没有从低位到高位进位的加法。这有帮助吗?然而,问题正文似乎与标题不匹配。

不幸的是,你的术语非常混乱。从您的母语翻译可能会失去许多技术意义。

  • A"数字"通常表示十进制或十六进制数字:0-9或0x0-0xF

  • A" bit" 始终表示a single 0 or 1 value。这个问题的标题与您在身体中所要求的内容并不匹配。

  • A" string"通常表示编码可打印字符串的ASCII(或UTF8或UTF16)字节序列。例如char *str="Hello World!";(即不是任意二进制文件。)你可以说"一串字节",这似乎就是你所说的。

  • 一个"数组"是一系列元素,如uint8_t arr={0xA2, 0x02, 0x15, 0xFF};这似乎是你所说的:一个字节数组。

如果您没有打算询问个别位,请编辑您的问题以重新编辑。

听起来更像是你有一个字节序列,并且你想为每个字节添加相同的值。您需要一个循环来执行此操作,因为没有SIMD指令集for m68k, accoding to google。 SIMD指令可以在向量寄存器的每个字节上并行执行多个单字节添加。 (比如x86' s PADDB vector instruction,你可以在向载波寄存器的所有16个元素广播0x20之后使用它。)

SIMD add是一个在元素边界从低位到高位进位中断的加法。