私は、ユーザーとの「Hello、ここで名前は」アセンブリでユーザ入力を受け入れていますか? (MacOSで)簡単なプログラム
これは、これまでの私のコードである版画から名前を受け入れ、この単純なプログラムといくつかの問題を抱えている...
%define SYSCALL_WRITE 0x2000004
%define SYSCALL_EXIT 0x2000001
%define SYSCALL_READ 0x2000003
SECTION .data
prompt db "Enter name "
text2 db "Hello, "
SECTION .bss
name resb 16
SECTION .text
global _start
_start:
call _printText1
call _getInput
call _printText2
call _printName
mov rax, SYSCALL_EXIT
mov rdi, 0
syscall
_printText1:
mov rax, SYSCALL_WRITE
mov rdi, 1
mov rsi, prompt
mov rdx, 11
syscall
ret
_getInput:
mov rax, SYSCALL_READ
mov rdi, 0
mov rsi, name
mov rdx, 1
syscall
ret
_printText2:
mov rax, SYSCALL_WRITE
mov rdi, 1
mov rsi, text2
mov rdx, 7
syscall
ret
_printName:
mov rax, SYSCALL_WRITE
mov rdi, 1
mov rsi, name
mov rdx, 16
syscall
ret
私が実行すると、出力は "Hello"を表示しません。入力した名前の最初の文字は、次のコマンドラインの前に印刷されて...
nMy-MacBook:Assembly username$ ame
と名前の残りの部分は、システムが
-bash: ame: command not found
私は間違って何をしていますか? _getInput関数と_printName関数を削除しましたが、それでも "Hello"という文字を表示せずに "Enter name"という名前しか表示されません。
ありがとうございます。
あなたは、デバッガを使用していますか? – InfinitelyManic
@InfinitelyManic私はちょうど私のMacでターミナルを使用しています。 – srsrso
はい、実際には、デバッグソフトウェアを使用して実行中のアセンブリコードをステップ実行していますか?デバッガを使用すると、障害ポイントを特定するのに役立ちます。たとえば、私はGDBを使用します。しかし、私はコマンドラインからLinux OSまたはOpenBSDを使用しています。 – InfinitelyManic