嵌套循环和XOR - 汇编

时间:2014-04-24 00:49:22

标签: assembly x86 nested-loops xor

我目前遇到的问题是我的程序组装好但运行时崩溃。我认为这可能与我使用xor指令的方式有关。我只使用xor作为密钥加密,而且我认为我在做一点翻转时使用它是错误的。我已经尝试将内圈中的东西移到外面而没有改变它崩溃,我没有想法。这个计划的目的是让100人去打开100个储物柜。第一个将打开所有这些,第二个将打开/关闭每个第二个储物柜,依此类推。我们应该将Array设置为101,这样我们就可以使用1-100而不是0-99。

我在Microsoft Visual Studios 2010上使用Assembly x86 ASM。

编辑:我按照建议更改了一些内容并且它没有崩溃,但输出只有一些答案正确。只有可以平方的数字应该是开放的。我修改了下面的代码以显示我现在拥有的内容

.data
Locker Byte 101 dup(0)
temp Dword 1
Students DWORD ?
.code
main Proc

   mov   ecx, SIZEOF Locker
   dec   ecx
   mov   eax, 0
OuterLoop:
   mov   Students, ecx; keeps counter for Outer
   mov   ecx, 100; The lockers
   inc   eax
   Call  WriteDec; to show which locker is opened/closed
   mov   esi, 0
InnerLoop:
   xor   Locker[esi+eax], 1
   add   esi, temp; goes to next locker

Loop InnerLoop

   mov   ecx, Students

   cmp   Locker[esi], 0
   jz    isClosed
   jnz   isOpen

isClosed:
   mWrite" closed."
   Call   Crlf
  jmp    Restart

isOpen:
   Mwrite" open."
   Call   Crlf
   jmp    Restart

Restart:

loop OuterLoop
ret
main ENDP

0 个答案:

没有答案