Уже выполняется в режиме супервизора; как запустить пользовательский режим? (несколько сценариев)

Я сделал дополнительную домашнюю работу из своего учебника, чтобы подготовиться к экзамену 68000 Assembly, который состоится в ближайшие несколько недель. В настоящее время есть 4 вопроса, которые спрашивают, как можно запустить пользовательский режим, когда он уже выполняется в режиме супервизора. Я знаю, что инструкции EOR, ANDI и MOVE позволят мне сделать это, но мне было интересно, допустимы ли следующие примеры для запуска пользовательский режим:

EOR D0,SR        ;SR is status register (is this the right way to address the SR?)

ANDI #1,SR       ;Starting user via ANDI

MOVEI, #1,SR     ;Starting user via MOVEI

Действительны ли приведенные выше три инструкции для запуска пользовательского режима, когда он уже находится в режиме супервизора?

Мой последний вопрос касается режима трассировки. Я полностью потерян с этим, и мне нужно небольшое руководство. Вот вопрос:

Проиллюстрируйте, как программа пользователя по адресу $4000 может быть запущена в режиме трассировки с уровнем маски прерывания 5.

Если бы я мог получить какие-либо советы, я был бы очень признателен. Спасибо!


person Plaidypus    schedule 27.11.2014    source источник


Ответы (1)


О, старые добрые времена программирования 68000. Я помню, как набрал move.w #$2700,sr, как будто это было вчера.

Ты на правильном пути. EORI, ANDI и MOVEI могут изменять регистр состояния. Однако ваша попытка использовать непосредственное значение #1 ошибочна.

Один из них должен работать:

eori #$2000,sr
andi #$dfff,sr
move #$2000,sr  ;Depends on what interrupt level you want.

Что касается второй части вашего вопроса, подсказка:

move #$8500,sr
person Lars Brinkhoff    schedule 28.11.2014
comment
Идеально! Я поиграюсь с маской прерывания и посмотрю, смогу ли я ее понять. Спасибо за помощь! - person Plaidypus; 29.11.2014