What does SEG directive do in 8086?

前端 未结 3 1695
花落未央
花落未央 2021-01-23 19:51

SEG A :

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

I guess that means

相关标签:
3条回答
  • 2021-01-23 19:57

    It copies the content of AX + DX address (which is A) to 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
    
    0 讨论(0)
  • 2021-01-23 19:58

    SEG provides the operand segment. If the variable segment is referenced by no segment register, you can use SEG. But otherwise you should use LEA, LDS. example:

     .data
    

    var db ? .code x db ?

    start: ...

    for var SEG is DS and for x SEG is CS, their segment addresses.

    0 讨论(0)
  • 2021-01-23 20:18

    I guess that means that if A lies in Data Segment, SEG A is the same as DS.

    Correct, if DS points to Data Segment.

    does
    MOV AX, LEA A
    MOV DX, SEG A
    MOV AX, [AX + DX]
    copy the physical address of A to AX?

    The last instruction is invalid, it does not exist in any of x86 CPUs. As such, this code does nothing at all. If anything, it just sits in an .asm file waiting to be corrected and assembled.

    0 讨论(0)
提交回复
热议问题