我正在尝试学习汇编(更像是挣扎),并且遇到了数据类型字节、单词、双字等。
真正让我困惑的是你什么时候知道使用一个而不是另一个。显然你想使用最保守的选项,但我怎么知道选择一个字节而不是一个单词?例如 1 个字 = 16 位或 2 个字节。这是否意味着我可以在 1 个单词中放入 16 个字符?所以要保存字母表,我需要声明 2 个单词?
寄存器(16 位、32 位和 64 位)也是如此。我知道您可以使用较小的寄存器,例如 al
和 ah
而不是 eax
当您处理较小的数据时。对于 16 位寄存器,您能否将大于字的数据类型移入其中,因为它是 16 位,它可以容纳 16 位字?
围绕这个整个概念来思考是很困难的。如果有人碰巧有我可以查看的任何好的资源或信息,那就太好了。干杯!
最佳答案
一点不是字符。它是单个二进制数字,0 或 1。两位是 00、01、10 或 11。阅读二进制算术(以及与十进制之间的转换以验证您的答案)和数据类型的表示。这是基本的东西,如果没有绝对确定一个字节是什么,它可能包含什么值以及你可能将它用于什么,请不要继续。word
是一种数据类型,在我们的例子中是 16 位或 2 个字节。因此,当我们解释您的问题时,它变为:
For a two byte register can you move a data type larger than two bytes into it because since it's two bytes, it can fit a two byte space?
这是@Ignacio Vazquez-Abrams 提到的不连贯性。
关于assembly - 位字节字和双字 - 何时在汇编中使用什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9475377/