我有一小段(x86)程序集,我試圖弄清楚它的功能。在x86程序集中,如何在不進行比較操作的情況下設置零標誌(ZF)?
...
6: 81 ec 00 01 00 00 sub $0x100, %esp
c: 31 c9 xor %ecx , %ecx
e: 88 0c 0c mov %cl , (%esp, %ecx, 1)
11: fe c1 inc %cl
13: 75 f9 jne 0xe
....
它看起來像它的循環雖然直到「JNE」評估爲假,即,零標誌= 0(可能它把數字1,2,3 ...進棧??)
從我的短調查總成(IM在這個新)見不着你做一個比較操作(CMP)設置零標誌,但我沒有看到一個比較操作。
那麼,在什麼條件下它會打破這個循環?
好吧,這是有道理的。謝謝! – Robert
我想我除了'mov%cl,(%esp,%ecx,1)'之外都跟着所有。在英文中,我會說「在ESP + ECX的地址處將CX(CL)的低8位移入RAM中」,這是合理的,但'1'操作數是什麼?這真的是'數組[cl + 1] = cl'(堆棧溢出?)或者'array [cl] = cl + 1'?可能我錯過了x86彙編的一些細微差別,但我很好奇。 – mpontillo
1實際上是縮放偏移量的大小。所以它真的是數組[cl * 1] = cl。 –