-
27.03.2007, 00:43 #1
- Регистрация
- 27.03.2007
- Сообщений
- 7
- Поблагодарили
- 0
- Поблагодарил
- 0
Пару вопросов по операндам и т.п.
Как с помощью полей Req и R/M определяется местонахождение операнда?
Адрес селектора 0AFF16, адрес смещения 000B16. Определите физический адрес.
ЗЫ: какойто ужас, нигде литературу не могу найти!
-
27.03.2007, 09:44 #2
- Регистрация
- 10.10.2003
- Адрес
- Калуга
- Возраст
- 50
- Сообщений
- 441
- Поблагодарили
- 12
- Поблагодарил
- 7
Может быть, адрес сегмента 0AFF16? У меня тут есть книга Журдена в электронном виде для IBM PC , Intel 8088, Intel 80286, но тоже насчет адресов не очень понятно объяснено. Но как я помню, эта сегментация существует для того, чтобы процессор мог обрабатывать номера ячеек памяти с разрядностью, которая больше, чем разрядность шины данных самого процессора. Поэтому разбиение на сегменты зависит от разрядности шины данных процессора. И получается, что сегмент не может быть больше, чем разрядность шины данных процессора. То есть для процессоров с 16-битными, 20-битными, 32-битными шинами данных, возможно, различные картины ( здесь я не проверял).
Причем физически на 16-битных процессорах выводы шины данных ( 16 ножек соответственно ) также являются выводами шины адреса в различные моменты времени. Их состояние зависит от состояния шины управления.
В конкретно Вашем примере у меня получилось 0AFF16+000B16=B0A2C
-
27.03.2007, 13:22 #3
- Регистрация
- 27.03.2007
- Сообщений
- 7
- Поблагодарили
- 0
- Поблагодарил
- 0
Может быть, адрес сегмента 0AFF16?
В конкретно Вашем примере у меня получилось 0AFF16+000B16=B0A2C
А по местонахождению операнда никто не в курсе? Это самый болезненный вопрос...
-
28.03.2007, 09:53 #4
- Регистрация
- 10.10.2003
- Адрес
- Калуга
- Возраст
- 50
- Сообщений
- 441
- Поблагодарили
- 12
- Поблагодарил
- 7
Есть еще один момент: ячейка с нулевым адресом вполне может существовать, так как однозначно определяется низкими или высокими уровнями на всей шине адреса. И в этой ячейке может находиться какая-то информация. Это может быть команда или какие-то данные.
А вот конкретно операнд, наверно, может, может состоять из нескольких команд. Хотя это уже похоже на процедуру. Я тут уже тоже путаюсь.
-
30.03.2007, 10:41 #5
- Регистрация
- 27.03.2007
- Сообщений
- 7
- Поблагодарили
- 0
- Поблагодарил
- 0
HELP! Нуна очень срочно ответить на этот тупой вопрос, пусть и не совсем правильно...
-
30.03.2007, 21:09 #6
- Регистрация
- 06.09.2002
- Адрес
- Екатеринбург
- Возраст
- 61
- Сообщений
- 246
- Поблагодарили
- 7
- Поблагодарил
- 49
Вы бы хоть тип процессора назвали...
73. Андрей (RZ9CV)
-
31.03.2007, 12:26 #7
- Регистрация
- 27.03.2007
- Сообщений
- 7
- Поблагодарили
- 0
- Поблагодарил
- 0
Любой тип процессора. И буду благодарен за любую помощь!
-
03.04.2007, 11:56 #8
- Регистрация
- 05.12.2005
- Адрес
- Волжский, Волгоградская обл.
- Возраст
- 69
- Сообщений
- 59
- Поблагодарили
- 1
- Поблагодарил
- 0
:Любой тип процессора.
Это хороший ответ, но неправильный.
Типов процессоров куча пойми про какой речь :russian_roulette:
Но суда по тому, что в вопрсе прозвучали слова селектор и смещение, можно предположить что речь идет об Интеловских процессорах i86 й серии.
В этих процессорах слова селектор и сегмент это "две большие разницы"
Слво сегмент применяется при работе процессора в реалльном режиме (real mode) и не может быть больше значения 0xFFFF (потому как такой размер регистра - 16 бит). В этом случае надо вычислять так:
0x4321 - селектор
+0x3210 - смещение
т.е. значение селектора должно быть сдвинуто влево на 4 бита относительно смещения.
В вопросе же прозвучало слово селектор, это наводит на мысль, что речь идет о защищенном режиме (protected mode) процессора. Кроме того значение селектора так-же не может превышать 0xFFFF, так что речь видимо идет о физическом адресе селектора. Опять же в обычном защищеном режиме размер каждого селектора не может превышать магических 64кБайт (0xFFFF). В то время как в линейном режиме адресов с разбиением памяти в селекторе на страницы размером 4кБайт, размер селектора может быть практически любым.
Но в любом случае если известен физический адрес селектора и смещения, то физический адрес в памяти вычисляется простым сложением. Так что Вам правильно ответили 0AFF16+000B16=B0A2C и есть место нахождения операнда.
Павел :: ex: UA9COD
-
04.04.2007, 09:07 #9
- Регистрация
- 27.03.2007
- Сообщений
- 7
- Поблагодарили
- 0
- Поблагодарил
- 0
Ну так... Спасибо! :-)
Пусть процессор будет 86, так как по полям найти операндор????
-
04.04.2007, 09:37 #10
- Регистрация
- 10.10.2003
- Адрес
- Калуга
- Возраст
- 50
- Сообщений
- 441
- Поблагодарили
- 12
- Поблагодарил
- 7
А, может, для начала, что такое поля Req и R/M и откуда такие обозначения?
Дальше интересней. Я вот сейчас точно не припомню, что такое "операнд". Но помню, что есть в языках программирования высокого уровня понятие "оператор". Например, в Бейсике, оператор "Let" осуществляет присваивание значения переменной и состоит из нескольких команд процессора. На ассемблере, в свою очередь, операторов, насколько я помню, нет, но есть мнемоники команд процессора. Ну и, конечно, непосредственно команда процессора в цифровом виде, которые разные для различных процессоров.
А вот "операнд" - вроде бы, это данные, которые обрабатывает "оператор". Или я ошибаюсь?
-
04.04.2007, 12:30 #11
- Регистрация
- 27.03.2007
- Сообщений
- 7
- Поблагодарили
- 0
- Поблагодарил
- 0
Если бы я знал, я бы не спрашивал :Р
Все претензии к преподам в дебильном технаре, которые эти методички разрабатывали!:russian_roulette:
Я весь нет обрыл ища "не знаю что", нигде и упоминания нет про такие поля, поэтому буду благодарен за любую отсебятину приблизительно по теме.
Вот сама задача (вопросы ниже мне не нужны, приведены для информации):
-
04.04.2007, 15:27 #12
- Регистрация
- 05.12.2005
- Адрес
- Волжский, Волгоградская обл.
- Возраст
- 69
- Сообщений
- 59
- Поблагодарили
- 1
- Поблагодарил
- 0
Ептыть.
Все мозги людям задрал, а оказывается вопрос о формате команды процессора i8086.
Такие вопросы только в бурсЕ изучают, чтобы прийдя на производство забыть о них как о страшном сне. Хотя может я ошибаюсь и в вашей бурсЕ учат писАть трансляторы, компиляторы и интерпретаторы. Тогда это круто
Качай и читай:
http://lib.mexmat.ru/books/13773
Првда они дают ссылку на
http://lib.knackery.net/autumn.php?c...hvFrmh7BEAA%3D
Хотел тебе выдержки переслать, но неудача.
Размер ПДФки - 15 мег, а отдают со скоростью 1,4 кБ/сек.
Это до завтра, а у меня рабочий день через два часа заканчивается, так что...
Давно это было и сложновато. Помню что это связано с адресацией операндов в памяти. Поля эти (Reg и r/m) содержат по три бита в байте кажись MODr/m. А сам этот байт находится в комаде сразу за байтом кода операции. Ну правда в этом байте есть еще одно поле размером в два бита. Ну и комбинции бит в полях этого байта задают:
режим адресации, масштабируемость и еще что-то.
Короче читать надо
Успехов.Павел :: ex: UA9COD
-
04.04.2007, 18:23 #13
- Регистрация
- 27.03.2007
- Сообщений
- 7
- Поблагодарили
- 0
- Поблагодарил
- 0
Огромное спасибо!!! Прочитаю и забуду как страшный сон!
-
04.04.2007, 19:24 #14
- Регистрация
- 06.09.2002
- Адрес
- Екатеринбург
- Возраст
- 61
- Сообщений
- 246
- Поблагодарили
- 7
- Поблагодарил
- 49
Сообщение от Larry158
поле req - ссылка на регистр процессора, а поле R/M - (регистр/память) совместно с битами mod определяют способ адресации.
Питер Абель. Язык ассемблера для IBM PC и программирования. Перевод с английского Ю.В.Сальникова. Москва, "Высшая школа", 1992Последний раз редактировалось RZ9CV; 04.04.2007 в 19:37.
73. Андрей (RZ9CV)
-
04.04.2007, 22:30 #15
- Регистрация
- 23.03.2007
- Адрес
- Мелитополь
- Возраст
- 54
- Сообщений
- 152
- Поблагодарили
- 24
- Поблагодарил
- 15
Описание можно найти в книге =Юров В.И. Ассемблер, 2-е издание, 2004 год=, начиная со страницы 58. В двух словах объяснить трудно.
|
Социальные закладки