汇编学习3

汇编语言实现的 for 循环和 while 循环

作为练习我尝试用汇编语言实现了 C 语言中的 for 循环和 while 循环

For 循环

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
section .data
sum dd 0

section .text
global _start

_start:
mov ecx, 10 ; 将计数器初始化为 10
xor eax, eax ; 将 eax 清零,作为累加器

loop_start:
add eax, ecx ; 将计数器的值加到累加器中
dec ecx ; 将计数器递减 1
jnz loop_start ; 如果 ecx 不为零,跳回 loop_start

mov [sum], eax ; 将 eax 中的累加结果存储到 sum

mov eax, 1
xor ebx, ebx
int 0x80

While 循环

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
section .data
sum dd 0

section .text
global _start

_start:
mov eax, 1 ; 将 eax 初始化为 1(循环计数器)
xor ebx, ebx ; 将 ebx 清零,作为累加器

loop_condition:
cmp eax, 11 ; 比较 eax 是否为 11(循环结束条件)
jge loop_end ; 如果 eax >= 11,跳到 loop_end

add ebx, eax ; 将 eax 加到 ebx 中
inc eax ; 将 eax 加 1
jmp loop_condition ; 跳回 loop_condition 检查条件

loop_end:
mov [sum], ebx

mov eax, 1
xor ebx, ebx
int 0x80