Как с помощью полей Req и R/M определяется местонахождение операнда?
Адрес селектора 0AFF16, адрес смещения 000B16. Определите физический адрес.
ЗЫ: какойто ужас, нигде литературу не могу найти!:umnik2:
Вид для печати
Как с помощью полей Req и R/M определяется местонахождение операнда?
Адрес селектора 0AFF16, адрес смещения 000B16. Определите физический адрес.
ЗЫ: какойто ужас, нигде литературу не могу найти!:umnik2:
Может быть, адрес сегмента 0AFF16? У меня тут есть книга Журдена в электронном виде для IBM PC , Intel 8088, Intel 80286, но тоже насчет адресов не очень понятно объяснено. Но как я помню, эта сегментация существует для того, чтобы процессор мог обрабатывать номера ячеек памяти с разрядностью, которая больше, чем разрядность шины данных самого процессора. Поэтому разбиение на сегменты зависит от разрядности шины данных процессора. И получается, что сегмент не может быть больше, чем разрядность шины данных процессора. То есть для процессоров с 16-битными, 20-битными, 32-битными шинами данных, возможно, различные картины ( здесь я не проверял).
Причем физически на 16-битных процессорах выводы шины данных ( 16 ножек соответственно ) также являются выводами шины адреса в различные моменты времени. Их состояние зависит от состояния шины управления.
В конкретно Вашем примере у меня получилось 0AFF16+000B16=B0A2C
Там сам черт ногу сломит! Может и так...Цитата:
Может быть, адрес сегмента 0AFF16?
По той литературе которая у меня есть тож так получается, просто сложить два шестнадцатиричных числа... Значит правильно!:prankster2:Цитата:
В конкретно Вашем примере у меня получилось 0AFF16+000B16=B0A2C
А по местонахождению операнда никто не в курсе? Это самый болезненный вопрос... :swoon:
Есть еще один момент: ячейка с нулевым адресом вполне может существовать, так как однозначно определяется низкими или высокими уровнями на всей шине адреса. И в этой ячейке может находиться какая-то информация. Это может быть команда или какие-то данные.
А вот конкретно операнд, наверно, может, может состоять из нескольких команд. Хотя это уже похоже на процедуру. Я тут уже тоже путаюсь.
HELP! Нуна очень срочно ответить на этот тупой вопрос, пусть и не совсем правильно...
Вы бы хоть тип процессора назвали...
Любой тип процессора. И буду благодарен за любую помощь!
:Любой тип процессора.
Это хороший ответ, но неправильный.
Типов процессоров куча пойми про какой речь :russian_roulette:
Но суда по тому, что в вопрсе прозвучали слова селектор и смещение, можно предположить что речь идет об Интеловских процессорах i86 й серии.
В этих процессорах слова селектор и сегмент это "две большие разницы" :umnik2:
Слво сегмент применяется при работе процессора в реалльном режиме (real mode) и не может быть больше значения 0xFFFF (потому как такой размер регистра - 16 бит). В этом случае надо вычислять так:
0x4321 - селектор
+0x3210 - смещение
т.е. значение селектора должно быть сдвинуто влево на 4 бита относительно смещения.
В вопросе же прозвучало слово селектор, это наводит на мысль, что речь идет о защищенном режиме (protected mode) процессора. Кроме того значение селектора так-же не может превышать 0xFFFF, так что речь видимо идет о физическом адресе селектора. Опять же в обычном защищеном режиме размер каждого селектора не может превышать магических 64кБайт (0xFFFF). В то время как в линейном режиме адресов с разбиением памяти в селекторе на страницы размером 4кБайт, размер селектора может быть практически любым.
Но в любом случае если известен физический адрес селектора и смещения, то физический адрес в памяти вычисляется простым сложением. Так что Вам правильно ответили 0AFF16+000B16=B0A2C и есть место нахождения операнда.
:beach:
Ну так... Спасибо! :-)
Пусть процессор будет 86, так как по полям найти операндор????
А, может, для начала, что такое поля Req и R/M и откуда такие обозначения?
Дальше интересней. Я вот сейчас точно не припомню, что такое "операнд". Но помню, что есть в языках программирования высокого уровня понятие "оператор". Например, в Бейсике, оператор "Let" осуществляет присваивание значения переменной и состоит из нескольких команд процессора. На ассемблере, в свою очередь, операторов, насколько я помню, нет, но есть мнемоники команд процессора. Ну и, конечно, непосредственно команда процессора в цифровом виде, которые разные для различных процессоров.
А вот "операнд" - вроде бы, это данные, которые обрабатывает "оператор". Или я ошибаюсь?
Если бы я знал, я бы не спрашивал :Р
Все претензии к преподам в дебильном технаре, которые эти методички разрабатывали!:russian_roulette:
Я весь нет обрыл ища "не знаю что", нигде и упоминания нет про такие поля, поэтому буду благодарен за любую отсебятину приблизительно по теме.
Вот сама задача (вопросы ниже мне не нужны, приведены для информации):
Ептыть.
Все мозги людям задрал, а оказывается вопрос о формате команды процессора i8086.
Такие вопросы только в бурсЕ изучают, чтобы прийдя на производство забыть о них как о страшном сне. Хотя может я ошибаюсь и в вашей бурсЕ учат писАть трансляторы, компиляторы и интерпретаторы. Тогда это круто :swoon:
Качай и читай:
http://lib.mexmat.ru/books/13773
Првда они дают ссылку на
http://lib.knackery.net/autumn.php?c...hvFrmh7BEAA%3D
Хотел тебе выдержки переслать, но неудача.
Размер ПДФки - 15 мег, а отдают со скоростью 1,4 кБ/сек.
Это до завтра, а у меня рабочий день через два часа заканчивается, так что... :no2:
Давно это было и сложновато. Помню что это связано с адресацией операндов в памяти. Поля эти (Reg и r/m) содержат по три бита в байте кажись MODr/m. А сам этот байт находится в комаде сразу за байтом кода операции. Ну правда в этом байте есть еще одно поле размером в два бита. Ну и комбинции бит в полях этого байта задают:
режим адресации, масштабируемость и еще что-то.
Короче читать надо :umnik2:
Успехов.
Огромное спасибо!!! Прочитаю и забуду как страшный сон!
Понятие "операнд" существует при программировании на ассемблере.Цитата:
Сообщение от Larry158
поле req - ссылка на регистр процессора, а поле R/M - (регистр/память) совместно с битами mod определяют способ адресации.
Питер Абель. Язык ассемблера для IBM PC и программирования. Перевод с английского Ю.В.Сальникова. Москва, "Высшая школа", 1992
Описание можно найти в книге =Юров В.И. Ассемблер, 2-е издание, 2004 год=, начиная со страницы 58. В двух словах объяснить трудно.