2011-07-31 38 views
2

蔭學習組件的整數輸入,我發現瞭如何獲取用戶輸入與如何獲得與裝配

mov al, 3 ; system call number (sys_read) 
xor bl, bl ; file descriptor 0 (stdin) 
mov rcx, buf ; buffer to store input 
mov dl, 4 ; Lenght of buffer 
int 0x80  ; interrupt 

,但實際上得到的字符串吧? 我的問題是我如何得到一個整數值... 所以如果我輸入100我如何得到值64h所以我可以加,減等 而不是一個字符串,每個字節是數字的ascii表示 然後我如何輸出一個像64h的值到屏幕上,以便顯示100? 我不需要代碼只是一些指導

謝謝!

+0

它看起來像x86。這是嗎? –

+0

讓我們希望rax,rbx和rdx的上半部分是0 ... – user786653

+0

我有一個x64 cpu – Renato

回答

7

一旦你有了ASCII碼的表示,你就可以用數字按順序對數字進行編碼。在僞代碼中,從左至右(即具有最顯著位開始):

  • 初始化result至0
  • 每個數字cresult *= 10; result += (c - '0');
  • result保持串的數值
+1

+1同樣的方法適用於其他基(儘管'c - '0'部分對於鹼基> 10更復雜) – user786653

1

看看二進制編碼的小數BCD。它可以更有效地做到這一點