什么:运算符在汇编中做什么?

The*_*Cat 1 x86 assembly operators nasm

什么:运算符在汇编中做什么?在代码中看到:DS:DX 我还没有找到这个运算符的任何文档.(即时通讯使用NASM)

pax*_*blo 5

这实际上只是一个寄存器分隔符,而不是运算符.这意味着使用DX寄存器作为DS段寄存器基址的偏移量.

它实际上你的地址取决于你正在运行的模式(真实的或受保护的).

例如,在实模式下,段寄存器乘以16并添加到偏移寄存器,以提供20位物理地址.如果DS0x1234,DX0x5678:

  12340
+ 05678
  -----
  179B8
Run Code Online (Sandbox Code Playgroud)

在保护模式下,DS实际上是一个段选择器,用于查找表中存储器的基址,然后将其添加到偏移寄存器以提供值.

在确保从外部存储器中分页相关虚拟存储器之后,该值总是由存储器管理单元(MMU)映射到物理地址的虚拟地址.