Старайся работать также как ты и работал в Си. То есть избегать конкретных цифр. Применять переменные и метки.
Начало будет выглядеть (в небольшом проекте) примерно так:
Код
.equ TOb = 500; Обновлять данные ч/з 0.5 секунды
.equ SegH = 7 ; Сегмент H выведен в D7
; Порт B
.equ adr0 = pb0; Тестовая линия 0.
.equ adr1 = pb1; Тестовая линия 1.
.equ adr2 = pb2; Тестовая линия 2.
.equ adr3 = pb3; Тестовая линия 3.
.equ RE = PD2; Разрешение приёма RS485 (0)
.equ Kl0 = PD3; Ответ от клавиатуры 0.
.equ Kl1 = PD4; Ответ от клавиатуры 1.
.....
.def zap = r1; положение запятой в числе
.def tmpr0 = r2; для сохранения r0 в прерываниях
.def tmpsreg = r3; для сохранения sreg в прерываниях
.def tmpZl = r4; для сохранения Zl в прерываниях
.def tmpZh = r5; для сохранения Zh в прерываниях
.def par = r6; номер параметра
.def Len = r7; длина сообщения
.def rCRCl = r8; CRC мл. на приём
.def rCRCh = r9; CRC ст. на приём
.....
.equ lbuf = 40
.dseg
.org $60
RxBuf:
.byte lBuf; Буфер приёма длиной lBuf
ERxBuf: ; Адрес конца буфера приёма
n: .byte 8; число
bin:
.byte 60; для предварительной обработки
RStek:
.byte 20
Stek:
.....
.cseg
rjmp init; Переход на инициализацию
rjmp int_0
rjmp int_1
rjmp Tim1Cap
rjmp Tim1CmpA
.....
Можно также указывать мнемонические адреса векторов прерываний. Широко используются макроопределения.