Assembly 如何使用汇编获取整数输入
Iam正在学习汇编,我发现了如何使用Assembly 如何使用汇编获取整数输入,assembly,Assembly,Iam正在学习汇编,我发现了如何使用 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,我如何
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?
我不需要代码,只需要一些指导
谢谢 一旦有了ASCII表示,就可以利用数字按顺序编码的事实,一个数字一个数字地构建结果。在伪码中,从左到右读取(即从最高有效位开始):
- 将
初始化为0结果
- 对于每个数字
,c
结果*=10;结果+=(c-‘0’)代码>
保存字符串的数值result
查看二进制编码的小数BCD。它可以更有效地执行此操作它看起来像x86。这是真的吗?让我们希望rax、rbx和rdx的上半部分是0…反过来说:整数到字符串:+1同样的方法适用于其他基数(尽管
c-'0'
部分对于基数>10会变得更复杂)