p align="justify">; temp2 в ОЗУ за адресою, який зберігається
; в реєстрової парі X
inc temp1; Збільшуємо значення лічильника на одиницю
cpi temp1,64; Перевірка лічильника на рівність 64
brne nn; Якщо не одно 64, то переходимо на мітку nn,
; якщо одно 64, тобто якщо в ОЗУ записалися
; всі числа масиву, то переходимо на мітку start
; ---------------------- Непряме читання з пам'яті -------------------------
start:
ldi XH, high (buf); У реєстрову пару X записуємо адреса
ldi XL, low (buf); початку буфера ОЗУ
; -------------------------- Перша чверть синусоїди ----------------------------
nn1:
ld temp2, X +; Читання байта з комірки ОЗУ, адреса якої
; зберігається в реєстрової парі X і запис
; прочитаного байта в регістр temp2. Потім
; зміст регістровий пари X збільшується
; на одиницю
out PortB, temp2; Висновок поточного значення синусоїди в порт РВ
dec temp1; Зменшуємо значення лічильника на одиницю
cpi temp1,0; Порівнюємо з нулем
brne nn1; Якщо не дорівнює нулю, то переходимо на мітку nn1,
; якщо дорівнює нулю, тобто якщо з ОЗУ були
; прочитані і відправлені на порт B всі 64 числа, то
; переходимо на мітку nn2
; ---------------------- Друга чверть синусоїди ------------------------------
nn2:
ld temp2, -X; Читання байта з комірки ОЗУ, адреса якої
; зберігається в реєстрової парі X і запис
; прочитаного байта в регістр temp2. Потім
; зміст регістровий пари X зменшується
; на одиницю
out PortB, temp2; Висновок поточного значення синусоїди в порт РВ
inc temp1; Збільшуємо значення лічильника на одиницю
cpi temp1,64; Порівнюємо з 64
brne nn2; Якщо не одно 64, то переходимо на мітку nn2,
; якщо одно 64, тобто якщо з ОЗУ були
; прочитані і відправлені на порт B всі 64 числа,
; починаючи з останнього числа масиву, записаного в
; ОЗУ і закінчуючи першим, то
; переходимо на мітку nn3
;------------------------- Третя чверть синусоїди ------------------------------
nn3:
ld temp2, X +; Читання байта з комірки ОЗУ, адреса якої
; зберігається в реєстрової парі X і запис
; прочитаного байта в регістр temp2. Потім
; зміст регістровий пари X збільшується
; на одиницю
com temp2; Виконуємо побітного інверсію регістра temp2 для
; отримання негативної напівхвилі синусоїди
out PortB, temp2; Висновок поточного значення регістра temp2 в порт РВ
dec temp1; Зменшуємо значення лічильника на одиницю
cpi temp1,0; Порівнюємо з нулем
brne nn3; Якщо не дорівнює нулю, то переходимо на мітку nn3,
; якщо дорівнює нулю, тобто якщо з ОЗУ були
; прочитані і відправлені на порт B всі 64
; числа, починаючи з початкової адреси буфера ОЗУ, то
; переходимо на мітку nn4
; ---------------------- Четверта чверть синусоїди ---------------------------
nn4:
ld temp2, -X; Читання байта з комірки ОЗУ, адреса якої
; зберігається в реєстрової парі X і запис
; прочитаного байта в регістр temp2. Потім
; зміст регістровий пари X зменшується
; на одиницю
com temp2; Виконуємо побітного інверсію регістра temp2 для
; отримання негативної напівхвилі синусоїди
out PortB, temp2; Висновок поточного значення регістра temp2 в порт РВ
inc temp1; Збільшуємо значення лічильника на одиницю
cpi temp1,64; Порівнюємо з 64
brne nn4; Якщо не одно 64, то переходимо на мітку ...