- push ebp
- mov ebp, esp
-
- sub esp, 4
- mov DWORD [ebp-CHAR_PTR], 0x00
-
- _readLine_loop:
- ; if buffer is full
- cmp BYTE [ebp-CHAR_PTR], 64
- jne _readLine_notfull
- jmp _readLine_exit
-
- _readLine_notfull:
- ; read a single character
- mov eax, 3
- mov ebx, [ebp+_FILE_HANDLE]
- mov ecx, read_buf
- add ecx, [ebp-CHAR_PTR]
- mov edx, 1
- int 0x80
-
- mov eax, 4
- mov ebx, 1
- mov ecx, read_buf
- add ecx, [ebp-CHAR_PTR]
- mov edx, 1
- int 0x80
-
- ; check for newline
- mov eax, read_buf
- add eax, [ebp-CHAR_PTR]
- cmp DWORD [eax], 0x0a
- je _readLine_exit
-
- ; check for eof
- mov eax, read_buf
- add eax, [ebp-CHAR_PTR]
- cmp DWORD [eax], 0x05
- je _readLine_exit
-
- add DWORD [ebp-CHAR_PTR], 1