访问和添加 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``
我在使用这段代码时遇到问题。我试图将 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``