我定义了一个长整数,如下所示:
内存总计:.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
。一旦你有了一个数字的值,你可以添加一个固定的常量来得到它的 ASCII 值,你可以用它来打印相应的字符。
以上使您可以打印数字。不幸的是,此时您只能向后打印。为了解决这个问题,分配一个字符串,您可以在其中从右到左放置数字。首先分配一个足以容纳所有长整数的字符串,然后对上述算法进行修改,以跟踪有多少位,并相应地分配一个字符串。
(是的,shrl $20, %eax
将字节转换为通常称为 MiB 的内容听起来很明智。约定各不相同,但我认为通常的约定是 1 MB = 10^6 字节,1 MiB = 2^20 字节。)