我运行程序,但是输入不起作用
也许是缓冲区,当我运行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)