我正在尝试在我正在编写的汇编程序中正确格式化输出,但我发现很难使用ECX寄存器来跟踪我所处的循环并根据该值采取操作 .
我想每循环运行5次添加一个新行,并且我尝试使用带有ECX寄存器的模数来执行此操作,但没有任何运气 . 我正在使用Irvine32库 .
我正在尝试做这样的事情:
mov ecx, someNumber
the_loop:
cmp 0, ecx mod 5
je fifth_loop
jmp continue
fifth_loop:
call CrLf
continue:
loop the_loop
这显然不能正常运行 . 虽然我认为逻辑是合理的,但我在语法上并不知道如何在ECX寄存器旁边使用模数 . 我知道我可以使用DIV以及EAX和EDX寄存器,但我已经使用EAX和EBX寄存器来计算Fibonacci序列(这是我程序的目标 . )
2 回答
有几种选择 . 如果您在寄存器上运行不足,则可以将它们的值存储在堆栈或内存中,并在不再需要寄存器后恢复原始值 .
另一个选择是计数到5,然后执行CrLf并重置计数器:
除了其他寄存器之外,您只需要
edx
.SomeWittyUsername的答案的较小版本,对于“cmp dx”使用3个dx%5内容的指令而不是5个,而“jmp”是不需要的