1

我正在使用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 上?是否有特定的命令来执行此操作?

提前致谢

4

1 回答 1

2

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

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


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

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

  • “位”始终表示单个 0 或 1 值。这个问题的标题与您在正文中提出的问题不符。

  • “字符串”通常表示对可打印字符串进行编码的 ASCII(或 UTF8 或 UTF16)字节序列。例如char *str="Hello World!";(即不是任意二进制文件。)您可以说“一串字节”,这似乎就是您在谈论的内容。

  • “数组”是一系列元素,就像uint8_t arr={0xA2, 0x02, 0x15, 0xFF}; 这似乎是你在谈论的:一个字节数组。

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


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

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

于 2016-01-22T00:23:37.887 回答