写入存储在寄存器中的地址

use*_*241 2 assembly nasm x86-16

这就是我想做的:

我想写一个存储在寄存器中的地址,这样就可以使用它。

mov bx, STRING
add bx, 0x1

;and here I want to write a value the the address in bx

STRING: db "abcdefghijklmnopqrstuvwxyz"
Run Code Online (Sandbox Code Playgroud)

我可以理解,对此可能有一个简单的说明,但找不到。

我正在使用NASM汇编器使用16位处理器。

Mic*_*ael 5

引用位于寄存器中包含的地址处的内存的正确方法bx[bx]。因此,如果要获取另一个寄存器中包含的值并将其存储在[bx]您的位置,则可以使用:

mov [bx],al
mov [bx],dx
mov [bx],ecx
; ..etc..
Run Code Online (Sandbox Code Playgroud)

您还可以直接存储立即值:

mov byte [bx],0
mov byte [bx],'A'
mov word [bx],0x1234
; ..etc..
Run Code Online (Sandbox Code Playgroud)

请注意大小前缀(byteword等),用于告诉汇编程序立即操作数应为多少大小。当直接将立即数写到内存中时,这是必要的,因为仅写类似的东西mov [bx],0就很模棱两可。