分段故障(核心转储)在nasm上失败

时间:2019-05-03 11:25:45

标签: linux assembly x86-64 nasm

我运行程序,但是输入不起作用

也许是缓冲区,当我运行C程序时我遇到了同样的问题,但是我不确定

global _start

%macro output 2
    mov rax,1               ;seleccionando la funcion write()
    mov rdi,1               ;0-stdin, 1-stdout, 2-stderr
    mov rsi,%1              ;puntero de un valor constante tipo void
    mov rdx,%2              ;desplazamiento de un valor tipo size_t
    syscall 
%endmacro

%macro input 2      
    mov rax,0
    mov rdi,0
    mov rsi,%1
    mov rdx,%2
    syscall 
%endmacro

%macro str_form 2

%endmacro

section .data
    msg1    db  "Nombre: "
    .len1   equ $ - msg1
    msg2    db  "Primer apellido: "
    .len2   equ $ - msg2
    msg3    db  "Segundo apellido: "
    .len3   equ $ - msg3
    msg4    db  "Pasatiempo: "
    .len4   equ $ - msg4
    msg5    db  "Trabajo: "
    .len5   equ $ - msg5
    msg6    db  "Edad: "
    .len6   equ $ - msg6
    msg7    db  "Matrícula: "
    .len7   equ $ - msg7
    msg8    db  "Año: "
    .len8   equ $ - msg8

section .bss
    name    resb    15
    lastn1  resb    15
    lastn2  resb    15
    hobbie  resb    20
    work    resb    1
    age resb    3
    enroll  resb    6
    year    resb    4

section .text
    _start:

    com1:
        output msg1,msg1.len1
        input name,15

    mov rax,60      ;exit()
    mov rdi,0

运行程序时,我得到:

 Nombre: Miguel
 Segmentation fault (core dumped)

0 个答案:

没有答案