0040103A CALL DWORD PTR DS:[40207A] USER32.MessageBoxA
Run Code Online (Sandbox Code Playgroud)
什么DS:意思?
我正在读关于内存寻址的内容.我读了关于段偏移然后关于描述符偏移的内容.我知道如何计算实模式下的确切地址.这一切都没问题,但我无法理解究竟是什么偏移?到处都读到:
在实模式下,寄存器只有16位,因此最多只能寻址64k.为了允许寻址更多内存,地址קד是从segment*16 + offset计算的.
在这里我可以理解第一行.我们有16位,所以我们可以解决最多2 ^ 16 = 64k.
但这第二行是什么?细分代表什么?为什么我们将它乘以16?为什么我们添加偏移.我只是无法理解这个偏移是什么?有人可以解释我或给我链接吗?
我在汇编中调试了CLR代码,并且排成一行
mov rax, qword ptr [ff4053c0h]
Run Code Online (Sandbox Code Playgroud)
我想qword ptr [ff4053c0h]是指我感兴趣的字符串,但ff4053c0h不是有效的内存位置.阅读qword ptr它似乎引用了一个基于基址寄存器的地址(例如qword ptr [rsp+30h],堆栈中有30个字节),但是我找不到没有基址寄存器的含义.