Assembly 获取装配中结构构件的偏移量
因此,我有这样的结构:Assembly 获取装配中结构构件的偏移量,assembly,tasm,Assembly,Tasm,因此,我有这样的结构: String STRUC max_length db 254 real_length db ? buffer db 255 dup(?) String ENDS 在数据段中,我定义了«String»类型的变量: source_str String <> 我是初学者,我的想法是这样的:我们有一个偏移量(在寄存器中或作为标签)-地址,将它放在[]之间,然后得到值-就像C/C+
String STRUC
max_length db 254
real_length db ?
buffer db 255 dup(?)
String ENDS
在数据段中,我定义了«String»类型的变量:
source_str String <>
我是初学者,我的想法是这样的:我们有一个偏移量(在寄存器中或作为标签)-地址,将它放在[]之间,然后得到值-就像C/C++中的指针解引用一样
我的问题是:为什么最后一个命令不能像我认为的那样工作?有没有办法在BX寄存器中使用“mov”和偏移量来实现这一点 对于masm 6.11,需要包括结构名称:
lea dx, (String ptr [bx]).buffer
对于另一个问题,不能将偏移量用于基址寄存器:
mov dx, offset (String ptr [bx]).buffer ; invalid
您可以使用add,但lea对一条指令执行相同的操作:
mov dx, bx
add dx, offset (String ptr ds:0).buffer
由于您显然想要实际地址,而不是结构中的偏移量,因此需要添加
bx
,而mov
不能这样做。您需要lea
,如您所示。@Jester我得到的不是结构中的偏移量,而是完全错误的值。例如:«buffer»的偏移量为0003,结构内的偏移量为2字节,但我得到6558字节-source_str的偏移量是多少?我想知道是不是6556?
mov dx, bx
add dx, offset (String ptr ds:0).buffer