上次的几个问题没得到满意答案
这次分开问:
问题1
实地址模式的范围是0到FFFFF。可寻址1MB内存空间,保护模式范围是0到FFFFFFFF,可寻址4GB内存,我内存只有512它是怎么寻址4GB的?用虚拟内存吗?
问题2
DOS程序应该是16位的吧,如何区分32位程序16位程序。
问题3
内存和寄存器都有寻址最大范围吗,如果有是多少到多少?
问题4
16位模式程序中的跳转目标地址如果超出了一个有符号字节偏移所允许的范围,MASM就会给出一个“relative jump out of range”的错误假如指令的平均长度是3个字节,循环中大约可以存放40条指令。要绕过这种限制,避免错误信息,可以先跳转到一个无条件指令处(跳转范围是16位的有符号字),再通过无条件指令跳转到真正的目的地址。
上面这段话说的范围是怎么规定的比如:跳转范围是16位的有符号字?
(16位模式程序中的跳转目标地址如果超出了一个有符号字节偏移所允许的范围)范围是多少?如果是32位的呢?
问题5
偏移最大的范围是多少?
L1
A word 12
mov ecx,12345
loop L1
如果这样的话:
loop L1
A word 12
mov ecx,12345
L1
中间的过程不会被执行吧?
L1
mov ecx,12345
mov ecx,1234
JA L1
这样会发生跳转吗?如果不会那应该写成什么样?
如果会
L1
A word 12
mov ecx,12345
loop L1
就可以代替了吧
L1
mov ecx,12345
mov ecx,1234
JA L1