Язык ассемблера — установка флагов CCR (68000)

У меня есть следующее дополнение, и меня просят написать, какими будут значения флагов CCR. Моя проблема в том, что я не знаю, как узнать, произошло ли переполнение или нет. Это потому, что я не знаю, рассматривать ли его как дополнение 2 или без знака. Может кто-нибудь, пожалуйста, скажите мне, как я узнаю об этом, когда сталкиваюсь с другими проблемами?

$FF + 1:

      1 1 1 1  1 1 1 1
    + 0 0 0 0  0 0 0 1
      -----------------
  (1) 0 0 0 0  0 0 0 0

person Community    schedule 26.10.2014    source источник
comment
было бы хорошо, если бы вы указали, о каком процессоре мы говорим, потому что почти каждая компьютерная архитектура имеет свой взгляд на регистр флагов. У MIPS его нет, у ARM есть CSPR, у x86 есть регистр EFLAGS. Единственная известная мне архитектура, в которой регистр флагов называется CCR, — это Freescale HCS12, также известная как 68HC12. Можете ли вы подтвердить, что это процессор, который вы используете? Если да, то есть тег [68hc12].   -  person Iwillnotexist Idonotexist    schedule 26.10.2014
comment
Извините, забыл упомянуть, это 68000.   -  person    schedule 26.10.2014


Ответы (3)


CCR регистрирует учетную запись как для неподписанных, так и для подписанных. Википедия прекрасно подводит итог.

  • N: учитывает число со знаком. Если старший бит равен 1, то число отрицательное, а N равно 1.
  • Z: все биты должны быть равны нулю, чтобы Z был равен 1.
  • V: число всегда считается подписанным. Если операция переполняется, содержит 1.
  • C: число всегда считается беззнаковым. Если операция переполняется, содержит 1.
person Zenexer    schedule 26.10.2014

Дополнение к зенексеровскому: В вашем примере 9-й бит идет на перенос (отсюда и название).

V (переполнение) устанавливается, если старший бит изменяется «неожиданно» с точки зрения знака: то есть, если два числа со старшим битом = 0 добавляются, а старший бит результата становится 1 (как если бы сумма двух положительных чисел дала бы отрицательный результат). Это (подписанное) переполнение.

person turboscrew    schedule 26.10.2014

Лучше всего и в первую очередь проверить руководство по процессору, оно находится в свободном доступе здесь: http://www.freescale.com/files/archives/doc/ref_manual/M68000PRM.pdf

В частности, просмотрите раздел 3-2 и таблицу 3-18 (Вычисления кода состояния целочисленного устройства), в которых перечислены логические уравнения, которые процессор применяет для обновления состояния CCR.

person Durandal    schedule 27.10.2014