我正在尝试将4位二进制序列初始化为汇编程序.
.data
x: .byte 00001111
Run Code Online (Sandbox Code Playgroud)
我相信这应该适用于我的问题,但我想知道是否有办法将其限制为仅仅是4个最低有效位.
只有4位的特定数据类型吗?
任何东西的最小尺寸都是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(后缀),有些汇编程序只支持后缀格式.
| 归档时间: |
|
| 查看次数: |
594 次 |
| 最近记录: |