Вопрос № 101118: Имеется адрес 0001:0003 смещение 0003 указывает на конкретный байт, адрес 0001 - это 16 разрядный адрес потому что в HEX один знак 4 бинарных тобишь 0 - 4 0 - 4 0 - 4 1 - 4. 4 по 4 значит 16 бит, или 4 в хексе. Правильно я рассуждаю?...
Вопрос № 101.118
Имеется адрес 0001:0003 смещение 0003 указывает на конкретный байт, адрес 0001 - это 16 разрядный адрес потому что в HEX один знак 4 бинарных тобишь 0 - 4 0 - 4 0 - 4 1 - 4. 4 по 4 значит 16 бит, или 4 в хексе. Правильно я рассуждаю?
Отвечает: Лысков Игорь Витальевич
Здравствуйте, Artyom Zaitsev!
Неправильно.
Адрес 0001:0003 означает несколько другое.
Адреса в реальном режиме процессора 20-битные, а регистры 16-битные.
Чтобы сформировать 20-битный адрес и придумали этот "хитрый" способ.
Значение сегмента (0001h в нашем случае) необходимо умножить на 10h (или,
что то же самое - добавить справа шестнадцатиричный 0)
и полученную величину сложить со смещением.
Т.е. 0001h * 10h + 0003h = 00013h
Надо заметить, что один и тот же 20-битный адрес может быть представлен
разными наборами сегмент:смещение
Например: 0123h:0011h = 0124h:0001h = 01241h
И еще: сегмент определяет(когда умножим на 10h) 20-битный адрес начала
64к памяти (только 64к могут адресоваться 16-битным адресом).
А смещение - адрес, начиная с начала сегмента.
--------- Удачи!
Ответ отправил: Лысков Игорь Витальевич (статус: Практикант)
Ответ отправлен: 07.09.2007, 10:08