我正在尝试将4位二进制序列初始化为汇编程序。
.data
x: .byte 00001111
我相信这应该适用于我的问题,但我想知道是否有办法将其限制为仅仅是4个最低有效位。
是否只有4位的特定数据类型?
答案 0 :(得分:6)
任何东西的最小尺寸都是1个字节。没有办法编写两个单独的汇编指令组合成一个字节。您正在使用GNU as
语法,但这适用于所有汇编程序:它们将 bytes 汇编到输出中。
汇编程序的当前输出位置(GNU语法中的.
,NASM语法中的$
)始终是整数个字节,而不是N字节+ M位。没有.nibble
或.bit
指令。
此汇编程序设计决策与(但与之相关)内存是字节可寻址但在现代硬件中不可位寻址的事实是分开的。 (即如果你想要一点,你必须加载包含字节并移位+掩盖它。)
如果要将两个单独的半字节打包成一个字节,则需要将它们作为.byte
指令(或.long或其他)与表达式的参数组合在一起。 e.g。
x: .byte 0bABCD <<4 | 0bEFGH
将ABCDEFGH作为位串生成。请注意,00001111
为an octal constant (because of the leading 0 and no radix character),而非二进制。你需要0b
。
某些汇编程序(如NASM)也接受010101b
(后缀),而某些汇编程序仅支持后缀格式。