3
因此,我正在使用NASM爲Linux的x86彙編程序工作。這個程序基本上要求用戶輸入他們的名字和他們喜歡的顏色。這樣做的,存放在.bss段聲明的變量的兩個字符串後,程序打印「的用戶沒辦法名,喜歡的顏色是我最喜歡的顏色,太!正確的用戶輸入 - 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
我在做什麼的代碼是以上。有沒有人有一個很好的方法來找到輸入的字符串的長度,或一次接收一個字符來找出長度e字符串?
預先感謝您。
我嘗試過,但由於某種原因,我總是得到我聲明的變量的返回值.bss ....我在做什麼興錯了? – nmagerko
@nmagerko:你是說在int 80之後,EAX沒有輸入字符串的長度嗎? –
^是的。這有意義嗎? – nmagerko