1
我試圖存儲EDX的最左側字節和隨後EAX的內容到5個字節點在內存中的以下行:NASM - 無效段重載
mov numh, [dl:eax]
和我得到的錯誤「無效段覆蓋」。
這是什麼意思,我該如何解決它?
我試圖存儲EDX的最左側字節和隨後EAX的內容到5個字節點在內存中的以下行:NASM - 無效段重載
mov numh, [dl:eax]
和我得到的錯誤「無效段覆蓋」。
這是什麼意思,我該如何解決它?
首先,「無效段覆蓋」是指您表達[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]」 是有效的。但我希望這能讓你朝着正確的方向前進。 「
」首先,「無效段覆蓋」是指你表達[dl:eax]的方式,在這個表達式中,'dl'作爲段寄存器的一部分,問題在於dl不是有效的段寄存器。段寄存器不是你想在這種情況下使用的。「 你能詳細說明一下嗎? – mavix 2012-03-11 05:57:59
段寄存器有點超出了本討論的範圍,因爲它們不是你想要在這種情況下使用的。試試我上面概述的路徑,如果您對分段寄存器的工作原理感興趣,請閱讀以下文章:http://en.wikipedia.org/wiki/X86_memory_segmentation – 2012-03-11 06:05:20
您列出的路徑應該可以工作;我只是覺得[dl:eax]會引用dl和eax的連接數據。 – mavix 2012-03-11 06:27:30