Memory 如何打印寄存器中的长整数?
我定义了一个长整数,如下所示: memTotal:。长0 然后,我用这样的东西来补充: 地址12(%di),%ecx 然后我将%ecx移动到memTotal。我的问题是,我如何计算memTotal的大小(以MB为单位)。我尝试了以下几点: shrl$20%,每平方米 但我如何将其打印为int for MBMemory 如何打印寄存器中的长整数?,memory,assembly,Memory,Assembly,我定义了一个长整数,如下所示: memTotal:。长0 然后,我用这样的东西来补充: 地址12(%di),%ecx 然后我将%ecx移动到memTotal。我的问题是,我如何计算memTotal的大小(以MB为单位)。我尝试了以下几点: shrl$20%,每平方米 但我如何将其打印为int for MB 我走对了吗?非常感谢您的帮助。我想您知道如何打印单个ASCII字符。因此,现在您需要一个从整数a中提取数字的算法-我将提供一个我认为易于理解和扩展的算法(它不一定是最好的) 计算b:=a%1
我走对了吗?非常感谢您的帮助。我想您知道如何打印单个ASCII字符。因此,现在您需要一个从整数
a
中提取数字的算法-我将提供一个我认为易于理解和扩展的算法(它不一定是最好的)
- 计算
b:=a%10
是您号码的最后一位数字b
- 设置
(整数除法)a:=a/10
- 从开始到最后一位重复,等等。当
a==0时停止
(是的,
shrl$20,%eax
将字节转换为通常所称的MiB听起来很合理。惯例各不相同,但我认为通常的惯例是1 MB=10^6字节,1 MiB=2^20字节。)我假设您知道如何打印单个ASCII字符。因此,现在您需要一个从整数a
中提取数字的算法-我将提供一个我认为易于理解和扩展的算法(它不一定是最好的)
- 计算
b:=a%10
是您号码的最后一位数字b
- 设置
(整数除法)a:=a/10
- 从开始到最后一位重复,等等。当
a==0时停止
(是的,
shrl$20,%eax
将字节转换为通常所称的MiB听起来很合理。惯例各不相同,但我认为通常的惯例是1MB=10^6字节,1MIB=2^20字节。)memTotal
的大小总是32位。不需要计算任何东西。我知道long是32位的,但我正在寻找hex->MB转换。所以你的问题实际上不是定义long,不是计算任何东西,不是计算内存,而是关于“如何打印寄存器中的整数?”?memTotal
的大小始终是32位。不需要计算任何东西。我知道long是32位的,但我正在寻找hex->MB转换。所以你的问题实际上不是定义long,不是计算任何东西,不是计算内存,而是关于“如何打印寄存器中的整数?”?