Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Memory 如何打印寄存器中的长整数?_Memory_Assembly - Fatal编程技术网

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

Memory 如何打印寄存器中的长整数?,memory,assembly,Memory,Assembly,我定义了一个长整数,如下所示: memTotal:。长0 然后,我用这样的东西来补充: 地址12(%di),%ecx 然后我将%ecx移动到memTotal。我的问题是,我如何计算memTotal的大小(以MB为单位)。我尝试了以下几点: shrl$20%,每平方米 但我如何将其打印为int for MB 我走对了吗?非常感谢您的帮助。我想您知道如何打印单个ASCII字符。因此,现在您需要一个从整数a中提取数字的算法-我将提供一个我认为易于理解和扩展的算法(它不一定是最好的) 计算b:=a%1

我定义了一个长整数,如下所示:

memTotal:。长0

然后,我用这样的东西来补充:

地址12(%di),%ecx

然后我将%ecx移动到memTotal。我的问题是,我如何计算memTotal的大小(以MB为单位)。我尝试了以下几点:

shrl$20%,每平方米

但我如何将其打印为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字节。)

我假设您知道如何打印单个ASCII字符。因此,现在您需要一个从整数
a
中提取数字的算法-我将提供一个我认为易于理解和扩展的算法(它不一定是最好的)

  • 计算
    b:=a%10
    b
    是您号码的最后一位数字
  • 设置
    a:=a/10
    (整数除法)
  • 从开始到最后一位重复,等等。当
    a==0时停止
一旦你有了一个数字的值,你可以添加一个固定的常数来得到它的ASCII值,你可以用它来打印相应的字符

通过上述功能,您可以打印数字。不幸的是,此时只能向后打印。为了解决这个问题,请分配一个字符串,您可以在其中从右到左放置数字。首先分配一个足以容纳所有长整数的字符串,然后对上述算法进行修改,跟踪有多少位数,并相应地分配一个字符串


(是的,
shrl$20,%eax
将字节转换为通常所称的MiB听起来很合理。惯例各不相同,但我认为通常的惯例是1MB=10^6字节,1MIB=2^20字节。)

memTotal
的大小总是32位。不需要计算任何东西。我知道long是32位的,但我正在寻找hex->MB转换。所以你的问题实际上不是定义long,不是计算任何东西,不是计算内存,而是关于“如何打印寄存器中的整数?”?
memTotal
的大小始终是32位。不需要计算任何东西。我知道long是32位的,但我正在寻找hex->MB转换。所以你的问题实际上不是定义long,不是计算任何东西,不是计算内存,而是关于“如何打印寄存器中的整数?”?