ds:si和es:di在汇编中是什么意思



movsb(移动字符串,字节(指令获取地址处的字节ds:si,将其存储在地址es:di,然后递增或递减si和di按一进行注册。

我知道esi,si和edi,di寄存器,

而不是ds:sies:di

它们是什么意思?

ds:sies:di表示有问题的寄存器引用的段:偏移量。当您在真实模式下工作时(其中每个偏移最大为64K(,这一点非常重要。

在实际模式中,分段和偏移量组合为segment * 16 + offset

在保护模式中,段寄存器保持一个"0";选择器";。选择器引用的内存的基地址与选择器本身的值没有直接关系——相反,选择器只是充当一个索引来查找表中的数据。然而,在通常的情况下,这意味着很少——大多数(当前(受保护模式环境都是用CS、DS、ES和SS设置的,所有这些环境的基地址都是0,最大偏移量是4 GB,因此通过DS和ES寻址没有区别。

这些是16位寄存器,用于LODSB或其他通过内存循环并应用或复制数据的操作。您将地址加载到es:di或ds:si中,并将cx设置为需要顶部复制的任何字节数或单词数,然后调用LODSB LOADSW或其他什么。您甚至可以使用这两种方法从一个内存位置复制到另一个内存。请参阅此处的示例,其中他们将字符串复制到串行端口:http://vitaly_filatov.tripod.com/ng/asm/asm_000.71.html

最新更新