访问和添加 nasm 中的号码

Accessing and adding to a number in nasm

我在使用这段代码时遇到问题。我试图将 16 添加到数字 656 中,同时保持我的代码结构相同。我标记了希望您忽略的部分。我是这个网站的新手,如果我需要更好地解释,请告诉我。谢谢大家的宝贵时间。这是已经写好的代码。我想我只是迷失在所有寄存器中。

目标是将 656 存储在 rbx 中并将 16 加到 656 中并替换 rbx 中的值。

        default rel
        section .text
        extern peek_byte
        extern read_byte
        extern write_byte
        extern raise_error
entry:
        mov rbx, rdi
        mov rax, 656
        mov [rbx + 0], rax
        mov rax, rbx
        or rax, 1
        add rbx, 8
        push rax
        mov rax, [rsp + 0] I would like to keep up to this the same.

        mov r9, rax
        and r9, 7
        cmp r9, 1
        jne raise_error
        xor rax, 1
        add rax, 16
        mov [rbx + 0], rax
        mov rax, rbx
        or rax, 1
        add rbx, 8
        mov rax, 120
        push rax
        
       mov rax, [rsp + 8] I do not wish to edit this part or beyond
        mov r9, rax
        and r9, 7
        cmp r9, 1
        jne raise_error
        xor rax, 1
        mov rax, [rax + 0]
        add rsp, 8
        add rsp, 8
        ret

感谢@jester。他的回复对我很有帮助。我将展示修复了哪些部分以达到预期的结果

        mov r9, rax
        and r9, 7
        cmp r9, 1
        jne raise_error
        xor rax, 1
        mov rax, [rax + 0]
        mov r9, rax
        and r9, 15
        cmp r9, 0
        jne raise_error
        Add rax, 16
        mov [rbx + -8], rax <--
        mov rax, 120
        push rax``