每 5 个循环添加新行 MASM
Add new line every 5 loops MASM
我正在尝试在我正在编写的汇编程序中正确格式化输出,但我发现很难使用 ECX 寄存器来跟踪我正在进行的循环并根据该值。
我想每 5 次循环添加一个新行 运行s,并且我尝试使用 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 寄存器来计算斐波那契数列(这是我程序的目标。)
有几个选项。
如果您 运行 缺少寄存器,您可以将它们的值存储在堆栈或内存中,并在不再需要寄存器后恢复原始值。
另一种选择是数到 5,然后执行 CrLf 并重置计数器:
mov ecx, someNumber
mov edx, 1
the_loop:
cmp edx, 5
je fifth_loop
inc edx
jmp continue
fifth_loop:
call CrLf
mov edx, 1
continue:
loop the_loop
这里只需要edx
,另外还有其他的寄存器
SomeWittyUsername 的答案的较小版本,使用 3 条指令来处理 dx % 5 的东西,而不是 5 条,因为 "cmp dx" 和 "jmp" 是不需要的
mov edx, 5
mov ecx, someNumber
the_loop:
; do the stuff you want inside 'the loop'
dec edx
jnz continue
fifth_loop:
call CrLf
mov edx, 5 ; reload counter
continue:
loop the_loop
我正在尝试在我正在编写的汇编程序中正确格式化输出,但我发现很难使用 ECX 寄存器来跟踪我正在进行的循环并根据该值。
我想每 5 次循环添加一个新行 运行s,并且我尝试使用 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 寄存器来计算斐波那契数列(这是我程序的目标。)
有几个选项。 如果您 运行 缺少寄存器,您可以将它们的值存储在堆栈或内存中,并在不再需要寄存器后恢复原始值。
另一种选择是数到 5,然后执行 CrLf 并重置计数器:
mov ecx, someNumber
mov edx, 1
the_loop:
cmp edx, 5
je fifth_loop
inc edx
jmp continue
fifth_loop:
call CrLf
mov edx, 1
continue:
loop the_loop
这里只需要edx
,另外还有其他的寄存器
SomeWittyUsername 的答案的较小版本,使用 3 条指令来处理 dx % 5 的东西,而不是 5 条,因为 "cmp dx" 和 "jmp" 是不需要的
mov edx, 5
mov ecx, someNumber
the_loop:
; do the stuff you want inside 'the loop'
dec edx
jnz continue
fifth_loop:
call CrLf
mov edx, 5 ; reload counter
continue:
loop the_loop