You copied the Doc URL to your clipboard.


The DCQ directive allocates one or more eight-byte blocks of memory, aligned on four-byte boundaries, and defines the initial runtime contents of the memory. DCQU is the same, except that the memory alignment is arbitrary.


{label} DCQ{U} {-}literal{,{-}literal}

{label} DCQ{U} expr{,expr}



is a 64-bit numeric literal.

The range of numbers permitted is 0 to 264-1.

In addition to the characters normally permitted in a numeric literal, you can prefix literal with a minus sign. In this case, the range of numbers permitted is -263 to -1.

The result of specifying -n is the same as the result of specifying 264-n.


is either:

  • numeric expression.

  • A PC-relative expression.


armasm accepts expressions in DCQ and DCQU directives only when you are assembling for AArch64 targets.


DCQ inserts up to three bytes of padding before the first defined eight-byte block, if necessary, to achieve four-byte alignment.

Use DCQU if you do not require alignment.

Correct example

        AREA    MiscData, DATA, READWRITE
data    DCQ     -225,2_101     ; 2_101 means binary 101.

Incorrect example

number  EQU     2              ; This code assembles for AArch64 targets only.
        DCQU    number         ; For AArch32 targets, DCQ and DCQU only accept
                               ; literals, not expressions.

Related concepts