Вопрос № 23227: Уважаемые программисты!, я вам просто, неправильно вопрос задал!
Вот, как я понимаю адреса в ОЗУ.
Регистры оперативной памяти начинают счет слево направо.
Вот, как это выглядит
FFFF ... - 0002-0001 - 0000
конец начало
При...
Вопрос № 23.227
Уважаемые программисты!, я вам просто, неправильно вопрос задал!
Вот, как я понимаю адреса в ОЗУ.
Регистры оперативной памяти начинают счет слево направо.
Вот, как это выглядит
FFFF ... - 0002-0001 - 0000
конец начало
При записи байта в ОЗУ происходит следующее:
0001
При записи слова поверх байта:
0002
Теперь, чтобы вытащить от туда первый байт нужно
адрес уменьшить на 2 байта и смещение как раз попадет на начало первого байта.
Допустим в памяти хранится FF 44 33 11h
т.е. FFFF ... 0000
в младшем байте будет 11 в следующем 33 и т.д., а отладчик покажет следующее:
Так как он показавает адреса слево направо то на экране мы увидим:
11 33 44 FFh т.е.
0000 ... FFFF
Выполним следующую программу:
mov word ptr[0114],100h
mov word ptr[0116],200h
mov word ptr[0118],300h
var_1 dw ?
var_2 dw ?
var_3 dw ?
Дебагер (TD) выдаст следующее:
С лева направо:
младший адрес --> старший адрес
В итоге мы видим правильные для нас цифры "0100","0200","0300" и никакие не перевернытые!
Надеюсь, что я без ошибок все сделал.
Младшие адреса разрядов с правой стороны.
Но теперь переменные записаны не с верху в низ, а с низу вверх.
Но теперь - то числа мы видим правильными и не приходится выворачивать
мозг наизнанку.
Я правильно мыслю, или меня никто не понял?
Тепреь, если записать четверное слово (DQ) FFEEDDCCh,
то в отладчике мы бы видели именно FFEEDDCCh, а не
CCDDEEFFh
Отправлен: 08.07.2005, 15:01
Вопрос задал: Терсков Алексей Николаевич (статус: Посетитель)
Всего ответов отправлено: 2
Отвечает: Евгений Иванов
Здравствуйте, Терсков Алексей Николаевич!
а что тебе мешает в отладчике включить режим отображения "как слово" "как dword" ?!
смотри картинку (12 Кб).
видишь 5A4D ?
это начало exe-файла. а там 4d 5a.
так тебе нужно?
:))))))
Прикреплённый файл: Загрузить >> Срок хранения файла на сервере RusFAQ.ru составляет 14 суток с момента отправки ответа. --------- Что имеем - не храним, потерявши - плачем
Ответ отправил: Евгений Иванов (статус: Профессор)
Отправлен: 08.07.2005, 15:23
Отвечает: Ayl
Здравствуйте, Терсков Алексей Николаевич!
Блин, где ты траву такую берешь? :-)
Регистры какие-то счет начинают... Еще и расположены слева направо или наоборот... Да, трава знатная! :-) А точно слева направо а не сверзу вниз?
А теперь серьезно.
Предложение у тебя, конечно, интересное, но как ты предлагаешь в твоей системе работать с байтими и строками. Читать строку справа налево как-то не очень хочется, тут мозги точно съедут... И что делать со структурами разными, в которых все типы вперемешку идут. Опять же, массивы криво отображаться будут.
Европейский человек привык текст читать слева направо и сверху вниз. Ну так исторически сложилось. Поэтому и дампы отображаются в таком виде: параграфы памяти увеличиваются в направлении сверху вниз (от младших адресов к старшим), а по строке байты немеруются слева направо.
Да, с учетом принятой в x86 модели записи многобайтовых значений от младших разрядов к старшим происходит некоторое неудобство чтения этих значений непосредственно из дампа. Хотя со временем привыкаешь и даже не замечаешь, как автоматом считываешь их в нужном порядке. Дело привычки.
Но повторяю еще раз, что это все исключительно дело визуализотора. Обычно при отображении дампа есть возможность выбрать вид представления: по байтам, по словам, по двойным словам... То есть если ты работаешь с 2-хбайтовыми числами, ты можешь поставить отображение дампа по словам. И получишь нормальный дамп с уже правильно сформированными словами.
Такое мое мнение. Может быть зашоренное использованием стандартных отладчиков уже очень долгое время.
--------- Трудное - то, что можно сделать немедленно. Невозможное - то, для выполнения чего требуется немного больше времени
Ответ отправил: Ayl (статус: Профессор)
Отправлен: 08.07.2005, 16:57