segment .text
global main
main:
push rbp
mov rbp, rsp
mov rax, 0x12345678
shr rax, 8 ; I want bits 8-15
and rax, 0xff ; rax now holds 0x56
mov rax, 0x12345678 ; I want to replace bits 8-15
mov rdx, 0xaa ; rdx holds replacement field
mov rbx, 0xff ; I need an 8 bit mask
shl rbx, 8 ; Shift mask to align @ bit 8
not rbx ; rbx is the inverted mask
and rax, rbx ; Now bits 8-15 are all 0
shl rdx, 8 ; Shift the new bits to align
or rax, rdx ; rax now has 0x1234aa78
xor rax, rax
leave
ret