Я новичок в сборке x86, и я пытаюсь понять код в этом документе: http://www.cs.cmu.edu/~410-s07/p4/p4-boot.pdf страница 3:
movw $0x1234, %ax
movw %ax, %ds
movw $0x5678, %bx
# The following instruction is the same as "movw $0x1337, (%bx)".
movw $0x1337, %ds:(%bx) # Places 0x1337 into memory word 0x179b8.
# Segment Base: %ds << 4: 12340
# Offset: %bx: + 5678
# -------
# Linear Address: 179b8
Но я не понимаю команду:
movw $0x1337, %ds:(%bx) # Places 0x1337 into memory word 0x179b8.
Почему конкатенация% ds с (% bx) совпадает с ((% ds < 4) |% bx)?
Поскольку я в реальном режиме (16 бит), конкатенация не должна быть% ds < < 8? вместо% ds < 4
И почему скобки всего около% bx? И не вокруг всей структуры вроде: movw $0x1337, (% ds:% bx)?