繁体   English   中英

如何打印寄存器中的长整数?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM