Adds fopen(), fwrite(), fclose()

This commit is contained in:
2025-06-25 09:38:42 +02:00
parent 9d265e3db6
commit fbea8d0322
7 changed files with 181 additions and 9 deletions

View File

@ -23,6 +23,10 @@ extern strclr
extern strlclr
extern strcat
extern strcmp
;file.asm
extern fopen
extern fclose
extern fwrite
section .rodata
PRINT_nums equ 1
@ -42,6 +46,7 @@ section .rodata
TEST_tolower equ 1
TEST_toupper equ 1
TEST_strcmp equ 1
TEST_file1 equ 1
num1 dq 69
num2 dq 0xFFFFFF
@ -141,6 +146,16 @@ section .rodata
msgStrcmp4 db "TEST strcmp(str4, str1): %d",NL,EOS
msgStrcmp5 db "TEST strcmp(str1, str4): %d",NL,EOS
msgStrcmp6 db "TEST strcmp(str1, str1): %d",NL,EOS
; fopen(), fwrite(), fclose()
testFile1 db "testFile1.txt",EOS
fileStr1 db "Hello file world!",EOS
fileMode_w db "w",EOS
msgFileB db NL,"# fopen(), fwrite(), fclose()",EOS
msgFileB1 db "TEST fopen('testFile1.txt', 'w'): %d",NL,EOS
msgFileB2 db "TEST fwrite(filePointer1, fileStr1): %d",NL,EOS
msgFileB3 db "TEST fclose(filePointer1): %d",NL,EOS
section .data
filePointer1 dq 0
section .bss
strBuff1 resb 32
strBuff2 resb 8
@ -712,6 +727,37 @@ main:
lea rdi, [rel msgStrcmp6]
call printf
%ENDIF
%IF TEST_file1
lea rdi, [rel msgFileB]
call puts
; TEST: fopen()
lea rdi, [rel testFile1]
lea rsi, [rel fileMode_w]
call fopen
mov r15, rax ;store filepointer to R15
mov rsi, rax
xor rax, rax
lea rdi, [rel msgFileB1]
call printf
; TEST: fwrite()
mov rdi, r15
lea rsi, [fileStr1]
call fwrite
mov rsi, rax
xor rax, rax
lea rdi, [rel msgFileB2]
call printf
; TEST: fclose()
mov rdi, r15
call fclose
mov rsi, rax
xor rax, rax
lea rdi, [rel msgFileB3]
call printf
%ENDIF
leave
ret