2014-10-29 3 views
0

Это мой код, который у меня есть: я хочу видеть, является ли значение в D1 нечетным. Если так, я хочу выполнить некоторую операцию. Может кто-то помочь мне с этим?68000 - Как проверить, является ли значение в регистре данных нечетным с помощью ANDI?

Было бы хорошо, если бы кто-нибудь мог показать мне пример того, как его использовать.

+1

И со значением 1. Если результат равен 1, то это нечетно. –

+0

Не могли бы вы показать мне, как будет инструкция ANDI? – user4188409

+0

http://68k.hax.com/AND –

ответ

1

Если вы побито AND вашего ввода и постоянное (немедленное) значение, где установлен только бит 0, результат будет равен 0 или 1, в зависимости от значения бит 1 на входе.

Итак:

check_odd: 
    andi.b #1,d0 
    beq.s .even ; If the result was zero, the Z flag is set, and beq jumps. 
.odd: 
    ; We end up here if the value was odd. 
    bra.s .done 
.even: 
    ; We end up here if the value was even. 
.done: 
0

andi.b #1,d1 бы мусор предыдущее значение d1; поэтому более короткая команда lsr.w #1,d1 возможно. Вы тогда bcs label, если число нечетное, bcc label в противном случае.
Другим вариантом является использование btst.l #0,d1, что не приведет к уничтожению содержимого d1. Тогда beq label если номер четный или bne label если нечетный.

0

Если вы только проверяете один бит (как в данном случае), то вы можете также использовать битовую инструкцию тест

btst #0, d0 
beq even 

будет переход к метке «даже», если бит 0 не установлен.

Не уверен, что это дает какие-либо вычислительные преимущества, но может помочь в удобочитаемости кода.

 Смежные вопросы

  • Нет связанных вопросов^_^