我获得了CS,DS,SS,ES,SP,BP,SI,DI,AX,BX,CX,DX的寄存器值。我如何找到代码段的十六进制字节大小?
答案 0 :(得分:2)
你不能。
8086现在已经过时了,但有些龙龙还记得它。它是一个16位处理器,但地址为20位:4段寄存器(CS,DS,ES和SS)的值移位4,并将偏移量加到其中。总可寻址内存为1 MB。任何段的最大大小为65536字节(0x10000)。但是处理器不知道代码段的实际大小。没有内存保护,允许在代码段的中间写入数据(可能是对还是错,取决于程序员是否知道原因:-()。
曾经有不同的常见内存模型(参考:8086 Memory Model):
所以: