Linux NASM中的无限循环

Linux NASM中的无限循环,linux,assembly,x86,nasm,jdoodle,Linux,Assembly,X86,Nasm,Jdoodle,我的任务是要求用户输入,输出将返回他们的名字 这是我的密码: section .data user: db 'Hello.What is your name ? ' user_L: equ $-user ;length of the UserNameMsg segment hello: db ' Hello' hello_L: equ $-hello section .bss user_v: resb 23 section .text glo

我的任务是要求用户输入,输出将返回他们的名字

这是我的密码:

section .data
user:     db  'Hello.What is your name ?   '
user_L:    equ $-user ;length of the UserNameMsg segment
hello:     db '  Hello'
hello_L:   equ $-hello

section .bss 
   user_v:  resb 23
section  .text
   global _start    

_start: 
 mov eax, 4
 mov ebx, 1
  mov ecx, user
 mov edx, user_L
   int 0x80

     mov eax, 3
   mov ebx, 0
   mov ecx, user
   mov edx, 23
   int 0x80
   mov eax, 4
   mov ebx, 1
   mov ecx, hello
   mov edx, hello_L
   int 0x80
   mov eax,4
   mov ebx, 1
   mov ecx, user_v
   mov edx, 23
   int 0x80
   mov eax, 1
   mov ebx, 0
   int 0x80
当我在中运行代码时,得到的错误是:

超时-超时的一些常见原因您的程序可能有一个无休止的循环


我不确定如何修复此错误。

如果没有适当的调试器,很难开发汇编代码。考虑用适当的工具设置一些完整的机器,比如在一些虚拟机上安装一些32位Linux,然后安装GCC-+BIUTILS和EDB调试器,或者一些GDB前端等等。可能需要一段时间才能找到所需的一切并使其正常工作,但仅仅运行可执行文件并不能告诉您内部发生了什么。顺便说一句,您的代码乍一看几乎是正确的,我认为在输入之前,您确实需要
mov ecx,user_v
,而不是
mov ecx,user
,我没有检查
int0x80
services文档,如果您为它们设置了正确的参数,但除此之外,它没有任何明显的错误。您是否也可以提供build命令,如何生成最终的可执行文件?您使用哪种在线汇编程序?还有什么特别的原因让你学习32位x86与在线汇编?您是否可以自由选择其他平台等?看不到循环。您使用的在线工具是否可能不处理中断?试着在你的机器上组装并在本地运行它。