Lo que esta poniendo ahi en AX es el valor del segmento CS.
Si usas offset para ref, seg1 y seg2 vas a ver sus direcciones (0, 2 y 4).
Si lo depuras en AX tendras 0166h, que se forma con los primeros bytes de ref y seg2. Arrancan en 0, 4 y 8. Si cambias el WORD de seg1 y seg2 por BYTE entonces arrancan en 0, 3 y 6 respectivamente.
Si usas offset para ref, seg1 y seg2 vas a ver sus direcciones (0, 2 y 4).
Código (asm) [Seleccionar]
.MODEL LARGE
ASSUME CS:CSEG
SEGMENT ref
DB 1
DB 2
DB 3
ENDS ref
SEGMENT seg1 WORD
DB ?
db 5
db 7
ENDS seg1
SEGMENT seg2 WORD
DW 666h
ENDS seg2
SEGMENT cseg WORD
entry:
PUSH CS
POP DS
mov BX, offset seg2
mov AL, byte ptr [BX]
MOV BX, offset ref
mov AH, byte ptr [BX]
MOV BX, offset seg1
MOV BX, offset seg2
ENDS CSEG
END entry
Si lo depuras en AX tendras 0166h, que se forma con los primeros bytes de ref y seg2. Arrancan en 0, 4 y 8. Si cambias el WORD de seg1 y seg2 por BYTE entonces arrancan en 0, 3 y 6 respectivamente.