for循环 | for (i = 0; i< 50; i++) { c = c+i; } 1. 为循环变量赋值 mov dword ptr [i], 0 2. 跳转到循环变量比较处 jmp [比较地址] 3. 修改循环变量 mov eax, dword ptr[i] add ,eax ,1 mov dword ptr[i], eax 4. 执行循环体 mov eax , dword ptr[c] add eax, dword ptr[i] mov dword ptr[c], eax 5. 比较循环变量边界值 cmp dowrd ptr [i], 32 jge [循环结束] 6. 跳转到循环开始的地方 jge [循环开始]
|
do while 循环 | do { a = a +1; } while(a < 50)
1. 执行循环体 mov eax, dword ptr [a] add eax, 1 mov dword ptr[a], eax 2. 比较结束条件 cmp dword ptr[a], 32 jl [循环开始] |
while 循环 | while (a < 50) { a = a + 1; } 1. 比较循环控制条件 cmp dword ptr[a], 32 jge [循环结束] 2. 循环体 mov eax, dword ptr[a]; add eax , 1 mov dword ptr[i], eax 3. 跳转到循环开始 jmp [循环开始] |