我目前遇到的问题是我的程序组装好但运行时崩溃。我认为这可能与我使用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