Кажется, я не могу понять, какое значение хранит сегмент в хранилище. Я знаю общее определение, что
они используются для хранения начального адреса сегмента кода, данных
Сегмент и сегмент стека соответственно
Итак, хранит ли регистр CS 16 старших значащих битов первой команды в сегменте кода? Регистры DS и SS делают то же самое для сегмента данных и сегмента стека?
.386
.model flat,stdcall
.stack 4090h
.data
.X DWORD 5 ;0x22345671
.code
main proc
mov ESI,offset X ;0x12345672
mov EAX,[ESI] ;0x12345673
mov EBX,1 ;0x12345674
add EAX,EBX ;0x12345675
main endp
end main
Предполагая, что 0x22345671 является адресом переменной памяти X, а диапазон команд сегмента кода находится в диапазоне 0x12345672-0x12345675. Каковы значения регистров CS, DS, SS?