Что делает инструкция MSP430 cmp.b? - PullRequest
0 голосов
/ 28 апреля 2019

Работа над проблемой микрокоррупции.Исходя из небольшого опыта работы с MIPS, я все еще разбираюсь в некоторых вещах msp430.

В сводке набора инструкций нет особенно описательной записи для инструкции cmp.b, но я вижу, что онаиспользуется здесь в сочетании с инструкцией jne.Описание jne: Перейти к метке, если нулевой бит сброшен.

455a:  f290 8500 1024 cmp.b #0x85, &0x2410
4560:  0720           jne   #0x4570 <login+0x50>

Таким образом, cmp.b сравнивает байт (как указано суффиксом .b) непосредственного 0x85 с любым значением байтахранится в адресе 0x2410, но тогда я могу только представить, что это устанавливает бит в некотором регистре, зарезервированном для инструкции jne (вышеупомянутый нулевой бит), чтобы проверить, чтобы знать, должен ли он выполнить переход?Если это так, то в каком регистре это будет?

1 Ответ

3 голосов
/ 29 апреля 2019

В Руководстве пользователя написано:

Описание
Операнд-источник вычитается из операнда-адресата.Это достигается путем добавления дополнения 1s операнда источника плюс 1. На два операнда это не влияет, и результат не сохраняется;затрагиваются только биты состояния.

Биты состояния
N: установить, если результат отрицательный, сбросить, если положительный (src ≥ dst)
Z: установить, если результат равен нулю, сбросить в противном случае (src = dst)
C: установить, если есть перенос из MSB результата, сбросить в противном случае
V: установить, если произойдет арифметическое переполнение, в противном случае сбросить

Биты состояния хранятся в регистре состояния, который называется SR или R2 (если вам нужен доступ к нему (здесь это не так)).

И JNE означает "прыгать, если не равно ", так что все эти детали не имеют значения для понимания этого.

...