segment .data
sample dq 0x0a0a0a0a0a0a0a0a
field dq 0x12abcdef
segment .text
global main
main:
push rbp
mov rbp, rsp
mov rax, [sample] ; move quad-word into rax
ror rax, 23 ; shift to align bit 23 at 0
shr rax, 29 ; wipe out 29 bits
shl rax, 29 ; move bits back into alignment
or rax, [field] ; or in the new bits
rol rax, 23 ; realign the bit fields
mov [sample], rax ; save the field
xor rax, rax
leave
ret