2014-11-27 2 views
1

Я делал дополнительную домашнюю работу из своего учебника, чтобы подготовиться к экзамену на сборку 68000 в ближайшие несколько недель. В настоящее время существует 4 вопроса, которые задают вопрос о том, как можно запустить пользовательский режим, когда он уже выполняется в режиме супервизора. Я знаю, что инструкции ПНП, 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.

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

ответ

2

О, старые добрые времена программирования 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 
+0

Отлично! Я буду возиться с маской прерывания и посмотреть, могу ли я это понять. Спасибо за помощь! – Plaidypus