MS24 писал(а):Да с СИ я достаточно хорошо знаком. Просто условие диплома написать на асемблере.
Так напишите на Си ,компильните asm - вот Вам и диплом.
MS24 писал(а):Да с СИ я достаточно хорошо знаком. Просто условие диплома написать на асемблере.
ILYAUL писал(а):Так напишите на Си ,компильните asm - вот Вам и диплом.
Alexeyslav писал(а):А как он потом будет объяснять плоский код без комментариев и структуры? Нет, пожалуй такую программу сдавать будет слишком палевно.
ILYAUL писал(а):Из Flash загружается SRAM
Код: Выделить всё
ldi ZH,high(data*2) ;загрузка адреса флеша в Z регистр
ldi ZL,low(data*2)
ldi XH,high(0x0100) ;загрузка адреса ОЗУ в X регистр
ldi YH,high(0x0100) ;и зачем-то в Y...
ldi XL,low(0x0100)
ldi temp,0x0c ;видимо количество байт (счетчик)
load: ;цикл копирования данных из флеша в ОЗУ
lpm ;загрузка из флеша (адрес в Z) в R0
st X+,R0 ;сохранение в ОЗУ (адрес в Х, пост инкремент)
adiw ZL,0x01 ;инкремент адреса в Z
dec temp ;уменьшаем счетчик байт
brne load ;цикл пока счетчик не обнулился
ldi XH,high(0x0100) ;восстанавливаем X
ldi XL,low(0x0100)
data:
.db 0x15,0x24,0x36,0x42,0x53,0x01,0x71,0x83,0x92,0xA6,0xB4,0x65 ;а это константа во флеше, которую и копируют в ОЗУ
ploop писал(а):А какая разница? Метка - такая же константа (число)
MS24 писал(а):Никак в асемблере не могу разобраться ) На си все гораздо проще )
А как узнать числовое значение данных меток?
Код: Выделить всё
1. .db (VendorStringDescriptorEnd-VendorStringDescriptor)*4-2,3
2. .db (VendorStringDescriptorEnd-VendorStringDescriptor)*4-2,3,4,5,6,7