3
したがって、NASMを使用しているLinux用のx86アセンブリプログラムで作業しています。このプログラムは基本的にユーザーに自分の名前と好みの色を要求します。これを行うと.bssセクションで宣言された変数で2つの文字列を格納した後、プログラムの版画「ユーザーのまさか名、好きな色は、あまりにも、私の好きな色です!ユーザー入力の修正 - x86 Linuxアセンブリ
私が午前問題はさ私は、文字列は、ユーザーが入力した私がすべきバッファを宣言した長さだけだったどのくらいかわからないので、出力の巨大なスペースがあること。
section .data
greet: db 'Hello!', 0Ah, 'What is your name?', 0Ah ;simple greeting
greetL: equ $-greet ;greet length
colorQ: db 'What is your favorite color?' ;color question
colorL: equ $-colorQ ;colorQ length
suprise1: db 'No way '
suprise1L equ $-suprise1
suprise3: db ' is my favorite color, too!', 0Ah
section .bss
name: resb 20 ;user's name
color: resb 15 ;user's color
section .text
global _start
_start:
greeting:
mov eax, 4
mov ebx, 1
mov ecx, greet
mov edx, greetL
int 80 ;print greet
getname:
mov eax, 3
mov ebx, 0
mov ecx, name
mov edx, 20
int 80 ;get name
askcolor:
;asks the user's favorite color using colorQ
getcolor:
mov eax, 3
mov ebx, 0
mov ecx, name
mov edx, 20
int 80
thesuprise:
mov eax, 4
mov ebx, 1
mov ecx, suprise1
mov edx, suprise1L
int 80
mov eax, 4
mov ebx, 1
mov ecx, name
mov edx, 20
int 80
;write the color
;write the "suprise" 3
mov eax, 1
mov ebx, 0
int 80
コード私がやっている何のためには、上記であります誰かが、入力された文字列の長さを見つける、または文字を一度に取り込んでthの長さを見つけるための良い方法がありますか電子文字列?
ありがとうございます。
I試してみましたが、何らかの理由で、私が変数が.bssにあると宣言したものの戻り値をいつも得ています....私はsometをやっています間違っていますか? – nmagerko
@nmagerko:int 80の後、EAXに入力文字列の長さがないと言っていますか? –
^はい。これは理にかなっていますか? – nmagerko