Команда противоположная 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)