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与在线汇编?您是否可以自由选择其他平台等?看不到循环。您使用的在线工具是否可能不处理中断?试着在你的机器上组装并在本地运行它。