Команда противоположная 001514: JSR PC,@001524(R4)
типа возврата из подпрограммы, но лучше спросите на БК-шном форуме http://bk0010.org/forum/
Команда противоположная 001514: JSR PC,@001524(R4)
типа возврата из подпрограммы, но лучше спросите на БК-шном форуме http://bk0010.org/forum/
Последний раз редактировалось Ал-р; 24.12.2013 в 20:22.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Ещё одно уточнение:
Например команда TSTB R0, или другие команды с буковкой B.
Они ведь производят действие только над младшим байтом?
Нет ничего более вечного чем то, что обмотано синей изолентой
Я как человек, порядка 29 лет работающий плотно с 1801ВМ1 скажу - по инструкции - так точно, а в реале - бабка надвое сказала - не менее 1% процессоров - невменяемые по этому параметру ( ИМХО - и побольше даже ).
Если аргумент регистр, то ДА ( кроме того MOVB в регистр - размножает старший бит младшего байта на старший байт ). Если аргумент - адрес памяти, то работает с тем байтом, который находится по указанному адресу ( например TSTB @#0 тестирует байт по адресу 000000, а TSTB @#1 - по адресу 000001 ).
Спасибо за разъяснения! Очень помогло.
Ещё вопрос:
Команда RESET ведь не сбрасывает сам процессор? Только дёргает какие-то внешние линии на манер инициализации? Т.е. сбрасывает внешние устройства, и продолжает выполнение команды по слеующему адресу?
Если так, то какие линии дёргаются и в каком порядке?
Нет ничего более вечного чем то, что обмотано синей изолентой
Команда 000005 - она подает сигнал INIT на МПИ, причем оччень долго.
Для более серьезных процессоров - сбрасывает все внутренние регистры, но там есть хитрые варианты - впрочем, к ВМ1 это не относится.
Всё понял. Спасибо.
Хорошо, что внутренние регистры не сбрасываются
Нет ничего более вечного чем то, что обмотано синей изолентой
Уже спрашивал на второй странице, но требуются пояснения.
Есть команда BPT. Она вызывает программное прерывание по вектору 14.
Но в таблице векторов (она находится в ПЗУ, так же, как и вся программа) такая картина:
000 000: 000 577, т.е. BR 000 400 - переход к выполнению основной программы
000 002: 000 000
000 004: 037 036
000 006: 000 200
000 010: 036 754
000 012: 000 200
000 014: 000 000
000 016: 000 000
Что в этом случае произойдёт?
В PSW запишется 000 000 и программа будет выполняться с адреса 000 000, пока не встретит команду RTT?
А вернётся ли из этого прерывания по команде RTI?
Или возникнет что-то типа HALT (т.е. IRQ1)?
Или случится прерывание по вектору 10?
И вообще, прерывание BPT - маскируемое? Т.е. к примеру, оно игнорируется, если PSW = 000 200?
Последний раз редактировалось darkstar; 20.01.2014 в 07:34.
Нет ничего более вечного чем то, что обмотано синей изолентой
По команде BPT в стек будут записаны PSW и PC, в PSW будет помещено содержимое ячейки 016, а в PC будет помещено содержимое ячейки 014.
Никаких "обязательств" по последующему выполнению команд RTI / RTT команда BPT не накладывает - только совершает действия, описанные выше.
---------- Post added 21.01.2014 at 00:08 ---------- Previous post was 20.01.2014 at 23:59 ----------
Также и команду RTI можно использовать когда угодно, а не только для завершения обработки прерывания. Например, чтобы записать в PSW биты, которые невозможно изменить командой MTPS - можно сделать так:
Код:MOV #NewPSW, -(SP) MOV #Next, -(SP) RTI Next:
Последний раз редактировалось Patron; 21.01.2014 в 01:03.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)