SEG指令在8086中做了什么?

时间:2013-01-25 19:04:02

标签: assembly x86-16 tasm

SEG A

Assigns the content held in segment register corresponding to the segment in which A resides to the operand.

我想这意味着如果A位于数据细分中,则SEG ADS相同。

由于DS保存数据段的基址,所以

MOV AX, LEA A
MOV DX, SEG A
MOV AX, [AX + DX]

A实际地址复制到AX

3 个答案:

答案 0 :(得分:1)

  

我想这意味着如果A位于数据段中,则SEG A与DS相同。

如果DS指向数据段,则更正。

  

确实
  MOV AX,LEA A
  MOV DX,SEG A
  MOV AX,[AX + DX]
  将A的物理地址复制到AX?

最后一条指令无效,在任何x86 CPU中都不存在。因此,此代码根本不起作用。如果有的话,它只是位于.asm文件中等待纠正和组装。

答案 1 :(得分:0)

将AX + DX地址(即A)的内容复制到AX。

MOV AX, LEA A ; Copy A offset to AX
MOV DX, SEG A ; Copy A segment to DX
MOV AX, [AX + DX] ; Copy A to AX

答案 2 :(得分:0)

SEG提供操作数段。如果变量段由无段寄存器引用,则可以使用SEG。但否则你应该使用LEA,LDS。 例如:

 .data

var db?      。码 x db?

开始: ...

对于var SEG是DS,对于x SEG是CS,它们的段地址。