汇编-.while循环语句
语句结构:
.while/.endw循环首先判断条件测试表达式, 如果结果是“真”, 则执行循环体内的指令,结束后再回到.while处判断表达式, 如此往复, 一直到表达式结果为“假”为止。
.while/.endw 指令有可能一遍也不会执行到循环体内的指令,因为如果第一次判断表达式时就遇到结果为“假”的情况,那么就直接退出循环。
.386 .model flat,stdcall option casemap:none .stack 4096 ExitProcess PROTO,dwExitCode:DWORD .data .code main PROC mov eax,0h .while eax!=100000h add eax,1 .endw ;EAX = 00100000h INVOKE ExitProcess,0 main ENDP END main
.break强制退出循环
.386 .model flat,stdcall option casemap:none .stack 4096 ExitProcess PROTO,dwExitCode:DWORD .data .code main PROC mov eax,0h .while eax!=100000h add eax,1 .break ;强制退出循环 .endw ;EAX = 00000001h INVOKE ExitProcess,0 main ENDP END main
如果.break伪指令后面跟一个.if测试伪指令的话, 那么当退出条件为“真”时才执行.break伪指令
.386 .model flat,stdcall option casemap:none .stack 4096 ExitProcess PROTO,dwExitCode:DWORD .data .code main PROC mov eax,0h .while eax!=100000h add eax,1 .break .if eax==1000h ;eax==1000h时推出循环 .endw ;EAX = 00001000h INVOKE ExitProcess,0 main ENDP END main
.continue本次循环时忽略后面的代码
.386 .model flat,stdcall option casemap:none .stack 4096 ExitProcess PROTO,dwExitCode:DWORD .data .code main PROC mov ebx,5h mov eax,0h .while eax!=100000h add eax,1 .continue add ebx,2 .endw ;EAX = 00100000h ;EBX = 00000005h 说明add ebx,2指令没有被执行 INVOKE ExitProcess,0 main ENDP END main