我试图将edx的最左边的字节存储,然后将eax的内容存储到内存中的5字节点,并使用以下行:
mov numh, [dl:eax]
我收到错误"无效的段覆盖"。
这是什么意思,我该如何解决?
答案 0 :(得分:2)
首先,“无效段覆盖”是指您表达[dl:eax]的方式。在这个表达式中,'dl'充当一个称为段寄存器的东西。问题是dl不是有效的段寄存器。在这种情况下,段寄存器不是您想要使用的。
我想澄清你在问题中提出的问题:
如果以上情况属实,则需要保存edx(如果关心其内容),向右移24位以将0x12转换为dl,然后存储它。
这是我头脑中的一些ASM:
push edx ; save initial value
shr edx, 24 ; get the leftmost byte down to the 'dl' portion of edx
mov [numh], dl ; write the byte to the memory referenced by numh
mov [numh+1], eax ; write eax
pop edx ; restore original edx value
注意:我不记得“mov [numh + 1]”是否有效。但我希望这会让你朝着正确的方向前进。