首页 > 解决方案 > 使用 write() 写入文件时的奇怪行为

问题描述

我正在尝试使用系统调用创建文件,使用creat系统调用将data字符串写入文件,使用write系统调用关闭文件并在环境中close使用系统调用退出。exitUbuntu 20

section .text
global  _start

_start:
    mov  ecx, 0777
    mov  ebx, file_name
    mov  eax, 8
    int  0x80

    mov  [fd], eax

    mov  edx, data_len
    mov  ecx, data
    mov  ebx, [fd]
    mov  eax, 4
    int  0x80

    mov  ebx, [fd]
    mov  eax, 6

    mov  eax, 1
    int  0x80




section .data
file_name db 'test.txt'

data db 'write me please!'
data_len equ $-data

section .bss
fd resb 1

编译和运行上述代码时:

nasm -f elf32 -g test.asm && ld -melf_i386 test.o -o test

它创建了一个文件,名为'test.txtwrite me please!'What is I doing wrong 导致这样的数据溢出到write系统调用中?

标签: fileassemblyx86system-callswrite

解决方案


推荐阅读