Какая инструкция ветвления является правильной для ветвления, если меньше

Вчера я написал ответ на это: Какой самый крутой хак вы видели или готово? и я очень старался вспомнить свою сборку 6502, и я не мог на всю жизнь вспомнить, как разветвляться, если меньше...

  :1
  lda $C010
  cmp #$80
  bcc :1  ; branch if less than? I forget how to do that.
  lda $C000
  jsr $FDF0   ;output the accumulator value to the screen

Кто знает, что за инструкция? BNE и BEQ равны, BCC предназначался для переноса, а CMP — это, по сути, SBC, и это влияет на перенос, но я не уверен, что он работает в этом случае.


person stu    schedule 04.02.2009    source источник


Ответы (2)


BCC является ветвью, если меньше; BCS является ветвью, если больше или равно. Есть хорошее руководство здесь.

Однако код stu можно написать более лаконично без CMP:

BIT $C010     ;clear the keyboard strobe
:1
LDA $C000     ;check for a keypress
BPL :1        ;taken if no keypress
JSR $FDFO     ;print the key
person Nick Westgate    schedule 22.09.2010
comment
В вашем описании пропущен случай. То есть BCC является ветвью, если строго меньше, и BCS является ветвью, если больше или равно. - person Mark Reed; 04.11.2012
comment
@NickWestgate, мой ответ удален. Возможно, вы захотите отредактировать ссылку. - person Mark Ransom; 30.11.2012

Первое обращение Google: http://en.wikibooks.org/wiki/6502_Assembly#Branch

person Hans Passant    schedule 04.02.2009
comment
мошенник. :-) Я искал какое-нибудь живое обсуждение 6502 от старых школьников вроде меня с лучшей памятью. :-) - person stu; 23.09.2010
comment
Первое обращение в Google не дает прямого ответа на вопрос - person lukas.pukenis; 21.06.2016
comment
Это для тех, кто хочет знать больше. Посмотрите ↑↑↑↑↑↑↑, если не хотите думать. - person Hans Passant; 21.06.2016