我很难理解10H值的来源?例子说ds = 1275H(?segment reg。)和bx:457H(?offset)为什么ds乘以10H。他们的意思是1275是十六进制值(所以dec。值是4725)?
答案 0 :(得分:2)
段寄存器指向 16 字节的内存块...
这就是混乱开始的地方。段寄存器指向 65536 字节的内存块,偏移量寄存器指示要添加到此65536字节块的起始位置的字节数。在16字节块的开头添加字偏移是没有意义的!
这些64KB块在内存中重叠很多。它们的起始地址仅相差16个字节!您可以将这些64KB块视为形成一个数组,然后段寄存器包含的是其元素的零基索引。
因此,这些块之间的间距是您所询问的10H的真正含义。
为了得到存储器位置的线性(实际)地址,我们需要将段寄存器中的值乘以16(用十六进制表示法表示为10h),然后将偏移量加到它上面。
答案 1 :(得分:1)
这里的关键字是"段寄存器指向16字节的存储器块"。如果将整个存储器排列为16字节块,则段寄存器(例如DS)将包含块的编号。
要从段寄存器的值到线性地址,必须乘以16,这与十六进制数10相同,后者通常写为10H。
计算段的起始地址后,添加偏移寄存器。
是的,1275H是一个十六进制数字,它是" H"表示。它对应于4725十进制。