有人可以向我解释以下汇编代码的输出值吗
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
.
的初始值
谁能给我解释一下下面汇编代码的输出值。比如我怎样才能找到解决方案?
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 中没有
- 意图似乎是将
esi
增加 2 add
命令影响CF
,并且rcr
大概期望从上一次迭代CF
Addi
不知道是否有一些汇编程序接受 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
.