Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.03.2014, 07:43   #1
Viktor2004
Пользователь
 
Регистрация: 14.09.2007
Сообщений: 12
По умолчанию Адресация данных

Здравствуйте уважаемые специалисты.
Прошу извинить за дилетантский вопрос, но ответа на него в книжках не нашел.
Изучаю структуру данных BIOS в своем компе. Прогоняю дамп через дизассемблеры и вижу: В левой колонке адрес, потом несколько байт соответствующих текущей команде, затем сама ассемблер-мнемоника команды. Но вот какое дело. Шина данных ведь у процессора х86 шестнадцатиразрядная, следовательно каждому физическому адресу соответствует два байта, правильно? А в левой колонке я наблюдаю что там адресован каждый байт. Как тут быть? Ведь от неверной адресации неправильно будут работать команды условного и безусловного перехода. Была бы шина данных восьмибитная, все бы было понятно.
Viktor2004 вне форума Ответить с цитированием
Старый 11.03.2014, 09:08   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Viktor2004 Посмотреть сообщение
А в левой колонке я наблюдаю что там адресован каждый байт.
Вы бы показали, что Вы конкретно имеете в виду.
Ибо, боюсь, что толковать Вас можно по разному.

если я правильно понял Ваш вопрос, то Вы заблуждаетесь в том, что путаете размер адреса с тем, на что он показывает! Адресовать можно ЛЮБОЙ байт (один), а вот всего таких байтов (каждый со своим личным адресом) 2^16 == 65536. Т.е. КАЖДЫЙ байт имеет адрес, равный двум байтам.


p.s. а ещё в ассемблере есть короткие переходы, где задаётся не адрес, а смещение от текущего адреса. Но это уже совсем другая история...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 11.03.2014, 09:13   #3
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,139
По умолчанию

Цитата:
Сообщение от Viktor2004 Посмотреть сообщение
Шина данных ведь у процессора х86 шестнадцатиразрядная, следовательно...
Шина данных у Пентиумов давным-давно 128-разрядная
Mikl___ вне форума Ответить с цитированием
Старый 11.03.2014, 10:31   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Шина данных ведь у процессора х86 шестнадцатиразрядная, следовательно каждому физическому адресу соответствует два байта, правильно?
нет, не правильно.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 11.03.2014, 10:31   #5
Viktor2004
Пользователь
 
Регистрация: 14.09.2007
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
Вы бы показали, что Вы конкретно имеете в виду.
Хорошо.
На рисунке 2.jpg показан скан программатора куда я слил данные микросхемы BIOS S29AL008J70TFI02
Эта микросхема имеет 16-разрядную шину данных. Ведь после команды RESET процессор начинает работать с 16-разрядной шиной в реальном режиме. Естественно BIOS в адресном пространстве располагается не с адреса 0, но для программатора это не важно. Вот я смотрю на картинке программатора что каждая пара байтов имеет свой физический адрес. При переходе на следующее слово адрес увеличивается на единицу. Вроде все правильно.
Теперь рисунок 3.jpg это скан дизассемблера. На нем видно что адрес индивидуальный имеет уже не слово, а байт. И в случае длинного перехода, когда в команде указывается конкретный физический адрес перехода, процессор должен выставить на шине адреса конкретный физический адрес перехода. Ассемблер (как и дизассемблер) тоже считает что каждый байт имеет свой адрес. Он в команде перехода укажет адрес байта. Но ведь если реально процессор выставит на шину адреса адрес указанный в команде длинного перехода, он в физическом пространстве попадет на адрес в два раза превышающий тот, который я реально хотел адресовать. Ведь физически каждый "железный" адрес у меня адресует не один, а два байта. (а в защищенном режиме работы процессора и того больше)
Изображения
Тип файла: jpg 2.jpg (114.7 Кб, 147 просмотров)
Тип файла: jpg 3.jpg (110.6 Кб, 112 просмотров)
Viktor2004 вне форума Ответить с цитированием
Старый 11.03.2014, 10:37   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Но ведь если реально процессор выставит на шину адреса адрес указанный в команде длинного перехода, он в физическом пространстве попадет на адрес в два раза превышающий тот, который я реально хотел адресовать.
адресное пространство процессора и адресное пространство микросхемы биоса никак не связаны.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 11.03.2014, 10:42   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Viktor2004 Посмотреть сообщение
Хорошо.
На рисунке 2.jpg показан скан программатора куда я слил данные микросхемы BIOS S29AL008J70TFI02
Эта микросхема имеет 16-разрядную шину данных. Ведь после команды RESET процессор начинает работать с 16-разрядной шиной в реальном режиме. Естественно BIOS в адресном пространстве располагается не с адреса 0, но для программатора это не важно. Вот я смотрю на картинке программатора что каждая пара байтов имеет свой физический адрес. При переходе на следующее слово адрес увеличивается на единицу. Вроде все правильно.
На мой взгляд, нет, не правильно.
Я согласен с вашим мнением, что на скрине видно, что пронумерованы слова (т.е. адресация касается пары байт), но почему Вы решили, что это правильно?! Имхо, это всего лишь способ отображения данных.



p.s. в связи с тем, что тема выходит за рамки моей компетенции, я видимо буду переходить в данной теме в режим read-only...


Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
адресное пространство процессора и адресное пространство микросхемы биоса никак не связаны.
Вот, спасибо! именно я и пытался выразить!!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 11.03.2014, 10:43   #8
Viktor2004
Пользователь
 
Регистрация: 14.09.2007
Сообщений: 12
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
адресное пространство процессора и адресное пространство микросхемы биоса никак не связаны.
Как не связаны? Биос разве не отображается в адресном поле процессора?
Вот что я прочитал в книжке.
Изображения
Тип файла: jpg 2.jpg (86.9 Кб, 143 просмотров)
Viktor2004 вне форума Ответить с цитированием
Старый 11.03.2014, 10:46   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Viktor2004 Посмотреть сообщение
Как не связаны? Биос разве не отображается в адресном поле процессора?
Вот что я прочитал в книжке.
угу. то, что у Вас написано в книжке имеет отношение к адресации процессора (см. скриношот №3), и не имеет отношения к тому, как ВНУТРИ МИКРОСХЕМЫ хранятся данные!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 11.03.2014, 10:51   #10
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
угу. то, что у Вас написано в книжке имеет отношение к адресации процессора (см. скриношот №3), и не имеет отношения к тому, как ВНУТРИ МИКРОСХЕМЫ хранятся данные!
правильно.

все вопросы улаживает контроллер памяти, а для процессора все прозрачно.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Адресация 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