Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Asm для начинающих > Вычисление исполнительного адреса |
Автор: Vovan_Danielyan 18.3.2010, 21:22 |
Решал задачу одну и хочу спросить у знающих людей, правильно ли я все сделал. Итак одноадресная эвм, с адресацией относительно счетчика команд (содержание счетчика FFF69A). Команда имеет вид: старшие 8 бит - код операции, младшие 12 - смещение. Дана команда 44FA6. Надо вычислить 24-битный исполнительный адрес. Как решал. Смещение, очевидно, младшие 3 знака команды, то есть: FA6. Чтоб получить исполнительный адрес вычислил FFF69A + FA6 = 1000640, то есть, старший бит не влезает в 24. Я его отбросил и получил ответ: 000640. Главный вопрос: правильно ли отбрасывать старший бит, если он не влазит, и, вообще, я нигде не ошибся? Заранее благодарю за помощь, очень нужно правильно решить. |
Автор: Mikl_ 19.3.2010, 04:53 |
Vovan_Danielyan, мы не знаем что из себя представляет команда 44FA6 то ли сложение, то ли пересылка, то ли логическая команда -- знаем только что старшие 8 бит - код операции, младшие 12 - смещение и всё -- если это не команда перехода, то адрес следующей команды, который окажется в счетчике команд FFF69A+3=FFF69D - 3 байта это длина команды 44FA6 округленная до байтов, но если твоя 44FA6 это команда непосредственного перехода (переход может быть условным, косвенным, безусловным с возвратом и т.д. зависит от извращенности разработчика процессора) и 44 это опкод команды goto а FA6 это смещение -- тогда ход твоего рассуждения правильный FFF69A+FA6=(1)000640 если у твоего процессора не запланирована обработка ситуации "выхода за разрядную сетку адресов" |
Автор: Vovan_Danielyan 19.3.2010, 11:35 |
понятно-понятно, спасибо. Собственно, не важно, что окажется в счетчике: я так подумал, что вычислить нужно исполнительный адрес операнда. Я, просто, сжато написал условие, там написано"для адресации операнда в основной памяти используется адресация относительно счетчика команд". Про адресацию команды ничего не сказано, поэтому я про нее и не вспомнил. |