Какая правильная инструкция перехода для перехода, если меньше
Вопрос
Вчера я написал ответ на этот вопрос:Какой самый крутой хак вы видели или делали? и я очень старался запомнить свою сборку 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, и это влияет на перенос, но я не уверен, работает ли это в этом случае.
Решение
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
Другие советы
Первый хит в Google: http://en.wikibooks.org/wiki/6502_Assembly#Branch
Не связан с StackOverflow