Assembly .Data初始化4位值

时间:2016-08-04 00:19:32

标签: assembly x86

我正在尝试将4位二进制序列初始化为汇编程序。

   .data 
x: .byte 00001111

我相信这应该适用于我的问题,但我想知道是否有办法将其限制为仅仅是4个最低有效位。

是否只有4位的特定数据类型?

1 个答案:

答案 0 :(得分:6)

任何东西的最小尺寸都是1个字节。没有办法编写两个单独的汇编指令组合成一个字节。您正在使用GNU as语法,但这适用于所有汇编程序:它们将 bytes 汇编到输出中。

汇编程序的当前输出位置(GNU语法中的.,NASM语法中的$)始终是整数个字节,而不是N字节+ M位。没有.nibble.bit指令。

此汇编程序设计决策与(但与之相关)内存是字节可寻址但在现代硬件中不可位寻址的事实是分开的。 (即如果你想要一点,你必须加载包含字节并移位+掩盖它。)

如果要将两个单独的半字节打包成一个字节,则需要将它们作为.byte指令(或.long或其他)与表达式的参数组合在一起。 e.g。

x: .byte  0bABCD <<4 | 0bEFGH

将ABCDEFGH作为位串生成。请注意,00001111an octal constant (because of the leading 0 and no radix character),而非二进制。你需要0b

某些汇编程序(如NASM)也接受010101b(后缀),而某些汇编程序支持后缀格式。