gpt4 book ai didi

汇编 MOV 指令操作数

转载 作者:行者123 更新时间:2023-12-05 09:18:29 33 4
gpt4 key购买 nike

当我们想要像这样创建一个初始化变量时:

name db 'zara ali'

我们创建了一个字节大小变量,但我们在其中存储了一个字符串

这怎么可能??

当我们使用这条指令时:

MOV ecx, name

我们在 4 字节大小的寄存器中存储了一个字节大小的变量,而在 MOV 指令中,两个操作数的大小必须相同。怎么可能??

最佳答案

name db 'zara ali' 只是一个简写

name db 'z', 'a', 'r', 'a', ' ', 'a','l','i'

这是

的另一种简写
name db 'z'
db 'a'
db 'r'
db 'a'
db ' '
db 'a'
db 'l'
db 'i'

因此这是一个字节序列,第一个字节的地址被命名为 name

MOV ecx, name 在不同的汇编器中有不同的语义。
在 NASM 中,它不读取变量 name,而是将符号 name 的值存储在 ecx 中——它等同于 TASM/MASM符号

mov ecx, OFFSET name
lea ecx, name ;This is an abuse of notation but valid in TASM

在 MASM/TASM 中,它读取地址 name 处的 DWORD(通过使用像 ecx 这样的 DWORD 寄存器暗示),从而读取前四个字节(zara).
它等同于 NASM 中的 mov ecx, [name]mov ecx, DWORD [name]

关于汇编 MOV 指令操作数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44301140/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com