68k如何add/subtract个字节?

68k how to add/subtract individual bytes?

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

例如:

        ORG 00
START:             
        MOVE.B  str,D0
        ADD.B   #,D0
        MOVE.B  D0,str

str     DC.B   'ASDF'
        END    START     

我正在尝试将 "ASDF" 变成 "asdf",但我当前的代码只允许我定位 "ASDF" 的第一个字节,即 "A",所以我得到的字符串现在是 "aDSF",我该如何使字节内容移动到 D、S 和 F 上?是否有特定的命令来执行此操作?

提前致谢

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

xor是一个加法,没有从低位到高位的进位。这有帮助吗?不过,问题 body 似乎与标题不符。


不幸的是,您的术语非常混乱。可能很多技术含义在从您的母语翻译时丢失了。

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

  • A "bit" 总是表示a single 0 or 1 value。此问题的标题与您在 body.

  • 中提出的问题不符
  • A "string" 通常表示编码可打印字符串的 ASCII(或 UTF8 或 UTF16)字节序列。例如char *str="Hello World!";(即不是任意二进制。)你可以说 "a string of bytes",这似乎就是你在说什么。

  • 一个"array"是一个元素序列,比如uint8_t arr={0xA2, 0x02, 0x15, 0xFF};这好像就是你说的:一个字节数组。

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


这听起来更像是你有一个字节序列,并且你想为每个字节添加相同的值。您需要一个循环来执行此操作,因为没有 SIMD instruction set for m68k, accoding to google. A SIMD instruction could do multiple single-byte adds in parallel, on each byte of a vector register. (like x86's PADDB vector instruction,您可以在将 0x20 广播到向量寄存器的所有 16 个元素后使用它。)

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