有人可以向我解释以下汇编代码的输出值吗

Can someone explain me the output values for the below assembly code

谁能给我解释一下下面汇编代码的输出值。比如我怎样才能找到解决方案?

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 

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

  • x86
  • 中没有 Addi
  • 意图似乎是将 esi 增加 2
  • add 命令影响 CF,并且 rcr 大概期望从上一次迭代 CF

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


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

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

  • What's the purpose of the rotate instructions (ROL, RCL on x86)?
  • What is the difference between RCR and ROR?

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

的初始值