Значит стоит такая задача.
1. Организовать сложение двух чисел и индикацию младшей тетрады результата на семисегментном индикаторе HG2. На блоке управления располагаются кнопки и тумблеры. Кнопки SB2 и SB4 представляют собой младшие разряды первого слагаемого, т.е. возможен набор чисел от 0 до 3. Тумблеры SA4, SA5 представляют собой соответственно 3-й и 4-й разряды 2-го слагаемого, т.е. возможен набор десятичных чисел 0,4,8,12. На индикаторе высвечивать результат в шестнадцатеричном формате, т.е. 0...F.
SB2: PINA,1 PORTC-на индикатор.
SB4: PINA,3 PORTb,3 – транзюк на индикатор
SA4:PIND,2
SA5:PIND,3
Вот Source: Скелет программы скопирован с примера, всю математику и вывод на индикатор я понял (сидел в тетрадке изображал из себя МК

не понял некоторые куски кода только
.include "8535def.inc"
;---------------
.dseg
.equ cod0=$64 ; Выделяю ячейки под коды семисегментов,
.equ cod1=$65 ; а почему именно с этого адреса? И до какого
.equ cod2=$66 ; можно?
………………
.equ codE=$72
.equ codF=$73 :
;---------------
.cseg ; А вот это я не понял в упор как оно работает
.org 0 ; Думаю что-то связанно с сбросом мк
rjmp reset ;?
.org $30 ;?
;---------------
reset:
ldi r16,$00 ;?
out sph,r16 ;?
ldi r16,$ff ;?
out spl,r16 ;?
;---------------
ldi zl,$64 ;?
ldi zh,$00 ;?
;Nastroika portov!
ldi r16,$00 ; А вот интересно неиспользуемые выводы индикатора как лучше определить как входы или выходы что то все по разному говорят?
out ddra,r16
ldi r16,$c
out ddrb,r16
ldi r16,$ff
out ddrc,r16
ldi r16,$00
out ddrd,r16
;-----------------]
Sbi portb,3 ;napruga na anod
;-----------------]
;Seven segmet Code
ldi r16,$3f ; Загоняю коды в память
sts cod0,r16
ldi r16,$06
sts cod1,r16
………………
ldi r16,$71
sts codF,r16
;---------------
m1: Организую вечный цикл
in r17,pina ;считываю состояние кнопок
in r18,pind ;считываю состояние тумблеров
add r20,r17 ; Собсно складываю эти два числа
add r20,r18
;------------------
push zl ; Во а это крутая крутотень, когда я понял
add zl,r20 ;как оно работает чуть со стула не упал
ld r20,z ; блин круто получилось
pop zl
out portc,r20 ;Выводим результат на индикатор
ldi r20,$00 ;Очищаем регистр где был результат
Rjmp m1 ;Вечный цикл
Прога работает, тока считает неправильно.
«Кнопки SB2 и SB4 представляют собой младшие разряды первого слагаемого» А у меня по схеме они управляют Первым и Третьим битом то есть получаются цифры 0,2,8,10 Блин часа 2 не мог понять в чем фишка
Есть 0000Х0Х0 =>
Надо 000000XX
Как биты сдвинуть? я что то ваще не понял
Приму любую помощь Заранее благодарен всем кто откликнется
PS У мня еще много вопросов

по мере изучения буду спрашивать здесь надеюсь есть добрые люди помогут !