![]() |
|
![]() ![]() ![]() |
|
Vovan_Danielyan |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 4.8.2007 Где: Усть-Лабинск Репутация: нет Всего: 1 |
Решал задачу одну и хочу спросить у знающих людей, правильно ли я все сделал.
Итак одноадресная эвм, с адресацией относительно счетчика команд (содержание счетчика FFF69A). Команда имеет вид: старшие 8 бит - код операции, младшие 12 - смещение. Дана команда 44FA6. Надо вычислить 24-битный исполнительный адрес. Как решал. Смещение, очевидно, младшие 3 знака команды, то есть: FA6. Чтоб получить исполнительный адрес вычислил FFF69A + FA6 = 1000640, то есть, старший бит не влезает в 24. Я его отбросил и получил ответ: 000640. Главный вопрос: правильно ли отбрасывать старший бит, если он не влазит, и, вообще, я нигде не ошибся? Заранее благодарю за помощь, очень нужно правильно решить. Это сообщение отредактировал(а) Vovan_Danielyan - 18.3.2010, 21:23 |
|||
|
||||
Mikl_ |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 9.11.2007 Репутация: 8 Всего: 14 |
Vovan_Danielyan,
мы не знаем что из себя представляет команда 44FA6 то ли сложение, то ли пересылка, то ли логическая команда -- знаем только что старшие 8 бит - код операции, младшие 12 - смещение и всё -- если это не команда перехода, то адрес следующей команды, который окажется в счетчике команд FFF69A+3=FFF69D - 3 байта это длина команды 44FA6 округленная до байтов, но если твоя 44FA6 это команда непосредственного перехода (переход может быть условным, косвенным, безусловным с возвратом и т.д. зависит от извращенности разработчика процессора) и 44 это опкод команды goto а FA6 это смещение -- тогда ход твоего рассуждения правильный FFF69A+FA6=(1)000640 если у твоего процессора не запланирована обработка ситуации "выхода за разрядную сетку адресов" Это сообщение отредактировал(а) Mikl_ - 19.3.2010, 13:44 |
|||
|
||||
Vovan_Danielyan |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 4.8.2007 Где: Усть-Лабинск Репутация: нет Всего: 1 |
понятно-понятно, спасибо.
Собственно, не важно, что окажется в счетчике: я так подумал, что вычислить нужно исполнительный адрес операнда. Я, просто, сжато написал условие, там написано"для адресации операнда в основной памяти используется адресация относительно счетчика команд". Про адресацию команды ничего не сказано, поэтому я про нее и не вспомнил. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Asm для начинающих" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Asm для начинающих | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |