0
我試圖驗證在這個例子中(NASM)用戶輸入的長度:爲什麼我不能在NASM組件中打印用戶輸入數據?
section .bss
user_input resb 10
section .text
push ebp
mov ebp, esp
mov eax, 3 ;sys_read
mov ebx, 0 ;stdin
mov ecx, user_input
mov edx, 10
int 80h
cmp eax, 10
jg overflow
jmp done
overflow:
.
.
.
done:
mov eax, 1
int 80h
爲什麼不是這方面的工作?
但是,如果我數字超過10個字符('\ 0'),它被程序接受...我想避免這種情況。我怎樣才能做到這一點?? –
'cmp byte [ecx + eax-1],10]' - 如果換行符在您的緩衝區中,則沒有溢出。如果沒有,請繼續閱讀虛擬緩衝區,直到換行顯示。沒有涉及'\ 0'(除非你覆蓋換行)。當然,用sys_write打印(打印'edx'字節 - 不會停在'\ 0'或'\ n'上)。 –