use*_*288 16 x86 assembly loops
我编写的代码到目前为止:
.code
main
Clrscr
mov dh,10 ;row 10
mov dl,20 ;column 20
call Gotoxy ;locate cursor
PromptForIntegers
WriteString ;display string
ReadInt ;input integer
ArraySum
WriteString ;display string
WriteInt ;display integer
DisplaySum ENDP
END main
Run Code Online (Sandbox Code Playgroud)
如何使用循环重复相同的步骤三次,在每次循环迭代后清除屏幕?
Art*_*ski 19
mov cx,3
loopstart:
do stuff
dec cx ;Note: decrementing cx and jumping on result is
jnz loopstart ;much faster on Intel (and possibly AMD as I haven't
;tested in maybe 12 years) rather than using loop loopstart
Run Code Online (Sandbox Code Playgroud)
Jef*_*f B 12
另一种方法是使用LOOP指令:
mov cx, 3
myloop:
; Your loop content
loop myloop
Run Code Online (Sandbox Code Playgroud)
循环指令自动递减cx,并且只有在cx!= 0时跳转.如果你想对你的循环进行一些额外的检查以提前爆发,还有LOOPE和LOOPNE变体.
如果要在循环期间修改cx,请确保在循环内容之前将其推入堆栈,并在以下情况后将其弹出:
mov cx, 3
myloop:
push cx
; Your loop content
pop cx
loop myloop
Run Code Online (Sandbox Code Playgroud)
使用CX寄存器来计算循环次数
莫夫克斯,3 启动循环: CMP CX, 0 jz 循环结束 推CX 疯狂: 呼叫 ClrScr 流行CX 十月十日 jmp 启动循环 循环结束: ; 循环结束 ; 在这里做你必须做的事
这只是循环 3 次调用ClrScr,将 CX 寄存器压入堆栈,与 0 进行比较,如果设置了 ZeroFlag 则跳转,然后跳转到endofloop。请注意 CX 的内容如何入栈/出栈以维持循环流程。
| 归档时间: |
|
| 查看次数: |
115153 次 |
| 最近记录: |