            segment .text
            global  main
    main:
            push    rbp
            mov     rbp, rsp
            sub     rsp, 32         ; shadow register space
            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