Assembly 获取long和convert的字节大小,GAS

Assembly 获取long和convert的字节大小,GAS,assembly,Assembly,我有一个长期的目标,例如: 变量:。长0 在我的程序中,我向var添加值,这很好。我的问题是,如何计算long的字节大小,以便将其转换为MB 目前,当我以十六进制打印长文本时,我得到: 04F3AC20 所以我试图得到它的字节大小,以MB为单位 感谢您的帮助 谢谢根据您显示的数字大小,您的长度似乎有四个字节。当然,我会将其设置为-1,然后以十六进制打印。我希望答案是FFFFFFFF,这将确认它是四个字节(每个十六进制半字节/字母是四位,代表数字0-15,八位是一个字节) 如果您的问题是“what

我有一个长期的目标,例如:

变量:。长0

在我的程序中,我向var添加值,这很好。我的问题是,如何计算long的字节大小,以便将其转换为MB

目前,当我以十六进制打印长文本时,我得到:

04F3AC20

所以我试图得到它的字节大小,以MB为单位

感谢您的帮助


谢谢

根据您显示的数字大小,您的
长度似乎有四个字节。当然,我会将其设置为
-1
,然后以十六进制打印。我希望答案是
FFFFFFFF
,这将确认它是四个字节(每个十六进制半字节/字母是四位,代表数字0-15,八位是一个字节)

如果您的问题是“what is
0x04F3AC20
in MB”,则可以将数字除以2^20(右移20)得到答案。在这种情况下

0x04F3AD20 >> 20
0x0000004F 

(因为每个半字节是4位,我们移动了5位)答案是
4F
MB,或者
64+15=79mb

不清楚您是想将数字转换为MB,还是想知道您的存储位置有多少字节长……好的,所以我能够正确地移动并输出4F。现在,我将如何获取存储在寄存器中的单词“004F”并将其转换为最终整数。我猜测循环通过每个位,并为ascii字符添加30?数字
4F
只是
79
的十六进制表示。您是否在询问如何转换为实际的ASCII字符串?难道你没有一个打印命令可以让你这么做吗?如果没有,则应取模10的数字,并添加ASCII值
'0'
——这是您的最后一个数字。除以10,重复下一个数字(左边),直到数字为零。有意义吗?除非你是一个磁盘驱动器制造商,在这种情况下你想除以1e6而不是移位20位…@twalberg-你是对的。但我是个老家伙——对我来说,MB是2^20,而不是1000000。我想我不会以销售磁盘驱动器为生。。。