Разработка кодека блочного кода на микроконтроллере

курсовая работа

7. Код программы

;кодирование

cpu6811;

org$00ee;вектор прерывания

jmp$d100;скачок на подпрограмму прерывания

org$c800;основная программа

ldx#$d000;ячейка для использования индексной ;адресации x в дальнейшем

ldd#$F774;запись правой части матрицы

std0,x;

ldd#$7BBA;

std2,x;

ldd#$CAF8 ;

std4,x;

ldd#$657C;

std6,x;

ldd#$32BE;

std8,x;

ldd#$EE6A ;

std10,x;

ldd#$8000;

std12,x;

ldd#$4000;

std14,x;

ldd#$2000;

std16,x;

ldd#$1000;

std18,x;

ldd#$0800;

std20,x;

ldd#$0400;

std22,x;

ldd #$0200

std24,x;

ldd #$0100

std26,x;

ldd #$0080

std28,x;

ldd #$0040

std30,x;

ldd #$0020

std32,x;

ldd #$0010

std34,x;

ldd #$0008

std36,x;

ldd #$0004

std38,x;

ldd #$0002

std40,x

clr #$d00f

staa$d011;счетчик

сli;разрешение прерываний

bra*;замкнутый цикл

org$d100;подпрограмма прерывания

clr #$d010;создание и очистка кармана

ldaa#6

ldab$1F03;загрузка информационного блока из ;порта в аккумулятор b

m2rolb;циклический сдвиг

bccm1;проверка 1 или 0 во флаге переноса

ldaa$d00f ;загрузка из кармана в аккумулятор

eora0,x;сумматор по модулю 2

staa $d00f

ldaa $d010

eora 1,x

staa$d010;возвращение в карман

m1inx;

dec$d011;уменьшение содержимого ячейки на 1

bnem2;если после 16 повторений цикла не 0, то ;возвращение на m2

inx

inx

ldaa$d010;загрузка содержимого кармана

staa$1F04;вывод проверочного блока

;декодирование

ldaa$1F03;загрузка информационного блока из ;порта в аккумулятор a

staa$d200;копирование информационного блока в ;ячейку

ldaa$1F04;загрузка проверочного блока из порта в ;аккумулятор a

staa$d202;копирование проверочного блока в ;ячейку

ldaa#6;

staa$d203;

ldaa#5;

staa$d204;

clr$d205;

ldx#$d000;ячейка для использования индексной ;адресации x в дальнейшем

m4lsl$d200;логический сдвиг влево содержимого ;данной ячейки

bccm3;проверка обнуления счетчика если да то ;переход по метке

ldaa$d205;загрузка в аккумулятор содержимого ;ячейки

eora0,x;сумматор по модулю 2

staa$d205;загрузка из аккумулятора в ячейку

m3inx;

dec$d203;

bnem4;безусловный переход

m6lsl$d202;логический сдвиг влево содержимого ;данной ячейки

bccm5;проверка обнуления счетчика если да то ;переход по метке

ldaa$d205;загрузка в аккумулятор значения ячейки

eora0,x;сумматор по модулю 2

staa$d205;загрузка из аккумулятора в ячейку

m5inx;

dec$d204;

bnem6;безусловный переход

ldy#$d100;ячейка для использования индексной ;адресации y в дальнейшем

ldab#$d205;запись из памяти в аккумулятор ячейки

aby;суммирование в индексном регистре до ;ячейки d205

ldaa0,y;

eora$1F03;сумматор по модулю 2

staa$1F05;декодированная последовательность

Делись добром ;)