Я новичок в x86 и в настоящее время пишу программу, в которой мне нужно написать файл после выполнения некоторых операций с данными, которые я читаю из файла, но у меня возникают проблемы при записи результата в файл, потому что это пишет с некоторым странным концом.
Здесь я резервирую место, которое мне понадобится для хранения результата и выходного файла:
section .data
new_file db "new_file.txt", 0
section .bss
data resb 4
Код, который записывает данные в файл с именем new_file.txt :
mov rax, SYS_OPEN
mov rdi, new_file
mov rsi, O_CREAT + O_WRONLY
mov rdx, 0644o
syscall
push rax
mov rdi, rax
mov rax, SYS_WRITE
mov rsi, data
mov rdx, 4
syscall
mov rax, SYS_CLOSE
pop rdi
syscall
Например, предположим, что я хочу сделать какое-то дополнение, а затем сохранить результат в data , чтобы записать его позже:
mov rax, 0xF
add rax, 0x1
mov [data], rax
в этом случае данные будут иметь значение 0x10, и когда я проверяю сгенерированный файл, я получаю что-то вроде этого:
Я заблудился, так как, похоже, ничего не понимаю в кодировке в x86, поэтому любая помощь будет признательна.