![]() |
1
4
不能,因为指令集不包含执行此操作的指令。它只是x86的众多特性之一。 这些限制对于汇编语言来说是相当正常的。大多数体系结构包含一些经过特殊处理的寄存器(例如处理器状态字),尽管通常比x86体系结构少。
|
![]() |
2
1
因此,如果您试图直接将数据传递到特殊寄存器(这里是ds或数据段),它将无法正常工作,因为它不知道如何以这种方式接受数据。因此,我们首先得到“数字”或内存中数据开始的位置,并将该点传递给ds寄存器。 |
![]() |
3
0
段寄存器用于控制寄存器指令使用的内存段,因此,您最不希望的事情是从内存位置加载段寄存器(在本例中为数据段寄存器)。修改DS的动作可导致在更新DS的过程中被读取的存储器位置改变,即,加载到DS中的第一位/字节现在导致它在剩余部分被读取之前指向另一段。将值读入累加器(AX)或另一个通用寄存器更安全,因此,现在将值加载到段寄存器时,该值就在处理器中,因此在加载过程中不存在值损坏的可能性。 |
![]() |
Adelin · ISA存储在哪里?如何准确地考虑它? 7 年前 |
|
Ashley Meah · CPU/汇编程序如何知道下一条指令的大小? 10 年前 |
![]() |
vkulkarni · Q(饱和标志)在ARM中的重要性 11 年前 |