Неси бит в мсп430

Пишу симулятор на микроконтроллер msp430. Я не могу понять, когда я должен установить бит для переноски. Например в add инструкция:1+0x7FFF установка бита переноса или 1+0xFFFF?

2 ответа

Решение

Для ADD инструкция, бит переноса установлен на переполнение без знака.

Вы можете сделать это из примеров в документах TI. В частности, второй пример в документации ADD Инструкция ( стр. 3-22) гласит, что перенос происходит на ADD.B если результат больше чем 0xff (и для ADD а также ADDA пределы 0xffff а также 0xfffff соответственно - 8, 16 и 20 бит):

ADD.B           #10,R5     ; Add 10 to Lowbyte of R5
JC TONI                    ; Carry occurred, if (R5)  ≥  246 [0Ah+0F6h]
......                     ; No carry

Тот факт, что в регистре состояния msp430 есть бит ОТРИЦАТЕЛЬНЫЙ в дополнение к биту переноса, подтверждает это.

Существует как минимум пара существующих эмуляторов MSP430 с открытым исходным кодом, а именно mspsim и Аврора. Я предлагаю использовать их в качестве эталонных реализаций.

Там две разные инструкции, которые реализуют <, JL (прыгать, если меньше) и JLO (прыгать, если ниже).

Документация JL говорит, что это

позволяет сравнивать целые числа со знаком.

В документации JLO сказано, что это

используется для сравнения чисел без знака.

JLO такой же, как JNC, поэтому C - беззнаковый перенос.

Другие вопросы по тегам