AT&T asm ascii整数转换

问题描述

假设我们使用movzbq将数字“ 98”存储在%r11中,将第一个数字“ 9”存储在%r12中 ascii。 我从ascii中减去$ 48,得到整数“ 9”并将其存储在%r12中。 我将%r12添加到%r13以在%r13中获得值“ 9”或“ 0x9” 然后,我将%r13乘以10,得到的值“ 90”存储为“ 0x5a” 现在,%r13包含“ 0x5a”。我做不到...

movq %r13,%rdi
call putchar.  

因为这会打印字符“ Z”(ASCII表中的值为90)。怎样使它打印数字“ 90”呢?

subq $48,%r12      # Subtract $48 to convert ascii to integer.
add %r12,%r13      # add 9 to %r13
imulq $10,%r13     # multiply by 10
add %r12,%r13      # add to return value
movq %r13,%rdi 
call putchar

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)