Assembly .Data初始化4位值

Tig*_*ode 2 x86 assembly

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

   .data 
x: .byte 00001111
Run Code Online (Sandbox Code Playgroud)

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

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

Pet*_*des 6

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

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

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


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

x: .byte  0bABCD <<4 | 0bEFGH
Run Code Online (Sandbox Code Playgroud)

生成ABCDEFGH作为位串.注意,这00001111一个八进制常量(因为前导0和没有基数字符),而不是二进制.你需要0b那个.

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