2011-07-31 58 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。它可以更有效地做到这一点