Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: программирование на языке Assembler


Информационный Канал Subscribe.Ru

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Assembler

Выпуск № 184
от 13.07.2005, 15:10

Администратор:Калашников О.А.
В номере:Вопросов: 1, Ответов: 2
В рассылке:Подписчиков: 245, Экспертов: 97


Вопрос № 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) выдаст следующее:
С лева направо:
младший адрес --> старший адрес

ds:110 00 00 00 00 |00 01 |00 02|
ds:118 |00 03| 00 00 00 00 00 00

Мой вариант:
С право налево:
старший адрес <-- младший адрес

ds:120 120 11F 11E 11D 11C 11B 11A 119
ds:118 118 117 116 115 114 113 112 111
ds:110 110 10F 10E 11D 11C 11B 11A 109
ds:108 и т.д

Вот, что должен отобразить дебагер:
ds:120 00 00 00 00 00 00 00 |03
ds:118 00 |02 00||01 00| 00 00 00
ds:110 00 00 00 00 00 00 00 00

В итоге мы видим правильные для нас цифры "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


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2005, RusFAQ.ru, Россия, Москва. Все права защищены.
Идея, дизайн, программирование, авторское право: Калашников О.А.

Яндекс


Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.faq
Отписаться
Вспомнить пароль

В избранное