我需要知道是否有直接使用mov指令加载代码段寄存器的限制。
从实模式切换到保护模式时,这让我感到震惊。我发现为了在代码段中放入正确的值,“跳转”指令用于设置正确的段。
那么,由于任何这样的限制,跳转指令的这种用法吗?为什么我们不能直接将值加载到代码段中?
在8086中,此结构是正确的:
mov bh,[bx]
Run Code Online (Sandbox Code Playgroud)
但这是不正确的:
mov bh,[cx]
Run Code Online (Sandbox Code Playgroud)
我不知道为什么 我认为通用寄存器(AX,BX,CX,DX,SP,BP,SI和DI)是可以用于任何目的的寄存器,并且BX用于基地址或CX用于计数器的声明只是一个约定,它们完全没有区别。但是看来我错了。你能解释原因吗?这些寄存器之间的确切区别是什么?(例如,为什么不能将基址保存在cx寄存器中?)