【问题标题】:Can someone explain me the output values for the below assembly code有人可以解释一下以下汇编代码的输出值吗
【发布时间】:2021-12-28 18:52:24
【问题描述】:

有人可以向我解释以下汇编代码的输出值吗?比如我怎样才能找到解决方案?

Arr Byte 5D, 2E, 97, 4B, A5 , 7E , 84 , 9A , 61 , 8B 

     mov ecx, 5
     mov esi, offset Arr 

LI:  rcr array[esi], 1 
     Addi esi,esi, 2 
     Loop LI 

【问题讨论】:

  • @AlexGuteniev 是的!现在我已经正确格式化了它
  • Addi esi, esi, 2 看起来不像 x86 命令。我假设add esi, 2 或者lea esi, [esi+2]。否则,它看起来像通过携带标志旋转数组中的一些字节。
  • @AlexGuteniev 这可能是 y86,一个奇怪的 x86 变体。
  • @fuz,我读过 y86,它是简化的 ISA,没有复杂的 x86 内容,例如 rcrloop

标签: assembly x86


【解决方案1】:

让我们将Addi esi,esi, 2 替换为lea esi, [esi+2],因为:

  • x86 中没有 Addi
  • 意图似乎是将esi 增加2
  • add 命令会影响CF,而rcr 可能会从上一次迭代中得到CF

不知道是否有一些汇编程序可以接受Addi


然后整个循环在Arr 的偶数索引元素中运行(假设索引是从零开始的)

RCR 通过CF(进位标志)循环位。在每个元素的八位中,每个元素都向较低的重要性移动,最低有效位被放入CF,最高有效位从CF中提取。另见:

知道了,你可以计算Arr元素的新值,除了第0个元素:你不知道CF的初始值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-29
    • 1970-01-01
    • 1970-01-01
    • 2016-09-28
    • 2016-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多