|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
11.03.2014, 07:43 | #1 |
Пользователь
Регистрация: 14.09.2007
Сообщений: 12
|
Адресация данных
Здравствуйте уважаемые специалисты.
Прошу извинить за дилетантский вопрос, но ответа на него в книжках не нашел. Изучаю структуру данных BIOS в своем компе. Прогоняю дамп через дизассемблеры и вижу: В левой колонке адрес, потом несколько байт соответствующих текущей команде, затем сама ассемблер-мнемоника команды. Но вот какое дело. Шина данных ведь у процессора х86 шестнадцатиразрядная, следовательно каждому физическому адресу соответствует два байта, правильно? А в левой колонке я наблюдаю что там адресован каждый байт. Как тут быть? Ведь от неверной адресации неправильно будут работать команды условного и безусловного перехода. Была бы шина данных восьмибитная, все бы было понятно. |
11.03.2014, 09:08 | #2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Вы бы показали, что Вы конкретно имеете в виду.
Ибо, боюсь, что толковать Вас можно по разному. если я правильно понял Ваш вопрос, то Вы заблуждаетесь в том, что путаете размер адреса с тем, на что он показывает! Адресовать можно ЛЮБОЙ байт (один), а вот всего таких байтов (каждый со своим личным адресом) 2^16 == 65536. Т.е. КАЖДЫЙ байт имеет адрес, равный двум байтам. p.s. а ещё в ассемблере есть короткие переходы, где задаётся не адрес, а смещение от текущего адреса. Но это уже совсем другая история... |
11.03.2014, 09:13 | #3 |
Участник клуба
Регистрация: 11.01.2010
Сообщений: 1,139
|
|
11.03.2014, 10:31 | #4 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
11.03.2014, 10:31 | #5 |
Пользователь
Регистрация: 14.09.2007
Сообщений: 12
|
Хорошо.
На рисунке 2.jpg показан скан программатора куда я слил данные микросхемы BIOS S29AL008J70TFI02 Эта микросхема имеет 16-разрядную шину данных. Ведь после команды RESET процессор начинает работать с 16-разрядной шиной в реальном режиме. Естественно BIOS в адресном пространстве располагается не с адреса 0, но для программатора это не важно. Вот я смотрю на картинке программатора что каждая пара байтов имеет свой физический адрес. При переходе на следующее слово адрес увеличивается на единицу. Вроде все правильно. Теперь рисунок 3.jpg это скан дизассемблера. На нем видно что адрес индивидуальный имеет уже не слово, а байт. И в случае длинного перехода, когда в команде указывается конкретный физический адрес перехода, процессор должен выставить на шине адреса конкретный физический адрес перехода. Ассемблер (как и дизассемблер) тоже считает что каждый байт имеет свой адрес. Он в команде перехода укажет адрес байта. Но ведь если реально процессор выставит на шину адреса адрес указанный в команде длинного перехода, он в физическом пространстве попадет на адрес в два раза превышающий тот, который я реально хотел адресовать. Ведь физически каждый "железный" адрес у меня адресует не один, а два байта. (а в защищенном режиме работы процессора и того больше) |
11.03.2014, 10:37 | #6 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
11.03.2014, 10:42 | #7 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
Я согласен с вашим мнением, что на скрине видно, что пронумерованы слова (т.е. адресация касается пары байт), но почему Вы решили, что это правильно?! Имхо, это всего лишь способ отображения данных. p.s. в связи с тем, что тема выходит за рамки моей компетенции, я видимо буду переходить в данной теме в режим read-only... Вот, спасибо! именно я и пытался выразить!! |
|
11.03.2014, 10:43 | #8 | |
Пользователь
Регистрация: 14.09.2007
Сообщений: 12
|
Цитата:
Вот что я прочитал в книжке. |
|
11.03.2014, 10:46 | #9 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
|
11.03.2014, 10:51 | #10 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
все вопросы улаживает контроллер памяти, а для процессора все прозрачно. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Адресация | Alexey_68 | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 7 | 06.03.2013 23:24 |
ip адресация | Якъ | Помощь студентам | 3 | 24.07.2012 08:18 |
WP и адресация... | Maksimall89 | WordPress и другие CMS | 1 | 10.01.2012 20:03 |
Адресация и получение данных в микропроцессоре | Krasi | Помощь студентам | 2 | 16.10.2011 13:18 |
Адресация данных при открытии файла | PSergeyV | Общие вопросы Delphi | 3 | 14.05.2010 00:25 |