[英]How do I print a long integer that I have in a register?
我定义了一个长整数,如下所示:
memTotal:.long 0
然后,我在其中添加如下内容:
地址12(%di),%ecx
然后将%ecx移至memTotal。 我的问题是,我将如何计算memTotal的MB大小。 我尝试了以下方法:
shrl $ 20,%eax
但是我该如何打印int for MB?
我在正确的轨道上吗? 任何帮助表示赞赏。
我假设您知道如何打印单个ASCII字符。 因此,现在您需要一种从整数a
提取数字的算法-我将提供一个我认为易于理解且易于扩展的算法(不一定是最佳方法 )。
b := a%10
。 b
是您电话号码的最后一位 a := a/10
(整数除法) a == 0
。当a == 0
时停止。 一旦获得数字值,就可以添加一个固定常数以获得其ASCII值,该值可用于打印相应的字符。
上面的内容使您可以打印数字。 不幸的是,此时您只能向后打印。 为了解决此问题,请分配一个字符串,您可以在其中将数字从右到左放置。 首先分配一个足以容纳所有长整数的字符串,然后对上述算法进行修改,以跟踪有多少个数字,并相应地分配一个字符串。
(是的, shrl $20, %eax
听起来很明智,可以将字节转换为通常称为MiB的内容。约定有所不同,但我认为通常的用法是1 MB = 10 ^ 6字节和1 MiB = 2 ^ 20字节。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.